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.


Technorati tags:


Acciones

Información

12 respuestas

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!!!

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…………

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

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.

Deja un comentario