Send external PDF file as attachment

This blog describes basic steps for sending external PDF files like flyers as an attachment.

1. Where to store the external PDF at SAP?

There’re at least two easy options to save the external PDF files in the SAP system:

  • Save the PDF file to the MIME repository through SE80.

  • Save the PDF file to DMS through CV01N.

2. How to fetch the stored external PDF at SAP?

  • To get PDF contents in Xstring format from the MIME repository
DATA: lr_api TYPE REF TO if_mr_api, lv_pdf_cont TYPE xstring, lv_pdf_url TYPE string VALUE '/SAP/PUBLIC/TEST/flyer.pdf'. * Get PDF xstring from MIME repository lr_api = cl_mime_repository_api=>get_api( ). lr_api->get( EXPORTING i_url = lv_pdf_url IMPORTING e_content = lv_pdf_cont ).
  • To get PDF contents in Xstring format from DMS

Call Function module ‘CV120_DOC_CHECKOUT’ to fetch PDF contents at return table ptx_drao. Can refer to this.

3. Convert Xstring format to SOLIX_TAB and add attachments send by the BCS method.

 DATA: pdf_content TYPE solix_tab, document TYPE REF TO cl_document_bcs, lp_pdf_size TYPE so_obj_len, * Create document. document = cl_document_bcs=>create_document( i_type = 'HTM' i_text = it_message[] "Body of e-mail i_subject = lv_subject ). ... lp_pdf_size = xstrlen( lv_pdf_cont ). pdf_content = cl_document_bcs=>xstring_to_solix( ip_xstring = lv_pdf_cont ). lv_att_subject = 'Flyer File'. document->add_attachment( i_attachment_type = 'PDF' i_attachment_subject = lv_att_subject i_attachment_size = lp_pdf_size i_att_content_hex = pdf_content ).