Step1:Design selection-screen for email id input Normal
This tutorial explains you sending emails using SAP ABAP programming language.
Go to SE38, create a program ZSAPN_SEND_EMAIL, save it in a local object.
Design a screen to enter email id, email subject, send immediatly flag.PARAMETERS : P_EMAIL TYPE ADR6-SMTP_ADDR. "Emai input PARAMETERS: P_SUB TYPE CHAR50. "email subject PARAMETERS : P_SEND AS CHECKBOX. "send immediatly flag
Step2:Set email subject and body Important
Declare and prepare email object for cl_bcs
*Prepare Mail Object DATA: LO_SEND_REQUEST TYPE REF TO CL_BCS VALUE IS INITIAL. CLASS CL_BCS DEFINITION LOAD. LO_SEND_REQUEST = CL_BCS=>CREATE_PERSISTENT( ).
Technically email is a binary document, we need to add document to the email object.Document contains parameters like email type (HTM, TXT etc), email subject, email body.
EMAIL BODY: We can send email body of 255 characters per line, email body might be more than 255 characters, so we need to pass it in the form of lines in an internal table (see example below).
* Message body and subject 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 *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. *Create Email document 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 parameterPass the email document with subject, body and type to send request.
* Pass the document to send request LO_SEND_REQUEST->SET_DOCUMENT( LO_DOCUMENT ).
Step3:Set Sender and Recipient to send request Important
For every email, there is a sender and reciever (recipient), set sender and recipient for send request.
TRY...ENDTRY
is used for exception handleing in Object Oriented programming.
*Set Sender DATA: LO_SENDER TYPE REF TO IF_SENDER_BCS VALUE IS INITIAL. 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 for the send request
**Set recipient DATA: LO_RECIPIENT TYPE REF TO IF_RECIPIENT_BCS VALUE IS INITIAL. 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.
Step4:Set send email for send request Important
In some servers network management team (BASIS) set mail sending frequency to reduce server load in SMTP(Simple Mail Transfer Protocol) configuration, in such cases the mails will be sent based on server load (may be some time later depends on server load)...In such cases we can set send immediately for the send request.
*Set immediate sending TRY. CALL METHOD LO_SEND_REQUEST->SET_SEND_IMMEDIATELY EXPORTING I_SEND_IMMEDIATELY = 'X'. * CATCH CX_SEND_REQ_BCS INTO BCS_EXCEPTION . **Catch exception here ENDTRY.Finally send email using send request.
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.
Step5:Code to send email in SAP ABAP programming Important
The final code for sending email in SAP ABAP using CL_BCS class is below.
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_EMAIL TYPE ADR6-SMTP_ADDR. "Emai input PARAMETERS: P_SUB TYPE CHAR50. "email subject PARAMETERS : P_SEND AS CHECKBOX. "send immediatly flag 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 ). 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.