REPORT ZSAPN_SEND_EMAIL. *Prepare Mail Object DATA: LO_SEND_REQUEST TYPE REF TO CL_BCS VALUE IS INITIAL. CLASS CL_BCS DEFINITION LOAD. DATA: LO_DOCUMENT TYPE REF TO CL_DOCUMENT_BCS VALUE IS INITIAL. "document object DATA : I_TEXT TYPE BCSY_TEXT. "Table for body DATA : W_TEXT LIKE LINE OF I_TEXT. "work area for message body DATA: LO_SENDER TYPE REF TO IF_SENDER_BCS VALUE IS INITIAL. "sender DATA: LO_RECIPIENT TYPE REF TO IF_RECIPIENT_BCS VALUE IS INITIAL. "recipient **Selection screen PARAMETERS P_MTART TYPE MARA-MTART. "material type input PARAMETERS : P_EMAIL TYPE ADR6-SMTP_ADDR. "Email input PARAMETERS: P_SUB TYPE CHAR50. "email subject PARAMETERS : P_SEND AS CHECKBOX. "send immediately flag ***Attachment data DATA : IT_MARA TYPE TABLE OF MARA, WA_MARA TYPE MARA. DATA : LV_STRING TYPE STRING, LV_DATA_STRING TYPE STRING, LV_XSTRING TYPE XSTRING. DATA: LIT_BINARY_CONTENT TYPE SOLIX_TAB, L_ATTSUBJECT TYPE SOOD-OBJDES. START-OF-SELECTION. LO_SEND_REQUEST = CL_BCS=>CREATE_PERSISTENT( ). * Message body and subject *Set body W_TEXT-LINE = 'This is the first tutorial of sending email using SAP ABAP programming by SAPNuts.com'. APPEND W_TEXT TO I_TEXT. CLEAR W_TEXT. W_TEXT-LINE = 'SAPNuts.com is the best SAP ABAP learning portal'. APPEND W_TEXT TO I_TEXT. CLEAR W_TEXT. LO_DOCUMENT = CL_DOCUMENT_BCS=>CREATE_DOCUMENT( "create document I_TYPE = 'TXT' "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 ). ***Set attachment SELECT * FROM MARA INTO TABLE IT_MARA UP TO 50 ROWS WHERE MTART = P_MTART. LOOP AT IT_MARA INTO WA_MARA. CONCATENATE WA_MARA-MATNR WA_MARA-MTART WA_MARA-MEINS WA_MARA-MBRSH WA_MARA-MATKL INTO LV_STRING SEPARATED BY CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB. CONCATENATE LV_DATA_STRING LV_STRING INTO LV_DATA_STRING SEPARATED BY CL_ABAP_CHAR_UTILITIES=>NEWLINE. ENDLOOP. **Convert string to xstring CALL FUNCTION 'HR_KR_STRING_TO_XSTRING' EXPORTING * codepage_to = '8300' UNICODE_STRING = LV_DATA_STRING * OUT_LEN = IMPORTING XSTRING_STREAM = LV_XSTRING EXCEPTIONS INVALID_CODEPAGE = 1 INVALID_STRING = 2 OTHERS = 3. IF SY-SUBRC <> 0. IF SY-SUBRC = 1 . ELSEIF SY-SUBRC = 2 . WRITE:/ 'invalid string ' . ENDIF. ENDIF. ***Xstring to binary CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' EXPORTING BUFFER = LV_XSTRING TABLES BINARY_TAB = LIT_BINARY_CONTENT. **add attachment CLEAR L_ATTSUBJECT . CONCATENATE 'Material Master Report' SY-DATUM INTO L_ATTSUBJECT. * Create Attachment TRY. LO_DOCUMENT->ADD_ATTACHMENT( EXPORTING I_ATTACHMENT_TYPE = 'XLS' I_ATTACHMENT_SUBJECT = L_ATTSUBJECT I_ATT_CONTENT_HEX = LIT_BINARY_CONTENT ). * CATCH cx_document_bcs INTO lx_document_bcs. 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. **Set recipient LO_RECIPIENT = CL_CAM_ADDRESS_BCS=>CREATE_INTERNET_ADDRESS( P_EMAIL ). "Here Recipient is email input p_email TRY. LO_SEND_REQUEST->ADD_RECIPIENT( EXPORTING I_RECIPIENT = LO_RECIPIENT I_EXPRESS = 'X' ). * CATCH CX_SEND_REQ_BCS INTO BCS_EXCEPTION . **Catch exception here ENDTRY. TRY. CALL METHOD LO_SEND_REQUEST->SET_SEND_IMMEDIATELY EXPORTING I_SEND_IMMEDIATELY = P_SEND. "here selection screen input p_send * 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. "mail sent successfully WRITE :/ 'Mail sent successfully'. ENDIF. * CATCH CX_SEND_REQ_BCS INTO BCS_EXCEPTION . *catch exception here ENDTRY.
Serkan AKKAVAK Computer Engineer ABAP Developer & SAP MM SD Consultant Contact : serkurumsal@yandex.com
Social Plugin