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
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
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
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
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”
lo_sender = cl_sapuser_bcs=>create( sy-uname ).
4- Assign document to the send request
Add the sender to the send request
lo_send_request->set_sender( lo_sender )..
5- Send mail CL BCS Class’s Send Method
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.
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.
