Send email to a list of recipient. With many attachments.
FUNCTION ytest0001_03.
*"----------------------------------------------------------------------
*"*"Interfase local
*" IMPORTING
*" REFERENCE(IV_SUBJECT) TYPE SO_OBJ_DES OPTIONAL
*" REFERENCE(IT_BODY_TEXT) TYPE BCSY_TEXT OPTIONAL
*" REFERENCE(IT_PDF) TYPE YTESTT0004 OPTIONAL
*" REFERENCE(IT_RECIPIENTS) TYPE BCSY_SMTPA OPTIONAL
*" EXPORTING
*" REFERENCE(OV_SENT_TO_ALL) TYPE OS_BOOLEAN
*"----------------------------------------------------------------------
" *--------------------------------------------------------------------*
" Local Data
DATA lv_recipient TYPE ad_smtpadr.
DATA lv_sent_to_all TYPE os_boolean.
" Structures
DATA ls_pdf TYPE ytests0004.
" Tables
DATA lt_message_body TYPE bcsy_text.
" Objects
DATA lo_send_request TYPE REF TO cl_bcs.
DATA lo_document TYPE REF TO cl_document_bcs.
DATA lo_sender TYPE REF TO if_sender_bcs.
DATA lo_recipient TYPE REF TO if_recipient_bcs.
DATA lx_document_bcs TYPE REF TO cx_document_bcs.
" *--------------------------------------------------------------------*
" Create send request
lo_send_request = cl_bcs=>create_persistent( ).
" *--------------------------------------------------------------------*
" Create message body and subject
" Putt your text into the document
lt_message_body[] = it_body_text[].
lo_document = cl_document_bcs=>create_document(
i_type = 'RAW'
i_text = lt_message_body
i_subject = iv_subject
).
" *--------------------------------------------------------------------*
" Add attachments
LOOP AT it_pdf INTO ls_pdf.
TRY.
lo_document->add_attachment(
EXPORTING i_attachment_type = ls_pdf-file_type
i_attachment_subject = ls_pdf-file_name
i_attachment_size = ls_pdf-file_size
i_att_content_text = ls_pdf-file_text
).
CATCH cx_document_bcs INTO lx_document_bcs.
ENDTRY.
ENDLOOP.
" *--------------------------------------------------------------------*
" Pass the document to send request
lo_send_request->set_document( lo_document ).
" *--------------------------------------------------------------------*
" Create sender
lo_sender = cl_sapuser_bcs=>create( sy-uname ).
" Set sender
lo_send_request->set_sender( lo_sender ).
" *--------------------------------------------------------------------*
" Create recipients
LOOP AT it_recipients INTO lv_recipient.
lo_recipient = cl_cam_address_bcs=>create_internet_address( lv_recipient ).
" Set recipient
lo_send_request->add_recipient( lo_recipient ).
ENDLOOP. " IT_RECIPIENTS
" *--------------------------------------------------------------------*
" Send email
lo_send_request->send(
EXPORTING i_with_error_screen = 'X'
RECEIVING result = lv_sent_to_all
).
" *--------------------------------------------------------------------*
" Result
ov_sent_to_all = lv_sent_to_all.
COMMIT WORK.
ENDFUNCTION.
* Structure: YTESTS0004
* FILE_NAME TYPE SO_OBJ_DES
* FILE_TYPE TYPE SO_OBJ_TP
* FILE_SIZE TYPE SO_OBJ_LEN
* FILE_TEXT TYPE SOLI_TAB
* Type Table YTESTT0004
* Line Type: YTESTS0004