Truco 26. Configuración del envio de correo electrónico desde Sap.


Hoy vamos a hablar de  un tema antiguo y que aparece mucho en los foros, aunque, como casi siempre, con poca documentación en castellano. Me refiero a la configuración para permitir enviar correo electrónico desde un sistema Sap al exterior.

Desde la version 6.10 y superiores, el kernel de Sap contiene de forma nativa funciones para el procesamiento del correo via SMTP (incluidas en el ICM Internet Connection Manager). Vamos a ver la forma de preparar para que el sistema envie correo al exterior y algunos ejemplos de programación para generar estos envios desde nuestros propios desarrollos.

Nota: hemos de tener un servidor de correo interno (propio) o externo que permita el reenvio SMTP.

Configuración del Sistema.

En la nota 455140 del OSS se detallan paso por paso las tareas de configuración del sistema.

Ejemplo de envio de correo desde cualquier transacción:

1. Parametros del perfil de la instancia: a través de la transacción RZ10, incluiremos con el parámetro icm/server_port_X (donde X es un número secuencial para los diferentes puertos que configuremos: http, https, smtp, etc) el número de puerto TCP/IP (25 por defecto) y el protocolo (SMTP).

2. Activación de servicios: a través de la transacción SICF, comprobaremos que tenemos nuestro nodo SMTP configurado y activado. Aquí se relaciona el servicio con el puerto del ICM que hemos configurado en el paso anterior.

3. Configuración del Sap Connect: a través de este paso conectamos el nivel de aplicación (por ejemplo Sap Office) con el nivel ICM (nivel técnico). La gestión de esta configuración se realiza desde la transacción SCOT. Hay que realizar la configuración en cada mandante. Siempre se crea de forma automática un nodo SMTP, que tendremos que ajustar para indicarle los parametros del servidor de correo saliente que utilizaremos para enviar los correos desde la pasarela Sap.

Haciendo donde clic en el nodo SMTP configuraremos la IP y el puerto del servidor de correo saliente, si hay que realizar alguna conversión de codigos de pagina (juegos de caracteres) y los tipos de dirección soportados (en este caso Internet).

A nivel de detalle, configuraremos los dominios a los que se pueden enviar correos (* sera a todos), y los formatos de envio de los documentos enviados de Sap (al enviar formulario o listados por correo, aquí indicamos en que formato se construiran los anexos que los contengan: pdf, txt, htm, etc).

La transacción SCOT también nos permite monitorizar los correos que estan en cola e iniciar los procesos de envio (y planificar el Job de envio automatico de correos, que se ejecutara con la regularidad deseada para que los correos vayan saliendo de la cola interna a la cola del servidor de correo).

4. Monitorización del envio de correos externos: con la transacción SOST podemos gestionar los correos que tenemos en cola para envio externo: ver correos pendientes y enviados, visualizar los mensajes, analizar errores, etc.

5. Asignación de cuentas de correo a los usuarios del sistema: estas cuentas serán las utilidas con remitentes de los correos que salgan al exterior. Desde la transacción SU01, habra que indicar en todos los usuarios que vayan a enviar correo su cuenta, que sea utiliza como remitente de los correos que se envien.

Envio de correo desde las aplicaciones.

Una vez realizada toda la configuración, ya podremos enviar correos de la forma habitual:

  • Sap Office: desde la transacción SBWP podremos crear nuestros mensajes, que podrán incluir usuarios Sap (que recibiran los mensajes en el propio Sap a través de la misma transacción) o bien a destinatarios externos (indicado su cuenta de correo electrónico).
  • Aplicaciones: en todos los informes donde tengamos disponible la opción de menú Lista –> Enviar, podremos crear un mensaje en el cual se anexara como documento el listado o tabla ALV que estemos procesando.

Envio de correo desde nuestros desarrollos.

Tenemos multitud de formas de poder enviar correos en nuestros programas. En la Wiki del SDN de Sap hay una completa lista.

Templates de ejemplo proporcionados por Sap:

SAP provides the following programs, which are in fact templates because they can't be executed as is (email is hardcoded for example):
  • BCS_EXAMPLE_1: send a simple text provided as an internal table of text lines to joe.doe@crazy-company.com
  • BCS_EXAMPLE_2: send a simple text provided as an internal table of text lines and text attachment in form of text lines itab to fax DE 09999-123456
  • BCS_EXAMPLE_3: send a simple text provided in an internal table of text lines and an additional note to SY-UNAME
  • BCS_EXAMPLE_4: send a simple text provided in an internal table of text lines recipients are selected in dialogue (default joe.doe@crazy-company.com)
  • BCS_EXAMPLE_5: a simple text provided in an internal table of text lines and an attached MS word document provided in internal table SOLIX_TAB (document retrieval has to be coded) to joe.doe@crazy-company.com
  • BCS_EXAMPLE_6: enter customer, carrier (flight demo data) and email, and generate corresponding FP_TEST_03 adobe form, and send it as attachment to the email
  • SENDLIST_BCS: provided as attachment in SAP Note 190669 - Sending lists using SAPconnect, it uses SO_DOCUMENT_SEND_API1
  • SENDLIST_BCS: provided as attachment in SAP Note 190669 - Sending lists using SAPconnect, it uses CL_BCS
  • ZSSO_DOCUMENT_SEND_API1_46 and ZSSO_DOCUMENT_SEND_API1_610: provided as attachment in SAP Note 609696 - SAPoffice: Error in documentation (SO_DOCUMENT_SEND_API1). There are 2 versions, one for 4.6C, and one for 6.10 and above, the difference between the 2 is only the addition of COMMIT_WORK parameter for 6.10 version. Both call SO_DOCUMENT_SEND_API1.
  • RSWNSENDMAIL1: demo of SO_NEW_DOCUMENT_ATT_SEND_API1.

Ejemplos de programas del SDN, utilizando los siguientes elementos:

Basicamente, tenemos programas que utilizan los módulos de función (SO), que están obsoletos (aunque se pueden utilizar) y aquellos que utilizan la programación orientada a objetos (con la clase CL_BCS). Os recomiendo acceder a los links si quereis profundizar en los temas y analizar los ejemplos de desarrollo.

Referencias:

  • Postalmethods.com: configuración del envio de correo saliente desde Sap.
  • Thomas Jung: envio de correo desde Abap en version 6.10 y superiores.
  • Thomas Jung: envio de correo desde Abap en versiones 4.6D e inferiores.
  • Thomas Jung: recepcion de correo en Sap y su procesamiento en Abap.
  • Dataxstream.com: configuración de Sap connect.
  • Snippets: envio de correo desde Abap usando programacion orientada a objetos.
  • Wiki SDN: resumen de elementos Abap para envio de correo electronico (modulos de función).
Esta entrada fue publicada en Abap, Sap Basis. Guarda el enlace permanente.

31 respuestas a Truco 26. Configuración del envio de correo electrónico desde Sap.

  1. José Sira dijo:

    Un saludo ante todo y felicitándote por tu página la cual ayuda en mucho. Mi duda es la siguiente. Ya configure en envió automático de la orden de compras luego de que se grabe si no entran en estrategia de liberación si cae en estrategia solo se envía luego de que la liberen todo bien. pero ahora se me solicita que como el envió de la retención va a un departamento de la empresa proveedora y la orden de compra a otro. departamento. Entonces en el maestro de proveedor habrá dos correos. como hago para que sao me tome el de compras para enviar la OC. Seguro de contar con tu respuesta me despido José Sira Consultor MM en venezuela. gracias

    • Victor dijo:

      Hola amigo Jose Sira, oye una pregunta como le hiciste para que se envie el correo automaticamente tan luego te liberen la OC, yo necesito enviarla la OC automaticamente tan luego me la liberen, pero a una cierta lista de direciones de correo no justamente la de mi provedor si no otras direcciones de usurios internos y algunas otras direcciones de correo.

  2. Yorleni dijo:

    Hola! gracias por el post, muy completo, gracias a este y a la nota de SAP 455140, he intentado configurar el envío de correos desde SAP, lo que necesitamos es solo que envíe, no que reciba. Creo un correo a enviar a alguna dirección y me da este error:
    Status received for this document:
    prueba

    Sent on:
    14.11.2012 14:07:45

    Sent by:
    Yorleni Jimenez

    Status for Recipient yorleni_jimenez@yahoo.com:
    Cannot process message; no node determined for yorleni_jimenez@YAHOO.COM

    Por favor si alguien me puede ayudar, según lo revisado acá y en la nota no debería faltarme nada.
    Mi correo es yorleni_jimenez@yahoo.com

    Gracias

    • Hola Yorleni:

      Necesitas tener un servidor de correo interno que te haga de pasarela para sacar el correo al exterior (internet). Esto no funciona enviando directamente a Yahoo o Google.

      Un saludo.

      • Yorleni dijo:

        Roberto, ese error ya lo solucioné, pero ahora tengo:
        Cannot process message in SAP System
        Message no. XS817
        Diagnosis
        Processing could not be continued due to a technical or configuration error in the SAP system.
        System Response
        Processing was terminated.
        Procedure
        Processing was terminated in the SAP system. The reason is given in the details below:
        Error during generation of MIME document

        Entonces, hay que crear la ruta en el servidor de correo, como dice la nota 455140?

      • Mira esta entrada en el SCN de Sap. Habla sobre tu error:

        https://scn.sap.com/message/9727163

        Un saludo.

      • Yorleni dijo:

        Gracias Roberto! no es exactamente el mismo error, pero verifiqué la transacción SMICM y efectivamente también yo tenía el campo del puerto SMTP en 0, así que agregué el parámetro rdisp/start_icm = TRUE y perfecto, ya me salió el puerto 25. Aún así no se solucionó el problema, sigue el mismo error exactamente. Voy a hablar con el administrador del servidor de correos para que agregue la ruta en el server a ver si esto me soluciona el error. Les mantengo informados.

        Gracias nuaevamente!

      • Yorleni dijo:

        Hola de nuevo!! para comentarles que ya solucioné ESE problema, ahora tengo otro jeje, Pero quiero dar los avances por si alguien más está pasando por esto.
        No tenía configurado el dominio por defecto, se hace acá:
        SCOT -> Settings -> Default domain.

        Ahora tengo el siguiente error:
        Sin entrega a yorleni_jimenez@yahoo.com, ya que autentificación es obligatoria
        Nº mensaje: XS853

        Diagnóstico
        El mensaje se ha procesado con éxito en el sistema SAP. El servidor de correo electrónico que debe recibir el mensaje para su posterior procesamiento solicita una autentificación. El sistema SAP no soporta este procedimiento. Por este motivo no se ha entregado el mensaje al destinatario yorleni_jimenez@yahoo.com.

        Información del sistema externo
        530 Authentication required

        Procedimiento
        Las parametrizaciones de administración deben modificarse. El servidor de correo electrónico parametrizado no puede solicitar autentificaciones.

        Este ya si parece ser que falta la configuración por parte del email server, voy a investigar un poco. Roberto, si tienes alguna idea se te agradece.

      • Hola Yorleni:

        Esto es lo que te comentaba en mi anterior respuesta. Para poder enviar desde Sap necesitas un servidor de correo que te haga de pasarela que no necesite autentificacion. Por eso te decia lo de que tenia que ser tu servidor de correo interno, que tengais dentro de la misma empresa. y el correo desde Sap saldrá a traves de este servidor de correo.

        pero no te vale hacerlo a traves de un servidor tipo yahoo, google o hotmail, que requieren autentificación para poder enviar correo.

        Un saludo.

      • Yorleni dijo:

        Hola Roberto, yo estoy haciendo las pruebas con mi servidor de correo de la empresa, mail.miempresa.com y en la SU01 de mi usuario tengo mi cuenta yjimenez@miempresa.com. Las pruebas de los correos que envío si lo estoy haciendo a yahoo, a mi cuenta personal, para confirmar su llegada, cuando funcione, como en yahoo llega todos los correos, en cambio en mi cuenta de la empresa muchos correos son marcados como spam y no llegan. Me expliqué?

      • Hola de nuevo:

        Cuando se envian los correos desde Sap, Sap es una mera pasarela hacia tu servidor de correo. TU servidor de correo es el que procesa lo que Sap le envia y decide si lo lleva a Spam o no (según las reglas antispam).

        Eso ya no tiene nada que ver con Sap.

        Un saludo.

      • Yorleni dijo:

        Mil gracias Roberto 😀 leí que si, deben tener una relación de confianza y según entiendo en el parámetro icm/server_port_1 debo colocar la IP del servidor de correos. Nosotros tenemos el servidor de correos contratado con una empresa que nos brinda el servidor, ya subí un caso para que puedan realizar dicha configuración en el server y me pasen la IP para terminar la configuración. Espero que con esto ya se me solucionen todos los problemas jeje. Mil gracias de nuevo y muy útil tu ayuda. Comentaré de nuevo cuando ya tenga configurado lo que falta.

      • Yorleni dijo:

        Hola Roberto! el servidor exchange de mi cliente requiere autenticación, por supuesto no me funciona mi configuración, me da error, pero sabes de alguna nota o documentación que diga que SAP no soporta la configuración para poder tener yo un respaldo y que ellos deban realizar algo en su servidor para que funcione. Te dejo el error por si ves que este es de otra configuración faltante:

        Mensaje no puede transferirse definitivamente a nodo SMTP por error conexión
        Nº mensaje: XS816

        Diagnóstico
        Debido a una avería técnica no ha sido posible establecer la conexión con el destino XXXX.local: 25. En consecuencia, el mensaje no ha podido transferirse al nodo SMTP.

        Actividades en el sistema
        El sistema no ha podido transferir el mensaje.
        Información adicional del nodo utilizado (si está disponible, en el idioma de sistema del nodo):

        Procedimiento
        Verifique la conexión del Sistema SAP con el nodo SMTP. Posiblemente el nodo no esté asignado al destino correcto. En caso necesario, corrija este error en el Customizing.
        Para mayor seguridad, debería efectuar un rerouting provisional en otro nodo en el sistema operativo productivo.
        Informe al responsable del sistema.

      • Yorleni dijo:

        Hola de nuevo Roberto, ese error lo solucioné, era un error en el nombre del servidor de email en la transacción SCOT. Ahora bien, ya envía los correos a las cuentas internas del clientes pero para cuentas externas no funciona. estamos buscando la configuración que debe tener el exchange para direccionarlas afuera.

        Gracias

  3. Carlos dijo:

    Buenas tardes, sabes que me sale el siguiente error al enviar un correo Sin entrega a servimaniaventas@gmail.com, ya que el
    destinatario es desconocido
    lo extraño es que ayer se envio un correo por esta misma via (sost) y no tuve problemas que puede ser???

    saludos.

  4. dar dijo:

    Spot on with this write-up, I seriously feel this website needs much more attention.
    I’ll probably be back again to read through more, thanks for the info!

  5. Hola Roberto, quizas me puedas ayudar. Ya tengo configurado el envio de mensajes de OC despues de liberar, se envian automaticamente al proveedor, hasta ahi todo perfecto. Lo que yo necesitaria ahora es que se envie tambien una copia de ese mail, a la casilla del comprador que genero el pedido de compra.
    Me podras dar una mano por favor?
    Gracias!!

    • Hugo dijo:

      Estimado,
      Es posible me envíes la configuración que hiciste para el envío automático de OC a proveedor?
      Asimismo, pudiste lograr enviar una copia al generador del pedido?

      Desde ya, estaré muy agradecido de tu gentil respuesta.

      Saludos,

      Hugo.

  6. Karla V. dijo:

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

  7. mireia dijo:

    Hola Roberto, nosotros tenemos configurado el envio de mails y nos va bien. Una de las opciones es mandar mails a los clientes cuando se realiza la fra. Para ello en la ficha del cliente tenemos puesto el mail. Puedo poner 2 mails o más, pero ¿cómo puedo hacer para que mande a todos los mails que ponga en la ficha del cliente?

    gracias

    mireia

  8. Jesus G dijo:

    Hola Roberto, nosotros tenemos configurado el envio de emails, pero nos hemos dado cuenta que en algunas ocaciones en los avisos de pago, no se genera el correo en algunos proveedores, como que al generar los pagos, a partir de x registro, ya no se generan los envios. Como puedo revisar que esta pasando, para realizar los ajustes necesarios. Me pudes dar algunos tips?
    Muchas Gracias
    Jesus

    • Eveline dijo:

      Hola Jesús como estas? Contame pudiste resolver este tema? por favor puedes darme tus impresiones, no logro que se disparen los email a los proveedores cuando le pagamos desde la F110. Gracias anticipadas, mi skype eveline.graterol

  9. Carlos Rios dijo:

    Hola Amigos, estamos tratando de implementar unos flujos mediante la transacción SBWP pero aunque el usuario tiene autorizada la transacción a través de un rol simple genera el mensaje de que no tiene autorización para la transacción. ademas de agregar la transacción a un rol es necesario configurar algo adicional?

    Desde ya muchas gracias

    • Hola Carlos:

      En esta transaccion, ademas de verificarse el objeto de autorizacion S_TCODE, se verifican tambien estos objetos:

      S_BDS_DS BC-SRV-KPR-BDS: Autorizaciones para set de documentos
      S_OC_DOC SAPOffice: Autorización para una actividad con documentos
      S_OC_FOLCR SAPoffice: Autorización para crear carpetas generales
      S_OC_ROLE SAPoffice: Propiedades del usuario SAPoffice
      S_OC_SEND Objeto de autorización para enviar
      S_OC_TCD SAPoffice: Autorizaciones de código de transacción
      S_WFAR_OBJ SAP ArchiveLink: Autorizaciones para acceder a documentos

      Seguramente por no tener el objeto S_OC_TCD te este dando el mensaje que no se tiene autorizacion a la transaccion.

      Un saludo.

  10. Carlos Martell dijo:

    Hola Roberto,
    Actualmente existe una necesidad en mi empresa de que se envíen automáticamente correos electrónicos hacia una cadena comercial, ya que es un requisito de dicha cadena recibir el correo de nuestra parte para proceder a realizarnos el pago correspondiente.
    Lo que se tiene que enviar en el correo electrónico son los archivos .xml correspondientes a las facturas hacia la cadena, así como notas de crédito referenciadas a dichas facturas. De tal manera que cada correo contendría un .xml con sus correspondientes notas de crédito (también en formato .xml).
    Quisiera saber si esto es posible? Con un cuerpo de correo (texto) diferente para cada correo enviado a la cadena, con un asunto distinto para cada correo también…
    Lo que me causa mucha duda es cómo el sistema podrá darse cuenta que para alguna factura en particular ya se han generado sus correspondientes notas de crédito y en ese momento disparar o detonar el correo…?
    Muchas gracias por tu ayuda y orientación.
    Saludos.

  11. Buenas tardes Roberto,

    Excelente sitio de internet, he podido aprender muchas cosas de él. Por ahora se configuró el envío de correo, pero tenemos un problema. Para algunos usuarios se envía correctamente pero para otros, que tienen en la transacción SU01 un correo, ejemplo agomez@ph.com.mx; pero cuando revisamos en la sost aparece que se envía a uno diferente, ejemplo: dummy123@ph.com.mx

    tendrás idea de por qué pasa esto?

    Gracias!! y buena tarde

  12. Oscar Tarazona dijo:

    Buen día
    Señor Roberto

    Cordial saludo, quisiera que me asesorara.
    Es que tengo un tema con el envío de peticiones de ofertas automáticamente al proveedor vía correo electrónico; me podrías apoyar con esta situación para que le lleguen las peticiones a los proveedores seleccionados. Gracias

  13. Basilio Peraza dijo:

    Buenos dias,
    Roberto queria hacerte una pregunta el tema es que no me guarda el trace de los envíos, me voy a la transacción sost/utilidades/seleccion de trace y me muestra los envíos pero cuando entro en alguno no hay contenido del trace ni los guarda en la carpeta local de logs del servidor, se te ocurre algo? muchas gracias de ante mano

    SAludos y gracias

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s