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