CL_BCS Class is the standard new SAP to handle and send email.
CL_BCS allows to
– Attach files to email
– Build the HTML/raw of body.
– Set email’s Senders & Receiver
– Send email …
This post is a step by step SAP ABAP Tutorial how to sends email from SAP with the CL_BCS in ABAP with sample ABAP code.
Table of Contents
SAP Send Email CL BCS Class
The different steps are:
1- Create BCS Document
1 2 3 4 |
cl_document_bcs=>create_document( i_type ='HTM' i_hex = lt_body_hex i_subject = lv_mail_subject ) |
2- Set the e-mail address of the sender
1 2 3 4 |
IF NOT lv_sender_email IS INITIAL. lo_sender = cl_cam_address_bcs=>create_internet_address( i_address_string = lv_sender_email ). ENDIF. |
Or you can set the connected user as a sender with
1 |
lo_sender = cl_sapuser_bcs=>create( sy-uname ). |
Check if an email is value in ABAP Two ways to Check if email is valid in ABAP : Function Vs Regex
3- Set the receiver
1 2 3 |
lo_recipient = cl_cam_address_bcs=>create_internet_address( i_address_string = lv_email ). lo_send_request->add_recipient( lo_recipient ) . |
If you want to retrieve the email address of an user,
use the function module “HR_FBN_GET_USER_EMAIL_ADDRESS”
1 |
lo_sender = cl_sapuser_bcs=>create( sy-uname ). |
4- Assign document to the send request
Add the sender to the send request
1 |
lo_send_request->set_sender( lo_sender ).. |
5- Send mail CL BCS Class’s Send Method
1 2 |
lv_sent_to_all = lo_send_request->send( lv_with_error_screen ). |
Learn more about the new SAP ABAP with the following book ABAP Development for SAP HANA
ABAP Send Mail with CL_BCS Class

Here the complete code for Send Email CL_BCS ready to go.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
CLASS cl_bcs DEFINITION LOAD. "******************************************************" " SAP send mail with CL_BCS "******************************************************" DATA: lo_document TYPE REF TO cl_document_bcs. DATA: lx_document_bcs TYPE REF TO cx_document_bcs. DATA: lo_send_request TYPE REF TO cl_bcs. DATA: lo_sender TYPE REF TO if_sender_bcs. DATA: lv_sent_to_all TYPE os_boolean . DATA: lt_att_content_hex TYPE solix_tab . DATA: lt_message_body TYPE bcsy_text. DATA: lv_sender_email TYPE adr6-smtp_addr. DATA: lo_recipient TYPE REF TO if_recipient_bcs . DATA: lv_with_error_screen TYPE os_boolean . DATA: lv_length_mime TYPE num12. DATA: lv_mime_type TYPE w3conttype. DATA: lt_attachment TYPE solix_tab. DATA: lv_attachment_type TYPE soodk-objtp. DATA: lv_attachment_size TYPE sood-objlen. DATA: lv_attachment_subject TYPE sood-objdes. DATA: lt_body_hex TYPE solix_tab. DATA: lv_mail_subject TYPE so_obj_des. DATA: lv_type TYPE string. DATA: lv_extension TYPE string. DATA: lv_docid_str(12) . "-------------------------------------------" " Send Email "-------------------------------------------" TRY. lo_send_request = cl_bcs=>create_persistent( ). " Set the subjest of email "lv_mail_subject up to 50 c. " Send in HTML format lo_document = cl_document_bcs=>create_document( i_type = 'HTM' i_hex = lt_body_hex i_subject = lv_mail_subject ) . " add the document as an attachment IF lt_attachment[] IS NOT INITIAL . lv_attachment_size = lv_length_mime. lt_att_content_hex[] = lt_attachment[]. lv_attachment_subject = "Your Attachment Name" . lo_document->add_attachment( i_attachment_type = lv_attachment_type i_attachment_size = lv_attachment_size i_attachment_subject = lv_attachment_subject i_att_content_hex = lt_att_content_hex ). ENDIF. "****************************" " EMAIL "*****************************" " set the e-mail address of the sender: lo_sender = cl_sapuser_bcs=>create( sy-uname ). " set the e-mail address of the recipient LOOP AT lt_receiver ASSIGNING <fs_receiver>. lo_recipient = cl_sapuser_bcs=>create( sy-uname ) lo_send_request->add_recipient( lo_recipient ) . ENDLOOP. " assign document to the send request: lo_send_request->set_document( lo_document ). " add the sender: lo_send_request->set_sender( lo_sender ). MOVE space TO lv_with_error_screen. " SAP Send Email CL_BCS lv_sent_to_all = lo_send_request->send( lv_with_error_screen ). CATCH cx_document_bcs INTO lx_document_bcs. ENDTRY. |