ABAP: Envio de email con Report

En el siguiente tutorial “ABAP: Envio de email con Report” veremos cómo enviar un email a varios receptores con un programa ABAP, para ello utilizaremos la clase CL_BCS.

Comprobaremos que el correo se ha enviado correctamente con la transacción SOST (explicado abajo)

 

Lógica del programa

  • El usuario introducirá las direcciones de correo electrónico a quienes se enviará el correo en un Select-Option
  • Recogeremos los emails y los añadiremos a la tabla de receptores
  • Crearemos el contenido del correo:
    • Cuerpo del correo
    • Sujeto del correo
  • Indicaremos el remitente del email
  • Indicaremos los receptores del email (Con la tabla anterior)
  • Enviaremos el email y comprobaremos que se han enviado correctamente

 

Código

TABLES: adr6.

TYPES: t_soli_t      TYPE TABLE OF soli.

DATA: li_addr        TYPE bcsy_smtpa,
      lcl_send_email TYPE REF TO cl_bcs,
      li_message     TYPE t_soli_t,
      lw_message     LIKE LINE OF li_message,
      lv_subject     TYPE so_obj_des,
      lcl_document   TYPE REF TO cl_document_bcs,
      lcl_recipient  TYPE REF TO if_recipient_bcs,
      lv_sent_to_all TYPE os_boolean,
      lcl_sender     TYPE REF TO cl_cam_address_bcs,
      lv_sender      TYPE adr6-smtp_addr.

SELECT-OPTIONS: s_emails FOR adr6-smtp_addr NO INTERVALS.

FIELD-SYMBOLS: <fs_mail> LIKE LINE OF s_emails,
               <fs_addr> LIKE LINE OF li_addr.

* Recoge los emails y los añade a la tabla de destinatario
  LOOP AT s_emails[] ASSIGNING <fs_mail>.
    APPEND <fs_mail>-low TO li_addr.
  ENDLOOP.

* Inicialización de la clase
  lcl_send_email = cl_bcs=>create_persistent( ).

* Cuerpo del email
  lw_message-line ='<b>Cuerpo del email</b>'.
  APPEND lw_message TO li_message.

* Crear documento
  lv_subject = 'Sujeto del email'.

  lcl_document =  cl_document_bcs=>create_document( i_type    =  'HTM'
                                                    i_subject =  lv_subject
                                                    i_text    =  li_message ).

* Enviar documento al email
  lcl_send_email->set_document( lcl_document ).

* Añadir remitente
  lv_sender = 'sender@email.com'.
  lcl_sender = cl_cam_address_bcs=>create_internet_address( lv_sender  ).
  lcl_send_email->set_sender( i_sender = lcl_sender ).

* Añadir destinatarios al email
  LOOP AT li_addr ASSIGNING <fs_addr>.
    lcl_recipient = cl_cam_address_bcs=>create_internet_address( <fs_addr> ).
    lcl_send_email->add_recipient( i_recipient = lcl_recipient ).
  ENDLOOP.

* Enviar email
  lv_sent_to_all = lcl_send_email->send( i_with_error_screen = 'X' ).
  COMMIT WORK.

  IF lv_sent_to_all EQ 'X'.
*   Enviado Correctamente
  ELSE.
*   Error al enviar
  ENDIF.

 

Comprobación en SOST

Con la transacción SOST podremos ver los emails enviados SAP, al acceder en nuestro caso vemos lo siguiente:

  • Filtrado por fecha y hora de envío de email
  • Listado con los emails que cumplan con las condiciones de filtrado con los siguientes parámetros
    • Status: Las posibles opciones son: Verde (Enviado correcto), Amarillo (En espera) y Rojo (Error)
    • Forma de envío: Método de envío de email
    • Titulo documento: Texto introducido como sujeto del email (lv_subject)
    • Emisor: Correo del emisor del email (lv_sender)
    • Destinatario: Destinatario del email, se creará una entrada por cada destinatario (s_emails[])
    • Fecha Envío: Fecha del envío
    • Hora Envío: Hora del envío
    • Mensaje: Código del mensaje para el campo Status

Para visualizar el contenido del email lo seleccionaremos en el ALV y pulsaremos en el icono de las gafas (visualizar Documento)

Transacción SOST

Contenido del email en “Visualizar Documento”

 
Para ver mas tutoriales de SAP, pulse en el siguiente enlace: Listado de tutoriales

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *