Quantcast
Channel: SCN: Message List
Viewing all articles
Browse latest Browse all 3510

Re: Multiple pdf files zipped and zipped file should be emailed

$
0
0

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.

Viewing all articles
Browse latest Browse all 3510

Trending Articles