Enviar e-mails desde SAP

23 01 2008

Con la función SO_DOCUMENT_SEND_API1 se pueden enviar mails desde nuestros programas.
Hay que tener en cuenta que una vez que se ejecuta la función, el email debe ser liberado con la transacción SCOT (guía de configuración).


Technorati tags:


Acciones

Information

143 responses

5 03 2008
Omar Peraino

Hola Daniel, qué tal. Te felicito por la página, está muy buena en cuanto a contenido. Muy claros los ejemplos.
Me alegro que hayas aprendido tanto en tan poco tiempo.
Espero que estés bien.

Un abrazo,
Omar Peraino

29 03 2008
Daniel Panaro

Que tal Omar, muchas gracias por tu comentario. Siempre te voy a estar muy agradecido ya que gracias a vos empecé en este mundo de SAP/ABAP.
Me ayudaste y enseñaste mucho en los comienzos.
Gracias… saludos!!!

28 06 2013
Anónimo

Hola Daniel;
Tengo problemas del envio de ofertas por email que no le llegan al cliente

28 06 2013
Daniel Panaro

Hola,
Verificaste si los mails llegan a la transacción SCOT?.
Chequeaste que los mails se liberen de dicha transacción?.
Hiciste una prueba/debug con una cuenta de mail tuya?

Saludos,
Daniel.

19 12 2013
Luis Enrique rodríguez Paz

Yo tuve un detalle igual, toda la configuración estaba bien, el problema fue que el Job que enviaba los correos se atoró y estaba en estatus running en la sm37, los finalicé y empezaron afluir

26 12 2013
Daniel Panaro

Muchas gracias Luis Enrique por tu colaboración.

Otra posibilidad es que todos los mails se queden en la bandeja de salida de la transacción SCOT.
Y que la misma no esté liberando los mails. Verificar la configuración.

Además recomiendo verificar el programa que envía mails. Y chequear que la función este completando bien el mail y todo el resto de los datos.

Saludos,
Daniel.

6 05 2008
Miguel_11@mixmail.com

Hola komo estan tengo un problema un poco complicado tengo un programa el cual manda un email junto con un archivo exel adjunto pero no puedo hacer que tome los campos de la variante de visualizacio (layout) que tambien la tengo como parametro de seleccion….komo podria hacerle les agradeceria mucho si me ayudaran…………

2 11 2009
Carolina John

Hola Daniel.
Te escribo a ver si me puedes ayudar con un problema. Estoy tratando de enviar una factura en formato pdf via email. el correo a los clientes sale perfecto, pero al tratar de abrir la factura en formato pdf, el archivo me genera el siguiente error: There was an error opening this document. The file is damaged and could not be repained.
Pls, que puedo revisar para solventar este problema.
Muchas gracias

3 11 2009
Daniel Panaro

Que tal Carolina,
Posiblemente el error lo tengas al convertir el formulario a PDF.
Probaría haciendo la conversión a PDF pero en vez de enviarlo por mail haría un download (GUI_DOWNLOAD) a la máquina. Con esto estarías chequeando si el PDF se genera correctamente o si el error está al adjuntarlo en el mail.

Si al bajar el documento a tu computadora el error al abrir el archivo continúa, entonces te asegurás que el error es en la conversión.
Te dejo 2 links referidos a convertir formularios a PDF:
1)

Pasar orden de spool a PDF


2)

RSTXPDFT4 – Pasar orden de spool (formulario) a PDF

Espero que te sirva, saludos.
Daniel.

10 05 2008
Daniel Panaro

Que tal Miguel, si te parece bien me podes escribir un mail detallando tu problema. Ya que no se qué son los parámetros de selección que queres pasarle a la función, ni como los declarastes, etc.

13 06 2008
Matias

Hola Daniel, estuve revisando en buscadores para ver como enviar un mail desde un reporte de SAP y me encontre con tu pagina. No la he podido revisar completamente, pero quiza tu me puedes ayudar.
Yo tengo un reporte en el cual, tengo un listado de personas que controla si los datos desde diferentes tablas y archivos que levanto, y los compara. Entonces si estan bien los datos, no hace nada. Pero lo que busco es que envie un mail a la casilla de la empresa de cada una de esas personas, para avisarle que tiene mal cargados los datos, me explico?
Y no se como encararlo.
Agradeceria que me des una mano con este tema.

Saludos!

21 06 2008
Daniel Panaro

Que tal Matías, te propongo que me envíes un e-mail así puedo ayudarte mejor.
Pero básicamente la idea es generar un reporte que primero levante los datos de tu archivo y luego compararlos con los datos cargados en SAP para saber si estan bien o mal cargados.
Y luego adaptar la info de los que esten mal cargados para pasarle las tablas y variables necesarias a la función de enviar mail.
Saludos!

Daniel.

7 07 2008
Alejandra Connell

Hola Daniel, estoy desarrollando un batch input de la transacción PC00_M17_CEDT. Si ejecuto esta transacción y envío el recibo por correo (Lista –> Grabar/Enviar –> Office) me abre una nueva pantalla (SAPLSO04) y en ella me permite introducir el titulo, dirección y tipo de destinatario.. y todo ok..
Pero si quiero hacer el batch input de esa grabación solo me llega a (Lista –> Grabar/Enviar –> Office), no me abre la seguiente pantalla (pierdo el siguiente dynpro) y me dice que el correo ha sido enviado a mi carpeta de salida , lo cual es correcto pero no lleva los datos del destinatario.
Te anexo el código para ver si me puedes ayudar..
Gracias de antemano por la ayudita

loop at it_salida.
clear ws_pernr.
ws_pernr = it_salida-pernr.
* Inicializar registros del batch input
refresh bdcdata.
* Cambio de pantalla de selección.
perform bdc_dynpro using ‘HVECEDT0’ ‘1000’.
perform bdc_field using ‘BDC_OKCODE’
‘=$PER’.
* Ejecuta el programa que emite el recibo
perform bdc_dynpro using ‘HVECEDT0’ ‘1000’.
perform bdc_field using ‘BDC_OKCODE’
‘=ONLI’.
perform bdc_field using ‘PNPXABKR’
pnpxabkr.
perform bdc_field using ‘PNPABKRS-LOW’
pnpxabkr.
perform bdc_field using ‘PNPTIMRA’ «otro periodo
‘X’.
perform bdc_field using ‘PNPPABRP’ «periodo
ws_periodo.
perform bdc_field using ‘PNPPABRJ’ «año
ws_year.
perform bdc_field using ‘PNPPERNR-LOW’ «numero de personal
ws_pernr.
perform bdc_field using ‘PAYTY’ »
payty.
perform bdc_field using ‘PAYID’ »
payid.
perform bdc_field using ‘BONDT’ »
ws_bondt.
perform bdc_field_check using ‘FORMULAR’ «Formulario
‘ZSNA’.
perform bdc_field_check using ‘ANDRUCK’ »
‘A’.
perform bdc_field_check using ‘RUECKD’ »
‘L’.
perform bdc_field_check using ‘RUECKR’ »
‘A’.
perform bdc_field_check using ‘SORT_RR’ »
‘3’.
perform bdc_field_check using ‘SPRACHE’ »
‘B’.
perform bdc_field_check using ‘PRT_PROT’ »
‘X’.
perform bdc_field_check using ‘CUR_FP’ »
‘X’.

* SEGUNDA PANTALLA ‘SAPMSSY0’ ‘0120’.
* Se indica que se quiere enviar por office:
* Lista—->Grabar/Enviar—->Office
perform bdc_dynpro using ‘SAPMSSY0’ ‘0120’.
perform bdc_field using ‘BDC_OKCODE’
‘=%SL’.
++++++++++++ de aqui en adelante se pierde y no lo ejecuta+++++
* TERCERA PANTALLA Crear y enviar Documentos.
perform bdc_dynpro using ‘SAPLSO04’ ‘1000’.
perform bdc_field using ‘BDC_OKCODE’
‘=SEND’.
perform bdc_field using ‘SOS04-L_ADR_NAME(01)’ » Destinatario
* it_salida-correo.
perform bdc_field using ‘SOS04-L_ESC_DES(01)’ «tipo destinatario
‘U’.

* cuarta PANTALLA.Regresar
perform bdc_dynpro using ‘SAPMSSY0’ ‘0120’.
perform bdc_field using ‘BDC_OKCODE’
‘=BACK’.

* QUINTA PANTALLA. Regresar
perform bdc_dynpro using ‘HVECEDT0 ‘ ‘1000’.
perform bdc_field using ‘BDC_OKCODE’
‘/EE’.

* Ejecutar la transacción
call transaction ‘PC00_M17_CEDT’ using bdcdata
mode c_ctumode
update c_cupdate
messages into messtab.
endloop.

13 07 2008
Daniel Panaro

Que tal Alejandra, si bien no conozco la transacción que mencionas. Por lo que noto del código es que entre la segunda y tercer pantalla estas cambiando de programa:

* SEGUNDA PANTALLA ‘SAPMSSY0′ ‘0120′.
perform bdc_dynpro using ‘SAPMSSY0′ ‘0120′.

* TERCERA PANTALLA Crear y enviar Documentos.
perform bdc_dynpro using ‘SAPLSO04′ ‘1000′.

Por lo tanto el batch input se para en la segunda pantalla.
La soluciones son: o bien una función que haga los envios en forma masiva,
O una BAPI, u otra transacción que haga lo mismo.

Cualquier otra duda, podes escribirme por mail.
Saludos!!!

1 12 2008
judi

Hola, voy iniciando en esto del abap, estoy atorada porque necesito validar el contenido de la dirección de un correo electrónico, la parte del nombre de usuario debo verificar q contenga sólo letras, números y como caracteres especiales sólo acepte el punto, guión y guión bajo (. – _) pero no encuentro como hacer ¿existe alguna función que realice esto? ¿puedes ayudarme por favor?

8 12 2008
Daniel Panaro

Que tal Judi,
Estuve buscando alguna función pero por el momento no encontré. Por favor si alguien conoce alguna función estandar, les pido que la publiquen.

Igualmente encontré un sitio donde una persona creó un FORM donde valida una dirección de e-mail. Espero que te sirva..
http://sapprograms.blogspot.com/2008/11/e-mail-validation.html

5 01 2010
Judi

Hola Daniel: gracias y si, al final tuve que implementar una rutina para la validación del los datos de destinatario y servidor del email.

Saludos.

2 04 2009
Mariela

Hola Daniel,

Chamo una consulta… tengo un programa donde tengo de base una tabla interna con facturas de diferentes clientes, dentro del programa se debe enviar un mail a cada cliente con sus correspondientes facturas, es decir, debo enviar un adjunto en el mail, el tema está que para enviarlo tipo XLS no hay problema, el problema radica cuando quiero enviar un archivo en formato TXT por el máximo de 255 caracteres, conoces alguna función que me permita hacer esta conversión directa de subtablas internas a un txt???

Gracias. Saludos, por cierto muy buena tu página.

4 04 2009
Daniel Panaro

Mariela, el problema radica por un tema de tipos de formatos. No creo que una función te ayude (aunque desconozco que exista) porque el problema lo tenes con los .txt y no con los .xls
Cualquier duda o aclaración sobre tu problema, no dudes en escribirme un mail.
Saludos,
Daniel.

26 08 2009
Chispa

Momia… tenes algun tutorial de LSMW a mano?.

Saludos.

27 08 2009
Daniel Panaro

Gaby, como anda eso???

Esta página la use como guia las veces que use LSMW, es muy claro y detallado:
http://www.sap123.com/showthread.php?t=98

Y sino bajate el siguiente manual, esto ya es más completo:
http://www.erpgenie.com/sapgenie/docs/LSMW180_HowTo_E.zip

Saludos,
Daniel.

26 08 2009
La Momia de gerli

Momiaaaaaaaaaaaa como va?
andas con la pagina…todas minusas, bien ahique dejen mail y celu

no le pases nada al bicho….encima que nos abomba mal.

Saludos

27 08 2009
Daniel Panaro

Mauro! como anda el tutu?
Gracias por pasar a visitar la página.
Nos hablamos, cuidate.
Saludos!!!
Daniel.

15 09 2009
Enrique

Hola que tal, tengo un problema en el ambiente de Calidad y Productivo al querer mandar un correo por medio de la función ‘SO_OBJECT_SEND’, en desarrollo manda los correos perfectamente, pero en Calidad y Prod. no lo hace, al salir de la función no manda ningún error, pareciera que lo manda, pero no le llega a ningun destinatario, sabran a que se debe. Gracias por su ayuda!

16 09 2009
Daniel Panaro

Que tal Enrique, verificaste que el mail se envió (liberó) desde la transacción SCOT ?.
Saludos,
Daniel.

29 09 2009
Frank-Lima-Perú

Daniel como estas un favor recien me inicio en el tema de ABAP y necesito ver un ejemplo de envio de un correo via programa con archivo adjunto en un programa … es posible tener algun ejemplo que puedas enviarme gracias

8 10 2009
María

Hola Daniel,

tengo un probelma con los envíos de mail.

Lo que persigo es cargar un smartforms y poder enviarlo: estoy utilizando estas funciones: ‘CONVERT_OTF’ , ‘SX_TABLE_LINE_WIDTH_CHANGE’ y ‘SO_NEW_DOCUMENT_ATT_SEND_API1’, el caso es que luego me voy a la SCOT y tengo el envío realizado con su correspondiente PDF adjunto, pero al intentar abrir el PDF me dice que no se puede abrir por que es un tipo de archivo no admitido o está dañado… y en otro he conseguido abrirlo pero no me carga el smartforms.
Puedes ayudarme por favor?

8 10 2009
Daniel Panaro

Que tal María, por lo que comentas la forma de hacerlo es la correcta. Ya que el envío sale con el adjunto.
El error posiblemente este en la conversión del PDF. En vez de utilizar la función CONVERT_OTF, probaste utilizar la función CONVERT_OTFSPOOLJOB_2_PDF ?
Te dejo 2 links referidos a convertir formularios a PDF:
1)

Pasar orden de spool a PDF


2)

RSTXPDFT4 – Pasar orden de spool (formulario) a PDF

Espero que te sirva, saludos.
Daniel.

23 02 2010
Ivette

Hola Daniel.
Tengo un problema al envial una orden de compra en PDF por mail.
Si genera bien el archivo en PDF pero necesito ponerle como cuerpo del mail, el texto que tiene configurado la clase de mensaje estoy usando una copia del NEU (ZNEU) y en los textos y títulos de mail en la clase de mensaje tengo el texto que quiero poner en al mail. Ya logré leer el texto desde el programa pero no se donde ponerlo para que salga en el mail.
Cómo puedo hacerle?

Gracias y saludos.

3 12 2009
Marlon

Hola Daniel, he leido tus blog sobre ABAP, y del envio de PDF.

Tengo un problema, a ver si me puedes ayudar. Estoy enviando el PDF a todos los email que me interesa y están llegando super bien, el detalle esta es si este reporte (en este caso la orden de compra) si tiene el logo de la empresa, al llegar al usuario que recibe el email, al abrirlo le dice «Falta data para la Imagen», y el archivo no se llega a ver completo. Hice una prueba al generar la conversión de PDF, lo exporte a mi maquina antes de enviarlo, se ve perfecto en mi maquina (es decir que la conversión a PDF funciona super), me imagino que el error esta en la rutina que crea el bin, te envio el ejemplo:

loop at t_pdf into i_pdf.
translate i_pdf using ‘ ~’.
CONCATENATE gd_buffer i_pdf INTO gd_buffer.
endloop.
TRANSLATE gd_buffer USING ‘~ ‘.
DO.
contents_bin = gd_buffer.
APPEND contents_bin.
SHIFT gd_buffer LEFT BY 255 PLACES.
IF gd_buffer IS INITIAL.
EXIT.
ENDIF.
ENDDO.

En la rutina anterior es donde pienso tengo el problema.

Despues de esa rutina uso la función siguiente para enviar el email.

SO_NEW_DOCUMENT_ATT_SEND_API1

Saludos y esperando tu pronta respuesta.

3 12 2009
Marlon

Hola Daniel, ya consegui la solución.
Saludos.

4 12 2009
Daniel Panaro

Me alegro que lo hayas solucionado, saludos!!!
Daniel.

11 08 2010
hugo

Hola Marlon yo tengo el mismo problema al enviar correos con esta funcion SO_NEW_DOCUMENT_ATT_SEND_API1 , adjunto un archivo excel , el cual cuando se genera antes de enviarse tiene por ejemplo 40 registros y cuando llega al correo del usuario llega 30 , menos registros , facil en elmomento de la conversion a bin se degrada la informacion , podrias indicarme por favor como solucianaste el tema muchas gracias.

11 08 2010
hugo

Hola Marlon yo tengo el mismo problema al enviar correos con esta funcion SO_NEW_DOCUMENT_ATT_SEND_API1 , adjunto un archivo excel , el cual cuando se genera antes de enviarse tiene por ejemplo 40 registros y cuando llega al correo del usuario llega 30 , menos registros , facil en elmomento de la conversion a bin se degrada la informacion , podrias indicarme por favor como solucianaste el tema muchas gracias. ..

10 12 2013
Mauricio

Marlon, tengo el mismo problema… El archivo llega por correo pero dañado..como lo solucionaste??

3 12 2009
Pilar

Daniel, que bueno encontrar tu página, te cuento que necesito enviar al cliente el estado de cuenta que se genera desde la transacción FBL5N, pero con las clases de correspondencia de SAP SAP06, para FI-AR.

Ahora bien está bien que lo haga así o es preferible hacer un programa ‘Z’.

Si fuera de manera estandar, puedo utilizar las funciones que publicas en tu sitio? SO_NEW_DOCUMENT_ATT_SEND_API1 o SO_DOCUMENT_SEND_API1?

Muchas gracias por tu ayuda de antemano.

Saludos,
Pilar H.

4 12 2009
Daniel Panaro

Que tal Pilar,
Siempre es recomendable realizar, si es posible, los envíos de mail automáticamente desde las transacciones estándar.
Pero como no todas las transacciones tienen esa opción entonces la solución es mediante un programa Z y utilizando las funciones mencionadas.

Saludos,
Daniel.

14 12 2009
javier

Hola Daniel, queria hacerte una consulta, te cuento, estoy realizando un programa que realiza el envio de mail adjuntando un archivo html que lo creo a partir de la funcion WWW_LIST_TO_HTML.
al ejecutarlo en modo dialogo funciona a la perfeccion. se adjunta y se envia.
pero si es que lo ejecuto como proceso de fondo (jobs) el mail no se envia, a pesar de que en la bandeja de salida aparece el mail como enviado,pero sin el archivo adjunto a pesar de que se crea el archivo.
supongo que tiene que ver esto de como se esta ejecutando el programa…
podes darme una mano en esto, por lo menos por donde puedo seguir investigando?

15 12 2009
Daniel Panaro

Hola Javier,
Si el archivo HTML lo generás a partir de un reporte ALV, tenés que tener en cuenta que los ALV no se ejecutan en procesos de fondo.
Salvo que llames al reporte utilizando programación en objetos, habilitando cl_gui_alv_grid=>offline( ) y creando un contenedor.

Espero haberte ayudado.
Saludos!
Daniel.

15 12 2009
Esteban

Hola Daniel

Estoy tratando de realizar una carga con el LSMW de registro infos par compras con el obejto 0060, un standard de carga para este tipo de registros, me parece que la estructura del archivo de datos debe de tener una particular. quiero ingresar 14 condiciones por cada proveedor , material y centro , pero solo me está generando una sola condición, has realizado una carga de este tipo o alguien ha hecho este tipo de operación, le estaré agradecido.

25 01 2010
Emilio

Buen día, llevo algunos dias probando algunos ejemplos que encontré en la WEB de programas para enviar correos desde un programa hecho en ABAP, quiero ver si alguno de ustedes puede hacerme el favor de pasarme un ejemplo de un programa que envíe un correo electrónico y que configuración tendría que hacer en el SCOT para que funcione, trabajo en un ambiente SAP r3 4.6, o igual si tienen un manual o algo que me pueda ayudar todo lo agradeceré, si necesitan mi correo solo pidanmelo y si quieren ahi me mandan la info, de antemano gracias por la atención.

10 02 2010
Israel

Hola Daniel, muy buena tu pagina.

Necesito enviar ofertas creadas por la VA21 a los respectivos solicitantes via email pero desconozco el proceso de enviar emails a través de sap.

¿Podrias orientarme un poco al respecto?

17 02 2010
Daniel Panaro

Que tal Israel, muchísimas gracias por tus comentarios.
Te comento que primero podrías tratar de configurar una clase de mensaje para que se envíen automáticamente los mails.
Deberás configurar una clase de mensaje para que en lugar de imprimir, que es lo que comunmente se hace, se mande por mail.
Este opción yo la utilicé para órdenes de compra. Estimo que también se podría utilizar para ofertas. Igualmente asegurate que se pueda hacer.

La otra alternativa es crear un programa Z que se encargue de buscar las ofertas para convertirlas en una orden de spool para luego enviarse por mail con la función descripta en este post como adjunto en un pdf.

Espero que te haya podido guiar,
Saludos!
Daniel.

23 02 2010
Ivette

Hola Daniel.
Tengo un problema al enviar una orden de compra en PDF por mail.
Si genera bien el archivo en PDF pero necesito ponerle como cuerpo del mail, el texto que tiene configurado la clase de mensaje, estoy usando una copia del NEU (ZNEU) y en los textos y títulos de mail en la clase de mensaje tengo el texto que quiero poner en al mail. Ya logré leer el texto desde el programa pero no se donde ponerlo para que salga en el mail.
Cómo puedo hacerle?

Gracias y saludos.

24 02 2010
Daniel Panaro

Hola Ivette,
El mensaje del cuerpo del mail deberá estar en una tabla interna de tipo solisti.
Luego dicha tabla hay que agregarla en la opción «contents_txt» de la función SO_DOCUMENT_SEND_API1.

Te dejo un link a un ejemplo muy completo que te puede ser de utilidad:
http://www.sapdev.co.uk/reporting/email/attach_xls.htm

Saludos y suerte!
Daniel.

3 03 2010
JEPO

Hola Daniel

Tengo un problema para el envio de correos pues tengo un Hosting para el manejo de correo que no maneja relay. Hay alguna forma de configurar SAP para que me permita el envio de correos teniendo en cuenta que mi hosting exige autenticacion en su servidor SMTP.

Gracias y Saludos

26 03 2010
Daniel Panaro

Que tal Jepo,
Dentro de la transacción SCOT, dentro del objeto INT deberías crear un nodo de tipo SMTP. Donde podrás configurar IP, Puerto y los tipos de dirección soportados.

Espero que te sirva!
Saludos,
Daniel.

17 06 2010
Luis

Hola Daniel tenes algun ejemplo de enviar por mail dos anexos un excel y un pdf , yo lo hice aunque me manda por mail los dos uno llega corrupto no se lo puede leer no se en donde estoy fallando , por eso te pido algun ejemplo paa verlo

Gracias

4 10 2023
Anónimo

hola luis, conseguiste solucionarlo? pudiste hacerlo? enviar un mismo pedido a varios emails.
gracias

18 06 2010
Americo

Hola:
Tengo varios correos registrados con un Proveedor y necesito enviarle los Pedidos a todos ellos pero SAP 6.0 solo te permite seleccionar uno como predeterminado y solo a ese correo envía el mensaje.

Existe la posibilidad de crear una Lista de Distribución pero como se asigna esa lista al proveedor?

Existe otra opción fuera de la lista de distribución?

Gracias

4 10 2023
Anónimo

Hola Americo
Conseguiste hacerlo? Enviar un mismo pedido de compra a varios emails? gracias

18 06 2010
Luis

hola ya soluciione mi problema gracias igualmente

15 07 2010
Pablo

Hola Daniel. Un programa enviaba correos directamente desde la función del smartform (con el formulario adjunto en forma de pdf). Me solicitaron agregarle cuerpo al correo y como no se podía agregarlo de la forma como se enviaba el correo, hice lo sigiuente: Estoy convirtiendo el smartform a OTF, lo luego el OTF a PDF con CONVERT_OTF y luego lo envio como adjunto a un correo mediante SO_NEW_DOCUMENT_ATT_SEND_API1. El problema es que el pdf que se adjunta en el correo sale mal, o sea no respeta el formato que se coloca en el smartform (formatos de texto y cuadriculas). Sabes que podría ser?

21 07 2010
Daniel Panaro

Hola Pablo,
Apuntaría tu problema a la converción a OTF.
Le daría una mirada a los parámetros de la función CONVERT_OTF.

Otra alternativa, no se si te será útil en tu caso, puede ser tomar el nro de la orden de spool una vez que se genera el formulario. Y luego realizar la conversión a PDF con la función ‘CONVERT_OTFSPOOLJOB_2_PDF’.

Espero lo puedas solucionar.
Saludos,
Daniel.

29 07 2010
Beatriz

Hola Daniel!!!

Tengo que enviar correos al workplace de sap, pero necesito que caigan en la carpeta de Entrada–> Workflow.
Con la funcion SO_NEW_DOCUMENT_SEND_API llegan a la carpeta Entrada–> Documentos. Cómo puedo indicar para que lleguen en Workflow??

Gracias.
Saludos.

11 08 2010
JHOENE

Te saludo desde México Daniel:

con anterioridad te envié un mensaje por correo pero si por alguna razón no puedes verlo igualmente me gustaría ver si me puedes resolver mi duda:

encontré en el menú SAP una aplicación para oficina que es la: SSC1, esta aplicación es una agenda, pregunto acerca del uso de esta aplicación a los consultores de aquí y al parecer nadie la conoce, a mi me serviría mucho, sobre todo porque hay gente que me gustaría supiera y entendiera las actividades a realizar en mi ausencia.

yo noto las siguientes cosas dentro de la aplicación:
1. que yo puedo calendarizar mis actividades y que al hacerlo me llega un mensaje de confirmación de dicha actividad directamente en mi correo electrónico.
2. que puedo dar permisos como administrador de mi usuario, es decir, que yo puedo invitar a que otros usuarios lo vean agregando su nombre de usuario y las restricciones de lo que pueden ver.

eso es lo único que he visto sin embargo no se si al otro usuario (usuario invitado) le llega algún tipo de confirmación o aviso.
* me gustaría saber como puedo sacarle provecho a esta aplicación
* me gustaría saber si existe un manual de usuario para esta aplicación

ojala puedas ayudarme.

gracias

21 09 2010
Israel

Buenas Tardes Daniel, creé un nuevo tipo de mensaje para la salida del documento via email y se envia perfectamente a la dirección del cliente que solicita la oferta, ahora tengo una nueva consulta que hacerte, como puedo hacer para que en el asunto de el email se concatene el numero de documento que se está enviando???

Saludos

7 10 2010
Daniel Panaro

Israel,
En el EXPORTING «document_data » de la función SO_DOCUMENT_SEND_API1se pasan los datos básicos del mail. Entre ellos el asunto.
Más precisamente en el campo «obj_name».
Ahí tendrías que conctaenar el nro de documento con el texto que quieras.

Espero te sirva.
Saludos,
Daniel.

22 09 2010
Adriana

Hola.
requiero su ayuda por favor!!!
Tengo un problema se creo un smartform para un pedido pero no puedo enviarlo a través de via pdf(Se creo una impresora pdf) al proveedor. Al ahcer pruebas me doy cuenta es que no geenra el spool de impresión pero si lo genero amnual si lo envia.
Me ayudan por favor!!
Saludos

16 12 2010
YNatha

Buenos días,

Quisiera saber ¿si la función SO_NEW_DOCUMENT_SEND_API me sirve para enviar mensaje al twitter?, ¿O de que otra forma pudiera enviar tales mensaje?. Agradecería mucho si me pudiera ayudar con esta duda.

Saludos.
YN

18 01 2011
Frank

Buenas tardes caballeros.
Me gustaría saber si alguien me puede ayudar con lo siguiente. En la transacción F110 estoy creando un registro para una transferencia bancaria. Ya genero los archivos para el banco y el aviso de pago se envía a la impresora directamente y sin problemas. Lo que me gustaría es enviar este aviso de pago por email a los proveedores de forma automática. Le agradecería si alguien tiene un procedimiento u orientación para esto. Muchisimas gracias de antemano por su atención y ayuda. Frank Brazón.

11 05 2011
Daniel Panaro

Que tal Frank,
Desconozco si existe alguna configuración estandard que realice lo que necesitas.
Pero una alternativa desde ABAP podría ser encontrar alguna User-Exit que te devuelva los datos que necesitas para poder enviar el mail.

Saludos y quedo a disposición,
Daniel Panaro.

12 07 2012
vmcuervo

Buenos días Frank

Me gustaria saber si me puede ayudar, indicandome los pasos necesarios para generar los archivos para el banco y el envio del pago a impresion.

quedo atento.

Mil gracias, mi correo es victor_cuervor@hotmail.com

18 01 2011
Frank

Olvide publicar mi email, no estoy seguro y si en el post anterior lo ven. fbrazonsap@gmail.com. Gracias.

7 03 2011
Gorka

Hola Daniel,
Me gustaría saber cómo puedo enviar un mail desde SAP adjuntando un fichero excel que se encuentra en un directorio de mi PC determinado.
¿Existe algún report que pueda tomar como modelo para hacer el report que yo quiero (con mis select-options)?
Gracias de antemano.
Saludos,
Gorka

11 05 2011
Daniel Panaro

Que tal,
Lo primero es levantar tu archivo en una tabla interna con la función GUI_UPLOAD.
Luego enviar el mail con el adjunto.

Saludos y gracias,
Daniel Panaro.

26 04 2011
rosemary figueroa

Hola Daniel:

Necesito enviar por mail al grabar un pedido, un sapscript como adjunto, un texto en particular y un asunto con el numero de pedido, por lo que entiendo s creo una clase de mensaje tipo mail, llegaria al interlocutor cliente del pedido, pero no se como agregar el asunto y datos adicionales.
Seria mejor que utilizara SO_NEW_DOCUMENT_SEND_API , pero ahi no se como adjuntar el sapscript, Gracias

6 05 2011
Marcela

Hola Daniel,
Necesitaria enviar facturas por mail automaticamente a varias personas de un mismo cliente, por ejemplo encargado de compras y pagos. Pero la base de datos solo permite agregar una sola direccion de correo. Hay forma de agregar mas direcciones al mismo cliente.

Gracias,

Muy util tu pagina!!!!!

11 05 2011
Daniel Panaro

Hola Marcela,
Nunca lo probé… pero podrías probar de poner varios mails separados por «;» en el cliente.
Si esto no funciona entonces deberás modificar el programa impresor y antes de enviar el mail agregar las direcciones que necesites.

Cualquier duda escribime por mail.
Saludos cordiales,
Daniel Panaro.

10 05 2011
XIMENA

Hola tengo un problema al abrir archivos PDF adjuntos en un email, lo mas raro es que esto no es siempre, a veces el proceso se hace correctamente y a veces no, aún utilizando los mismos datos, al querer abrir el archivo me dice :

«There was an error opening this document.The file is damaged and could not be repaired»

Alguienn me podría decir por que sucede esto?

Muchísimas gracias

12 05 2011
Agalam

Hola Ximena, a mi me pasa exactamente lo mismo. ¿Has podido ya resolver el problema?

Gracias y un saludo.

17 05 2011
Daniel Panaro

Hola Ximena,
Si el error es aleatorio deberías chequear qué tienen en particular esos PDF que fallan. Cuál es la información que llevan esos documentos; si tienen imágenes, códigos de barra, si son muchas hojas, es muy pesado el archivo… etc… buscar algo particular de esos casos.
Además podrías tratar de visualizar/imprimir en SAP los casos que fallan al bajar a PDF. Si hay error entonces es algo del formulario y no de la bajada a PDF.

12 05 2011
Agalam

Hola Daniel, magnifico blog. Me has resuelto un par de dudas entre ayer y hoy. Gracias por tu dedicacion.

El problema que ahora mismo tengo es EXACTAMENTE el mismo que el de Ximena. A ver si puedes ayudarnos a ambos.
Gracias de nuevo

17 05 2011
Daniel Panaro

Respondido. Saludos!!!

8 06 2011
yoli

Hola!

Estoy intentando enviar un fichero .txt cuyas lineas exceden de 255 caracteres y me lo envía pero con las lineas cortadas.

Existe alguna forma de q esto no suceda???

Gracias

29 07 2011
Juan Eduardo

Hola!

Por favor solicito su colaboración para saber que puede estar ocurriendo al utilizar la Tx F110(Envio de Pagos) que para algunos usuarios que la ejecutan no sale el correo al proveedor y para otros usuarios si lo hace. Gracias.

1 08 2011
Daniel Panaro

Hola Juan,
Primero deberías verificar que tanto el usuario que genera el pago como el proveedor tengan cargada la dirección de mail en el sistema.

Saludos,
Daniel Panaro.

1 08 2011
Anónimo

Daniel, gracias po su atención y respuesta. Por FK02 he verificado que el proveedor tiene su dirección de correo. Por SCOT realice un test de enrutamiento del usuario y el correo del proveedor y no presento error en ningún paso). Que otra cosa podría hacer ?. De antemano muchas gracias…!!!

1 08 2011
Juan Eduardo.

Hola Daniel. He encontrado algo y no se si eso pueda ser. Un usuario que si genera el MAIL tiene dentro de su configuración(Por SU01) en la pestaña dirección–>Comunicación–>CL.Comunicación=MAILREMOTO; El usuario que no genera correo tiene CL.Comunicación=Correo Electrónico. Esto podría estar afectando el envío ?. Gracias.

2 08 2011
Daniel Panaro

Juan,
Además del proveedor, es necesario que el usuario que genera el pago también tenga cargado el mail (transacción SU3).

Saludos,
Daniel Panaro.

3 08 2011
Anónimo

Daniel,

El usuario tambien lo tiene. Estamos revisando por el lado de los BASIS dado que en ambiente de calidad no estan saliendo correos mientras que en Productivo si. Gracias por la atención y colaboración.

saludos,

Juan Eduardo

7 11 2011
Eli

Hola Daniel,

Una pregunta, espero me puedas ayudar, estoy mandando las cartas de reclamacion (f150) via mail, esto jala perfectamente, para esto utilice EXIT_SAPF150D_001, lo que no puedo generar es el asunto del correo ni el cuerpo del mismo, intente probar metiendo esta informacion a:

e_finaa-mail_body_text = ‘TEXTO’.
e_finaa-namep = ‘TEXTO’.

pero no me funciona, sabras si existe alguna forma de generar el cuerpo y asunto del correo.

8 11 2011
Daniel Panaro

Hola Eli,
Nunca use esa función. Peroaparentemente el cuerpo del mail se tendría que completar en «e_finaa-mail_body_text».
Chequeá nuevamente tu código y asegurate que se guarden los datos que le pasas a e_finaa.

Saludos cordiales,
Daniel Panaro.

9 11 2011
Eli

Muchas gracias Daniel, eres muy amable, checare nuevamente mi codigo, si logro resolverlo te informare la manera en que lo hice.

15 11 2011
Walter

Hola Daniel, espero me puedas ayudar. Al enviar un archivo PDF (36 paginas mayor de 2 Mb) manual por correo, lo envía perfecto y el archivo llega completo. Haciendo esto mismo pero con un Job el archivo llega con 17 paginas y ocupa 1 Mb. Todos los archivos que envío por un job los limita a 1Mb. Que parámetro me falta configurar. Agradecería mucho tu ayuda.

5 12 2011
juan carlos

CALL METHOD cl_gui_frontend_services=>gui_upload
EXPORTING
filename = lf_file
filetype = ‘ASC’
has_field_separator = ‘X’
IMPORTING
filelength = lf_filelength
CHANGING
data_tab = it_tabla_interna_log[]
EXCEPTIONS
OTHERS = 1.
donde lf_file es una ruta de una unidad compartida en otra maquina y no me funciona, soy nuevo en esto

1 03 2012
Ivonne

Hola Daniel…

Espero que este muy bien y sigas actualizando este sitio
Fijate que tengo una duda, necesito enviar un correo desde SAP a una lista de destinatarios. Sé que puedo usar las funciones SO_NEW_DOCUMENT_SEND_API1 y SO_NEW_DOCUMENT_ATT_SEND_API1 cuando tiene attachment.
El problema se origina que el correo sale desde mi cuenta de red.
Pero la solicitud es independientemente de quien sea la persona que ejecuta el programa, dicho correo, deberá de salir de una casilla generica del departamento…. Como logro esto, no se si sea configuración del SAPCONNECT o sea mediante la función…. desconozco como se haga…. Espero tus comentarios

Gracias!

2 03 2012
Daniel Panaro

Ivonne,
No termino de entender tu problema. Pero en ambas funciones se pueden elegir la dirección de mail de donde se envía el e-mail.

Si esta no era la respuesta y no comprendí lo que necesitabas, podes consultarme por mail.

Saludos,
Daniel.

2 03 2012
Ivonne

Muchas gracias por contestarme tan rápido Daniel….. Tal vez en realidad no sé usar bien la función SO_NEW_DOCUMENT_SEND_API1

Dejame me explico mejor….

La función tiene los siguientes parámetros:
*»*»Lokale Schnittstelle:
*» IMPORTING
*» VALUE(DOCUMENT_DATA) LIKE SODOCCHGI1 STRUCTURE SODOCCHGI1
*» VALUE(DOCUMENT_TYPE) LIKE SOODK-OBJTP DEFAULT ‘RAW’
*» VALUE(PUT_IN_OUTBOX) LIKE SONV-FLAG DEFAULT SPACE
*» VALUE(COMMIT_WORK) LIKE SONV-FLAG DEFAULT SPACE
*» EXPORTING
*» VALUE(SENT_TO_ALL) LIKE SONV-FLAG
*» VALUE(NEW_OBJECT_ID) LIKE SOFOLENTI1-OBJECT_ID
*» TABLES
*» OBJECT_HEADER STRUCTURE SOLISTI1 OPTIONAL
*» OBJECT_CONTENT STRUCTURE SOLISTI1 OPTIONAL
*» CONTENTS_HEX STRUCTURE SOLIX OPTIONAL
*» OBJECT_PARA STRUCTURE SOPARAI1 OPTIONAL
*» OBJECT_PARB STRUCTURE SOPARBI1 OPTIONAL
*» RECEIVERS STRUCTURE SOMLRECI1
*» EXCEPTIONS
*» TOO_MANY_RECEIVERS
*» DOCUMENT_NOT_SENT
*» DOCUMENT_TYPE_NOT_EXIST
*» OPERATION_NO_AUTHORIZATION
*» PARAMETER_ERROR
*» X_ERROR
*» ENQUEUE_ERROR

Dentro del código de mi programa solo utilizo lo siguiente:
CALL FUNCTION ‘SO_NEW_DOCUMENT_SEND_API1’
EXPORTING
DOCUMENT_TYPE = ‘RAW’
DOCUMENT_DATA = DOC_CHNG
TABLES
OBJECT_CONTENT = OBJTXT
RECEIVERS = RECLIST
EXCEPTIONS
TOO_MANY_RECEIVERS = 1
DOCUMENT_NOT_SENT = 2
DOCUMENT_TYPE_NOT_EXIST = 3
OPERATION_NO_AUTHORIZATION = 4
PARAMETER_ERROR = 5
X_ERROR = 6
ENQUEUE_ERROR = 7
OTHERS = 8.

Al generarse el mail, sale de la cuenta de correo imtzv@ayg.com
donde imtzv es la cuenta con la que me logue de sap.

Pero se requiere que salga desde una cuenta que se llame:
AdminPers@ayg.com

Por lo tanto, pudieras decirme cual es el parámetro de la función que debo de utilizar, para poner la dirección del mail de donde se envía el e-mail

Muchisimas gracias por tu ayuda y tu atención

5 03 2012
Daniel Panaro

Que tal Ivonne,
Intenta utilizar la función «SO_DOCUMENT_SEND_API1». Es una versión vieja de la función pero en EXPORTING tiene un parámetro que se llama «sender_address».
Espero te sirva.
Saludos cordiales,
Daniel.

5 03 2012
Ivonne

Oh Excelente Daniel
Muchisimas gracias por todo tu apoyo!!!

Y muchas felicidades por tus conocimientos y tu capacidad de compartirlos

5 07 2012
ivan

hola daniel me ha ayudado mucho, e encontrado la mayoria de misdudas aqui te felicito por la pagina, tengo un problema necesito mandar por mail un PDF generado por un smartform, en unos ejemplos vi que se usaba la funcion CALL FUNCTION ‘CONVERT_OTF_2_PDF’ y para mandar el mail ‘SO_NEW_DOCUMENT_ATT_SEND_API1’, el problema que tengo es que al mandar el mail con el pdf adjunto al momento que lo recibo y lo quiero abrir me mannda error de archivo ( el tipo de archivo no es correcto o esta dañado ) , pero yo antes de mandarlo por mail hice la prueba y lo guarde en el servidor y tambien en mi computadora y ahi lo veo perfectamente bien, el problema es al adjuntarlo al mail, me comentaron que se tenia que pasar el pdf a una tabla para cambiar el tamaño de 144 a 255 o algo asi, pero no e encontrado nada al respecto

5 07 2012
ivan

gracias por tu tiempo

5 07 2012
ivan

AQUI ESTA EL CODIGO

data: lf_fm_name2 type rs38l_fnam.

********** CONVERTIR A PDF ****************************** opcion 1
DATA: w_ctrlop TYPE ssfctrlop,
w_compop TYPE ssfcompop,
w_return TYPE ssfcrescl,
otfdata LIKE itcoo OCCURS 0 WITH HEADER LINE,
lc_name TYPE rs38l_fnam,
intab TYPE soli_tab,
objbin TYPE solix_tab,
wa_intab TYPE LINE OF soli_tab,
wa_objbin TYPE LINE OF solix_tab,
objpack LIKE sopcklsti1 OCCURS 0 WITH HEADER LINE.

*DATA: v_comp_code TYPE bukrs,
* v_bil_number TYPE vbeln,
* v_fecha TYPE z1edk01-date_time.

********** CONVERTIR A PDF ****************************** opcion 2
DATA:
v_bin_filesize TYPE i,
v_file TYPE char256,
v_comp_code TYPE bukrs,
v_bil_number TYPE vbeln,
v_folio LIKE vbrk-xblnr,
v_fecha TYPE z1edk01-date_time,
v_serie TYPE z1edk01-odn_prefix,
v_cliente TYPE partner,
w_lines TYPE tline,
it_docs TYPE STANDARD TABLE OF docs,
it_lines TYPE STANDARD TABLE OF tline.

********** ENVIAR E-MAIL ********************************

data: tb_pdf255 type so_text255 occurs 0,
lt_pdf255 type so_text255 occurs 0,
ld_subject(50) type c value ‘PRUEBA 2’,
ls_body type solisti1,
ld_body(100) type c,
lt_body type table of solisti1,
ls_doc_chng like sodocchgi1,
lt_recipients type table of somlreci1,
lt_objtxt like solisti1 occurs 0 with header line,
ltb_lines type table of tline,
ld_tab_lines like sy-tabix,
lt_objpack like sopcklsti1 occurs 6 with header line,
ls_recipients type somlreci1,
ld_field_name(50) type c.

data LENG TYPE I.
FIELD-SYMBOLS TYPE x.

********** GUARDAR A PDF ********************************

DATA: lv_ruta TYPE epsf-epsdirnam VALUE ‘f:\\FapsaFTP\CFD’, » ‘f:\\FapsaFTP\CFD’, » ruta servidor ‘C:\CFD’, «ruta pc
lv_file TYPE char100,
lv_file2 TYPE char100,
lv_dir type STRING.

************************************************************
************************************************************
call function lf_fm_name
exporting
archive_index = toa_dara
archive_parameters = arc_params
control_parameters = ls_control_param
* mail_appl_obj =
mail_recipient = ls_recipient
mail_sender = ls_sender
output_options = ls_composer_param
user_settings = space
is_bil_invoice = ls_bil_invoice
is_nast = nast
is_repeat = repeat
* Pasa al SmartForm el numero de copia actual.
is_num_copia = ls_num_copia
* importing document_output_info =
* job_output_info =
* job_output_options =
exceptions formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 4
others = 5.

********************************************
********************************************

*lc_name = lf_fm_name.

*Llama al modulo de función del SF
w_ctrlop-getotf = ‘X’.
w_ctrlop-no_dialog = ‘X’.
w_compop-tdnoprev = ‘X’.

if cf_retcode = 0. «este if se termina en la linea 765

CALL FUNCTION lf_fm_name2
EXPORTING
output_options = w_compop
control_parameters = w_ctrlop
is_bil_invoice = ls_bil_invoice «SE AGREGO
is_nast = nast «SE AGREGO
is_repeat = repeat «SE AGREGO
is_num_copia = ls_num_copia «SE AGREGO
IMPORTING
job_output_info = w_return
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 4
OTHERS = 5.

IF sy-subrc 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
otfdata[] = w_return-otfdata[].
ENDIF.

* Obtiene nombre de archivo y ubicacion en servidor
v_comp_code = ls_bil_invoice-hd_org-comp_code.
v_bil_number = ls_bil_invoice-hd_gen-bil_number.
v_fecha = ls_bil_invoice-hd_gen-bil_date.

*En la tabla otfdata nos queda guardado el formulario en formtao OTF
*Ahora sólo resta convertir el OTF en PDF
LOOP AT otfdata.
wa_intab = otfdata.
APPEND wa_intab TO intab.
CLEAR wa_intab.
ENDLOOP.

************* Convertir el OTF en PDF ************ opcion 1
**
CALL FUNCTION ‘SX_OBJECT_CONVERT_OTF_PDF’
EXPORTING
format_src = ‘OTF’
format_dst = ‘PDF’
* ADDR_TYPE =
devtype = ‘LOCL’
* FUNCPARA =
CHANGING
transfer_bin = objpack-transf_bin
content_txt = intab
content_bin = objbin
objhead = intab
len = objpack-doc_size
EXCEPTIONS
err_conv_failed = 1
OTHERS = 2.

********* Convierte OTF a PDF *********** opcion 2
* CALL FUNCTION ‘CONVERT_OTF_2_PDF’
** EXPORTING
** USE_OTF_MC_CMD = ‘X’
** ARCHIVE_INDEX =
* IMPORTING
* bin_filesize = v_bin_filesize
* TABLES
* otf = w_return-otfdata
* doctab_archive = it_docs
* lines = it_lines
* EXCEPTIONS
* err_conv_not_possible = 1
* err_otf_mc_noendmarker = 2
* OTHERS = 3.
* IF sy-subrc 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
* ENDIF.

********* ASIGNAR NOMBRE AL ARCHIVO PDF *******

* Concatenar nombre del archivo
CONCATENATE v_BIL_NUMBER
‘.pdf’
INTO lv_file.

* Concatenar ruta y archivo
CONCATENATE lv_ruta
lv_file
INTO lv_file SEPARATED BY ‘\’.

*************** GUARDAR EN SERVIDOR ******************

** Descarga PDF a ubicacion en servidor
* OPEN DATASET lv_file FOR OUTPUT IN BINARY MODE.
* IF sy-subrc = 0.
* LOOP AT it_lines INTO w_lines.
* IF v_bin_filesize < 135.
* TRANSFER w_lines TO lv_file LENGTH v_bin_filesize.
* ELSE.
* TRANSFER w_lines TO lv_file.
* v_bin_filesize = v_bin_filesize – 134.
* ENDIF.
* ENDLOOP.
* CLOSE DATASET v_file.
* ELSE.
** WRITE : / 'operating system could not open file' .
* ENDIF.

************* MANDAR E-MAIL *******************

data: begin of lt_objbin occurs 0.
include structure solisti1.
data: end of lt_objbin.

" ESTA FUNCION ES LA QUE ME DA ERROR Y CREO QUE AQUI
"ES DONDE PASA EL PDF PARA MANDARLO AL MAIL

*call function 'SX_TABLE_LINE_WIDTH_CHANGE'
* exporting
** line_width_src =
** line_width_dst =
* transfer_bin = 'X'
* tables
* content_in = it_lines
* content_out = lt_pdf255
* exceptions
* err_line_width_src_too_long = 1
* err_line_width_dst_too_long = 2
* err_conv_failed = 3
* others = 4.

*———————————————————————-*
* Control Data
*———————————————————————-*
ls_doc_chng-obj_name = 'PRUEBA 1'.
ls_doc_chng-sensitivty = 'P'.
ls_doc_chng-no_change = 'X'.
ls_doc_chng-priority = '1'.
ls_doc_chng-obj_prio = '1'.
ls_doc_chng-obj_langu = sy-langu.
ls_doc_chng-no_change = 'X'.
* Email Subject
ls_doc_chng-obj_descr = ld_subject.
* Email Body
ld_body = 'Prueba de Mail con PDF'.
ls_body-line = ld_body.
append ls_body to lt_body.

CLEAR ls_body.
APPEND ls_body to lt_body.
ld_body = 'Atte.'.
ls_body-line = ld_body.
APPEND ls_body to lt_body.
ld_body = sy-uname.
ls_body-line = ld_body.
APPEND ls_body to lt_body.
lt_objtxt[] = lt_body[].
* clear lt_objtxt.
describe table lt_objtxt lines ld_tab_lines.
if ld_tab_lines gt 0.
read table lt_objtxt index ld_tab_lines.
ls_doc_chng-doc_size = ( ld_tab_lines – 1 ) * 255 + strlen( lt_objtxt ).
clear lt_objpack-transf_bin.
lt_objpack-body_start = 1.
lt_objpack-body_num = ld_tab_lines.
lt_objpack-doc_type = 'RAW'.
append lt_objpack.
endif.
* Attachment
* Move the binary attachment to other internal table.

lt_objbin[] = lt_pdf255[].
lt_objpack-transf_bin = 'X'.
lt_objpack-body_start = 1.
ld_field_name = v_BIL_NUMBER. "i_obj_name.
*Get the number of lines in the Attachment (PDF FILE)
describe table lt_objbin lines ld_tab_lines.
lt_objpack-body_num = ld_tab_lines.
lt_objpack-doc_type = 'PDF'.
lt_objpack-obj_name = ld_field_name.
CONCATENATE ld_field_name '.pdf'
INTO lt_objpack-obj_descr.
lt_objpack-doc_size = ld_tab_lines * 255.
append lt_objpack.

*RECIPIENTS
ls_recipients-rec_type = 'U'.
ls_recipients-express = 'X'.
ls_recipients-receiver = '######@hotmail.com'. " correo destino
"ls_recipients-copy = .
append ls_recipients to lt_recipients.

************ FUNCION PARA MANDAR MAIL QUITAR COMENTARIOS

call function 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
document_data = ls_doc_chng
put_in_outbox = 'X'
commit_work = 'X' "agregado
TABLES
packing_list = lt_objpack
contents_bin = lt_objbin
"contents_txt = lt_objtxt
receivers = lt_recipients
EXCEPTIONS
too_many_receivers = 1
document_not_sent = 2
document_type_not_exist = 3
operation_no_authorization = 4
parameter_error = 5
x_error = 6
enqueue_error = 7
others = 8.
commit work.
if sy-subrc = 0.
* message i000(0k) with i_subject
* 'enviado con exito'.
* message i000(0k) type e 'enviado con exito'.
else.
* message i000(0k) with i_subject
* 'error en envío'.
* message i000(0k) type e
* 'error en envío'.
endif.

************* GUARDAR EN PC *******************

*lv_dir = lv_file.
*
*CALL FUNCTION 'GUI_DOWNLOAD'
* EXPORTING
** BIN_FILESIZE = otfdata
* FILENAME = lv_dir
* FILETYPE = 'BIN'
* APPEND = 'X'
** WRITE_FIELD_SEPARATOR = ' '
** HEADER = '00'
** TRUNC_TRAILING_BLANKS = ' '
** WRITE_LF = 'X'
** COL_SELECT = ' '
** COL_SELECT_MASK = ' '
** DAT_MODE = ' '
** CONFIRM_OVERWRITE = ' '
** NO_AUTH_CHECK = ' '
** CODEPAGE = ' '
** IGNORE_CERR = ABAP_TRUE
** REPLACEMENT = '#'
** WRITE_BOM = ' '
** TRUNC_TRAILING_BLANKS_EOL = 'X'
** WK1_N_FORMAT = ' '
** WK1_N_SIZE = ' '
** WK1_T_FORMAT = ' '
** WK1_T_SIZE = ' '
** WRITE_LF_AFTER_LAST_LINE = ABAP_TRUE
** SHOW_TRANSFER_STATUS = ABAP_TRUE
** IMPORTING
** FILELENGTH =
* TABLES
* DATA_TAB = objbin
** FIELDNAMES =
* EXCEPTIONS
* FILE_WRITE_ERROR = 1
* NO_BATCH = 2
* GUI_REFUSE_FILETRANSFER = 3
* INVALID_TYPE = 4
* NO_AUTHORITY = 5
* UNKNOWN_ERROR = 6
* HEADER_NOT_ALLOWED = 7
* SEPARATOR_NOT_ALLOWED = 8
* FILESIZE_NOT_ALLOWED = 9
* HEADER_TOO_LONG = 10
* DP_ERROR_CREATE = 11
* DP_ERROR_SEND = 12
* DP_ERROR_WRITE = 13
* UNKNOWN_DP_ERROR = 14
* ACCESS_DENIED = 15
* DP_OUT_OF_MEMORY = 16
* DISK_FULL = 17
* DP_TIMEOUT = 18
* FILE_NOT_FOUND = 19
* DATAPROVIDER_EXCEPTION = 20
* CONTROL_FLUSH_ERROR = 21
* OTHERS = 22
* .
*IF SY-SUBRC 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
*ENDIF.
*

endif. » este endif es del if que esta en la linea 445

********************************************
********************************************
SALUDOS

2 08 2012
gus

hola buenos dias estoy tratando de configurar mi correo en sap he seguido la gia que se ha posteado pero al enviarlo en en la transaccion SCOT me marca como en transto no me da error ni nada pero si me voy a la SO01 veo que hay un mensaje y me dice lo siguiente
El mensaje no puede tratarse, ya que no existe ruta
alguna idea de que esta pasando

3 08 2012
Daniel Panaro

Buen día,
Verifica que tengas bien configurada la transacción SCOT.
Te dejo un instructivo:
http://es.scribd.com/doc/12753028/Scot-Configuration-Troubleshooting

Saludos,
Daniel.

6 12 2012
Jorge Luis

Hola Daniel, existe la posibilidad de tener un feedback del servidor de correos donde sepa si el destinatario revibió o leyó un mail que se le envió desde r/3?

salu2

7 12 2012
Daniel Panaro

Hola Jorge,
En la tabla Receivers de la función hay un campo que es «notif_read»
El cual deberías completar con ‘X’.

Saludos cordiales,
Daniel.

17 07 2013
Edward

Hola, tienes un ejemplo de programa que envie un correo desde un ABAP y anexe cualquier archivo, en este caso el PDF ya esta generado. Muchas gracias por tu apoyo.

17 07 2013
Daniel Panaro

Hola Edward,
No tengo un ejemplo a mano para pasarte.
Pero si buscas por google, encontrarás varios ejemplos.
Te dejo una web de referencia para esta función de envío de mails:
http://mustafayalcin.com/?tag=%E2%97%A6so_document_send_api1

Espero que te sirva.
Saludos cordiales,
Daniel.

26 10 2013
Karla V.

Hola! donde le coloco la direccion de correo del emisor a los avisos de pago?

28 10 2013
Daniel Panaro

Buen día Karla,
La dirección de correo del emisor debe ir en el parámetro sender_address.
Quizás también tengas que configurar el parámetro SENDER_ADDRESS_TYPE

Saludos cordiales,
Daniel.

1 11 2013
María

Hola Daniel,
necesito verificar de antemano antes del llamado al envío del mail si la dirección de correo del destinatario es válida. Sabes si existe una función o método para eso?
Muchas gracias!

11 11 2013
Daniel Panaro

Hola María buen día,
Proba de validar las direcciones de mail con esta función:
SX_INTERNET_ADDRESS_TO_NORMAL

Espero te sirva.
Saludos cordiales,
Daniel.

11 12 2013
nahyra

Buen día Daniel,

He estado revisando esta tu página y he encontrado información muy interesante, grandes aportes. Mi caso es que yo no soy ni basis ni abap sin embargo me han asignado lo relativo a WF y ahora mismo tengo un serio problema con uno que está presentando un comportamiento irregular: se trata de estrategias de liberación en MM y cuando se ejecuta la ME51N se liberan pedidos enviando tanto al SBWP como al correo externo del usuario responsable una notificación con un Work item ejecutable; esto está ocurriendo pero sólo klo hace para el primer nivel de aprobación; una vez el primer usuario libera el correo se repite para el mismo usuario, tantas veces como se trate la liberación del pedido, en lugar de enviarlo al siguiente nivel o aprobador. Estoy probando con mi cuenta de correo asociada a los usuarios (para controlar) pero no logro que se cumpla la secuencia tal como está establecida.

Cualquier ayuda que me puedas brindar será de utilidad. Gracias de antemano.

Saludos
Nahyra

26 12 2013
Hernán Cabezas

Hola Daniel, espero me puedas dar una luz con un tema con la tx MIGO resulta que al indicar un documento de material, se visualiza en la parte inferior una pestaña de mensajes y una tecla de visualizar mensajes donde me aparecen la clase de mensaje que están asociadas a una salida impresa. Lo que necesito es que se muestre una clase que he creado con el smartforms, he comprobado que con la tx NACE asociada a la aplicación ME esta incluida la clase de mensaje.
Pero al debuguear pude observar que la función toma la tabla NAST en la cual no se encuentra grabada la clase de mensaje con la clave de objeto creada. Que me estaría faltando hacer…..alguna configuración? Gracias por tu ayuda.

saludos
Hernán
te dejo mi correo : hcabezas@albis.com.pe

26 12 2013
Daniel Panaro

Hola Hernán,
La clase de mensaje tiene que tener asociada un programa impresor y un formulario (en tu caso un smartform).

En tu comentario no mencionaste tener un programa impresor. Asegurate de tenerlo asociado a la clase de mensaje.
Y a su vez te recomiendo que hagas un debug de dicho programa para verificar que llame a tu smartform.

Cualquier otra duda escribime por mail.
Saludos,
Daniel.

28 05 2014
Ruffo

Hola estube revisando este link y veo que mi caso al parecer es muy especial, mi empresa se conecta a SAP a traves de citrix pues las maquinas se encuentran en australia, todo bien hasta ahi, implemente WF de compras y para las aprobaciones envia un correo al usuario a outlook para que tenga un acceso directo a su work place, el tema es que este acceso no me funciona a traves del correo y no permite abrir SAP, esto al parecer se debe al tipo de conexion que utilizo, alguien sabe o soluciono un problema similar.
rfperezn@gmail.com
Les agradezco su ayuda

2 06 2014
Karol Salazar

Hola, tengo un problema, en una sociedad en específico cuando hacen pagos por la f110 le llega copia del email del aviso de pago a un correo en específico y ellos quieren sustituirlo por otro que sea el correo del remitente, por donde configuro eso?

3 06 2014
Daniel Panaro

Karol,
Deberías analizar el código fuente del programa impresor.
Para así saber cómo se determina el mail.

El programa impresor lo obtenés en la solapa «impresion y sop. datos».

Saludos cordiales,
Daniel.

3 06 2014
Karol Salazar

Hola, gracias, apunta a un programa estándar, el RFFOAVIS, lo revisé traduciendo los comentarios del alemán al español pero aún no encuentro donde buscan el email, hay alguna otra forma de revisar?

4 06 2014
Daniel Panaro

Karol,
Verifica las BTE 2040 y 2050 (BTE = Business Transaction Event).

SAP Reference IMG -> Financial Accounting -> Financial Accounting Global Settings -> Business Transaction Events

Te recomiendo que pongas un BREAK (debug) y ejecutes la corrida de pago para ver cuáles son los mails que trae.

El programa RFFOAVIS le pasa los datos de mail a la función SO_DOCUMENT_SEND_API1 en la tabla receivers (acá también podrías hacer un debug).

Saludos,
Daniel.

4 06 2014
Karol Salazar

Gracias el problema estaba en el bte 2040 habian puesto la validación allí de que enviara a ese correo, lo modifiqué por el que los usuarios querían y listo.
Mechas gracias.

4 06 2014
CarolLop

Hola Daniel, estoy enviando un correo con un pdf adjunto a través de una transacción y hasta ahí todo bien, el problema es que quiero agregar un texto al email que diga algo así como: ‘No responder a este correo por favor’. Este es el código que he implementado, pero no se envía el cuerpo del texto de hecho el correo que se genera adjunta bien el pdf y lo demás (destinatario y asunto), pero el cuerpo del correo esta vacio.


* Variables del texto a enviar
TYPES: BEGIN OF t_texttable,
line(255) TYPE c,
END OF t_texttable.
DATA: i_texto TYPE TABLE OF t_texttable,
wa_texto TYPE t_texttable,
v_texto TYPE string,
v_lines_txt TYPE i.
v_texto = ‘Por favor no responda a este correo’.
wa_texto-line = v_texto.
APPEND wa_texto TO i_texto.

it_texto[] = i_texto[].
DESCRIBE TABLE it_texto LINES v_lines_txt.
READ TABLE it_texto INDEX v_lines_txt.

CALL FUNCTION ‘SO_DOCUMENT_SEND_API1’
EXPORTING
DOCUMENT_DATA = wa_datos_doc
PUT_IN_OUTBOX = ‘X’
SENDER_ADDRESS = remitente
SENDER_ADDRESS_TYPE = ‘SMTP’
COMMIT_WORK = ‘X’
IMPORTING
SENT_TO_ALL = zsend_to_all
NEW_OBJECT_ID = znew_order
TABLES
PACKING_LIST = it_objpack
OBJECT_HEADER = it_header
CONTENTS_BIN = it_bin
CONTENTS_TXT = it_texto
* CONTENTS_HEX = CONTENTS_HEX
* OBJECT_PARA = OBJECT_PARA
* OBJECT_PARB = OBJECT_PARB
RECEIVERS = it_destinatario
EXCEPTIONS
TOO_MANY_RECEIVERS = 1
DOCUMENT_NOT_SENT = 2
DOCUMENT_TYPE_NOT_EXIST = 3
OPERATION_NO_AUTHORIZATION = 4
PARAMETER_ERROR = 5
X_ERROR = 6
ENQUEUE_ERROR = 7
OTHERS = 8.

Gracias por tu atención.

3 07 2014
ynnad579

Hola

Deseo enviar por email el aviso de pago a Proveedores a traves de SAP.

Como puedo realizarlo?

Slds

7 07 2014
Daniel Panaro

Que tal,
Eso lo debes realizar desde la configuración de la transacción F110 en la solapa «impresion y sop. de datos».
Allí deberás utilizar un programa que realice el envío de mails.

Este link quizas te sea de utilidad:

Recomiendo que esto lo veas con un funcional de FI.

Saludos,
Daniel.

13 02 2015
José Gregorio Sira Parra

Buenas un saludo a todos desde Venezuela. Mi problema es el siguiente:
Genero un job todos los días hábiles con los inventarios a las 10:00 pm. y los envío a una cuenta de correo externa. Pero me llegan truncados. Ahora cuando manualmente envío el archivo tomándolo desde las ordenes de spool propias si llega completo. Ojala me puedan ayudar con esto.

8 04 2015
mpgonza

Hola Daniel,

resulta que tengo que adjuntar un excel a un mail, pero los usuarios quieren que puedan previsualizarlo en el nuevo outlook online. Todas las funciones lo que hacen es realmente crear un archivo de texto con delimitadores, entonces cuando lo abres te salta un aviso de El archivo que intenta abrir, tiene otro formato que el especificado por al extensión del archivo…. Que al dar ok, se abre perfectamente y luego ya lo puedes grabar como excel, pero los usuarios no quieren ver esto. Sabes cómo podría hacerse? Me he vuelto medio loca probando con XML, CBL, i_oi_spreadsheet… no se me ocurre más.

Muchas gracias de antemano.

23 06 2015
Tania Pereira

Hola Daniel,
Gracias por tu blog. Agradezco tu apoyo para solventar este inconveniente. hice un programa Z a través de la transacción SE24. Si ejecuto el programa desde acá(SE24), el archivo pdf viaja correctamente a la dirección email. Pero si lo ejecuto desde la nueva transacción Z99_xxxx se ejecuta el programa y no envía mensaje error pero no se envía el correo. No entiendo que puede estar pasando si el programa por si solo se ejecuta correctamente pero desde la transaccion Z99_xxx no viaja el correo.

25 06 2015
Daniel Panaro

Hola Taiana,
Primeramente debés verificar si creaste correctamente la transacción Z99_xxxx
Fijate que cuando creas la transacción elijas el «Start Object» correcto de acuerdo a tu programa (program and screen, program and selection screen, method of a class, etc).
Y en la siguiente pantalla, si está correcta la información de: Program, selection screen, Classification y GUI support.

Espero que esto te ayude.
Saludos,
Daniel.

25 06 2015
Tania Pereira

Hola Daniel, Gracias por tu ayuda.
La nueva transacción esta correcta, de hecho cuando hago el debugger el programa se ejecuta sin problema. Pero no llega a sus remitentes. Tu has hecho algún programa desde la transacción SE24, que envie email? sera que pasa por otro canal en el scot cuando se envía por una transacción Z.

12 11 2015
Anónimo

Buen día, gracias Deniel por brindar este espacio de consultas.
Quisiera aprovechar para consultarles si a alguno le pasó que en los Envios de las OC por mail a los Proveedores, en el asunto del Mail, el número de OC (EKKO-EBELEN) sale erroneo. Es decir en el asunto dice OC Nro 4500000001 y el adjunto (que es el que está bien) hace referencia a otra OC.

Desde ya, agradezco cualquier información que puedan brindarme.
Saludos!
Isabel.

13 11 2015
Daniel Panaro

Hola Isabe buen día,
Seguramente estás perdiendo el puntero al número de OC después de crear el PDF. Dado que hasta ese punto está OK.

Te recomiendo que hagas un debug para que veas en qué momento se cambia el puntero a otro nro de OC.

Saludos,
Daniel.

16 11 2015
Anónimo

Gracias Daniel por tu respuesta! Haré lo que me estás sugiriendo. Ahora, por ser la funcionalidad estándar, no debería funcionar bien? A vos te funciona bien? o no lo tenés implementado?
Muchas gracias
Saludos
Isabel

17 11 2015
Daniel Panaro

Sí, la funcionalidad estándar funciona bien. El Idoc guarda la información básica y necesaria, en este caso de una orden de compra.
Pero cabe la posibilidad que, de acuerdo a la particularidad de cada negocio, esa información no sea suficiente. Entonces será necesario copiar el IDOC… hacerlo Z y adaptarlo a sus necesidades.

Saludos cordiales,
Daniel.

15 04 2016
Gonzalo

Daniel, tu has subido un logo al un correo enviado desde SAP

17 11 2015
Isabel

La particularidad es que liberan las Ordenes de Compra colectivamente, es decir por la me28. Estimo que ahi estará el problema. Pero tengo que probar en QAS, no tengo ningún desarrollo para esta funcionalidad, por eso me llama la atención que no esté funcionando bien.

Aprovecho para consultar otro tema…necesito llevar un movimiento que se registra por SD a PA…pero ese movimiento es una bonificación, es decir, no tengo clases de condiciones para llevar a PA…sino directamente el movimiento de stock.

Desde MM no tengo problema, pero no encuentro la manera que este movimiento de SD vaya a PA.

Muchas gracias nuevamente por cualquier información que puedan brindarme.
Saludos
Isabel.

1 08 2016
jhoana

buenas tardes, tengo un problema con un sapscript y es que al dar salida la primer vez llega al correo sin datos y si le doy dar salida la segunda vez ahi si llega con datos, pero no se a que se deba esto, por favor si alguien me puede ayudar gracias

2 08 2016
Daniel Panaro

Hola Jhoana,
Sugiero que hagas un debug paso a paso de tu programa para intentar ver por qué recién en la segunda ejecución envia el mail con datos.

Saludos,
Daniel.

30 09 2016
José Walter

Hola a todos, quiero saber cómo configurar en SAP para que la Hoja de Entrada de Servicios se envíe por correo al proveedor de forma automática. Es posible?
Gracias por su respuesta.

11 11 2016
Elizabeth

Hola Daniel, muchas gracias por el apoyo de antemano, queria realizarte una consulta , actualmente en la transacción SOST genera un registro por cada email que es enviado ya sea el destinatario principal ó los que van en copia, es posible que se genere un solo registro domde se indique todas los emails a enviar

15 11 2016
Amelia

Hola Daniel.
tenemos configurado el envío de mails desde el sistema y desde la transacción SOST vemos que salen correctamente pero el usuario no puede verlos en su bandeja de salida. Sólo puedes ver los que envía desde la transacción SBWP pero no así desde otras transacciones (F150, MIRO,..).
Es necesaria alguna configuración adicional para esto? He leído tu documentación, que está genial, pero no veo nada al respecto. Agradecería mucho tu ayuda.
Muchas gracias de antemano,
Un saludo,
Amelia

6 02 2017
Eder K. Sulca Paucar

Si alguien necesita descargar el Manual de configuración de SCOT de SCRIBD que el amigo Daniel Panaro compartió, puede usar la siguiente web para descargarla gratis:
https://es.scribd.com/doc/12753028/Scot-Configuration-Troubleshooting

6 02 2017
Daniel Panaro

Muchas gracias por el aporte Eder!

29 08 2017
sergio tapia

Hola, ayuda una transacción que me envié un correo avisando su renovación de contrato, incremento de renta, etc. (es para los acreedores de renta).

10 12 2018
online science tutor

Free Nclex Study

Enviar e-mails desde SAP | ABAP / SAP – Tips

7 04 2019
Marling

HOLA buen dia necesito ver si me puedes ayudar trabajo con sistema SAP en el area de Recursos Humanos hasta hace poco se imprian los recibos de pago del personal pero situacion pais nos lleva al ahorro de papel razon por la cual la opcion es el envio por correo de los mismos pasa que mi sistema no esta configurado para realizar dicha operacion quiero saber si me puedes orientar como creo la ruta y que debo hacer para configurar y enviar recibos de pago directo al personal por sistema Sap. atenta a tus comentarios y agradecida de antemano

8 04 2019
Daniel Panaro

Buenas tardes Marling,
Puedes escribirme por mail (dpanaro@gmail.com) así trato de orientarte sobre los pasos a seguir.

Saludos cordiales,
Daniel.

17 05 2019
Alej

Hola buen dia,
Una consulta la empresa cambio el proveedor de envio de correos realice los ajustes a nivel de datos de logon y puerto pero aun presento problemas visualizo la SOST y me dice que se envio con cod. 672 y 751 pero no llegan al correo destino.

Que podría hacer?
Gracias

10 02 2021
Alex M

Buenas tardes, consulta, necesito parametrizar que cada vez que se cree o se modifique un pedido de venta ZXXX por la VA01 y VA02, al momento de grabar salga de forma automática un mail sencillo a una dirección de correo, por favor, me podrían asesorar como lograr eso? de antemano gracias.

26 02 2021
Daniel Panaro

Buenas tardes Alex,
Podrías crear un Output Type, que en vez de imprimir un formulario, envié un mail cada vez que se cree o modifique una orden de venta.

O bien mediante la Exit de Orden de Venta. Al momento de guardar, envíe un mail.

Saludos cordiales,
Daniel.

31 03 2021
Lina Sanchez

Buenos dias Daniel,

Configure el envio para email externos de pedidos de compras, esta funcionando ok, los correos llegan a los proveedores perfecto, sin embargo, no he logrado que se imprima el texto en el cuerpo del email, le inclui en archivo en formato rtf y no sale, tambien le coloque manualmente el texto y tampoco se muestra en el cuerpo del email, me puedes ayudar por favor?

22 03 2022
Nancy

Hola buenas tardes,
Tengo una duda ya que debo de enviar varios correos, dependiendo de la división de RH, pero no tengo idea de cómo hacerle

Replica a Frank Cancelar la respuesta