Hi
Sure.
Here you are a sample code. Sorry for RAW style
Clean it and always Manage Exceptions
I've used a custom table where I've some files in RAWSTRING data format.
You'll have to generete your raw data from your pdfs by using conversion function SCMS_BINARY_TO_XSTRING
Hope to help
*&---------------------------------------------------------------------* *& Report ZRV_TEST_ZIP *& *&---------------------------------------------------------------------* *& *& *&---------------------------------------------------------------------* REPORT ZRV_TEST_ZIP. DATA: lo_zip TYPE REF TO cl_abap_zip, lv_xstring TYPE xstring, lv_zip_xstring TYPE xstring. CREATE OBJECT lo_zip. "Create instance * Convert your PDF binary data DATA: it_rs03al TYPE TABLE OF ZPP_RS03AL, fh_rs03al TYPE ZPP_RS03AL, l_name TYPE STRING. * Message body and subject DATA: LO_DOCUMENT TYPE REF TO CL_DOCUMENT_BCS VALUE IS INITIAL. DATA : I_TEXT TYPE BCSY_TEXT. DATA : W_TEXT LIKE LINE OF I_TEXT. DATA: P_SUB TYPE CHAR50 VALUE 'TEst Subject'. DATA: OUTPUT_LENGTH TYPE i, ft_zip_bin_data TYPE SOLIX_TAB." TYPE STANDARD TABLE OF X255. DATA : L_DATA TYPE STRING. DATA: LO_SENDER TYPE REF TO IF_SENDER_BCS VALUE IS INITIAL. DATA: LO_RECIPIENT TYPE REF TO IF_RECIPIENT_BCS VALUE IS INITIAL. DATA: L_ATTSUBJECT TYPE SOOD-OBJDES. * Convert the XSTRING to Binary table DATA: bcs_exception TYPE REF TO cx_bcs. DATA: i_email TYPE adr6-smtp_addr. *Prepare Mail Object DATA: LO_SEND_REQUEST TYPE REF TO CL_BCS VALUE IS INITIAL. CLASS CL_BCS DEFINITION LOAD. SELECT * FROM ZPP_RS03AL INTO CORRESPONDING FIELDS OF TABLE it_rs03al UP TO 5 ROWS WHERE FILE_EXT EQ 'PDF'. CHECK sy-subrc EQ 0. LOOP AT it_rs03al INTO fh_rs03al. l_name = fh_rs03al-FILE_NAME. CONCATENATE l_name '.PDF' INTO l_name. * Add file to the zip folder lo_zip->add( name = l_name content = fh_rs03al-RAW_DATA ). * Get the binary stream for ZIP file lv_zip_xstring = lo_zip->save( ). ENDLOOP. LO_SEND_REQUEST = CL_BCS=>CREATE_PERSISTENT( ). CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' EXPORTING buffer = lv_zip_xstring IMPORTING output_length = OUTPUT_LENGTH TABLES binary_tab = ft_zip_bin_data. *Set body W_TEXT-LINE = 'This is sending mail with pdfs zipped '. APPEND W_TEXT TO I_TEXT. CLEAR W_TEXT. W_TEXT-LINE = 'See zipped file'. APPEND W_TEXT TO I_TEXT. CLEAR W_TEXT. *Create Email document LO_DOCUMENT = CL_DOCUMENT_BCS=>CREATE_DOCUMENT( "create document I_TYPE = 'RAW' "Type of document HTM, TXT etc I_TEXT = I_TEXT "email body internal table I_SUBJECT = P_SUB ). "email subject here p_sub input parameter * Pass the document to send request LO_SEND_REQUEST->SET_DOCUMENT( LO_DOCUMENT ). CLEAR: L_DATA. CONCATENATE 'Zipped PDFS' SY-DATUM INTO L_DATA. L_ATTSUBJECT = L_DATA. TRY. LO_DOCUMENT->ADD_ATTACHMENT( EXPORTING I_ATTACHMENT_TYPE = 'ZIP' I_ATTACHMENT_SUBJECT = L_ATTSUBJECT I_ATT_CONTENT_HEX = ft_zip_bin_data ). ENDTRY. TRY. LO_SENDER = CL_SAPUSER_BCS=>CREATE( SY-UNAME ). "sender is the logged in user * Set sender to send request LO_SEND_REQUEST->SET_SENDER( EXPORTING I_SENDER = LO_SENDER ). * CATCH CX_ADDRESS_BCS. ****Catch exception here ENDTRY. i_email = 'test@asdaf.com'. LO_RECIPIENT = CL_CAM_ADDRESS_BCS=>CREATE_INTERNET_ADDRESS( i_email ). "Here Recipient is email input p_email TRY. LO_SEND_REQUEST->ADD_RECIPIENT( EXPORTING I_RECIPIENT = LO_RECIPIENT i_express = ' ' i_copy = ' ' i_blind_copy = ' ' ). CATCH CX_SEND_REQ_BCS INTO BCS_EXCEPTION . **Catch exception here ENDTRY. TRY. ** Send email LO_SEND_REQUEST->SEND( ). * EXPORTING * I_WITH_ERROR_SCREEN = 'X' ). COMMIT WORK. IF SY-SUBRC = 0. WRITE :/ 'Mail sent successfully'. ENDIF. CATCH CX_SEND_REQ_BCS INTO BCS_EXCEPTION . *catch exception here ENDTRY.