Sample form to send email from ABAP using BCS method
FORM sub_send_mail.
DATA: l_message TYPE soli_tab,
l_send_result TYPE c,
l_cnt TYPE i,
l_doc_len TYPE so_obj_len,
l_subject(50) TYPE c,
l_email_body TYPE soli,
lo_sender TYPE REF TO cl_sapuser_bcs,
lo_receiver TYPE REF TO if_recipient_bcs,
lo_email TYPE REF TO cl_bcs,
lo_email_body TYPE REF TO cl_document_bcs,
lx_exception TYPE REF TO cx_bcs,
l_email_id TYPE ad_smtpadr.
* Fill the Subject Text
l_subject = 'Subject Line'.
REFRESH: l_message.
CLEAR: l_email_body.
l_email_body = '<html>'.
APPEND l_email_body TO l_message.
CLEAR: l_email_body.
l_email_body = '<body>'.
APPEND l_email_body TO l_message.
CLEAR: l_email_body.
l_email_body = '<p style="FONT-FAMILY: arial; FONT-SIZE: 12px">'.
APPEND l_email_body TO l_message.
CLEAR: l_email_body.
CONCATENATE 'Vamsi wants to send an email'
'using BCS'
INTO l_email_body SEPARATED BY space.
APPEND l_email_body TO l_message.
CLEAR: l_email_body.
l_email_body = '<br/>'.
APPEND l_email_body TO l_message.
CLEAR: l_email_body.
l_email_body = '<br/>'.
APPEND l_email_body TO l_message.
CLEAR: l_email_body.
CONCATENATE 'Second Line'
'</p>'
INTO l_email_body SEPARATED BY space.
APPEND l_email_body TO l_message.
CLEAR: l_email_body.
l_email_body = '</body>'.
APPEND l_email_body TO l_message.
CLEAR: l_email_body.
l_email_body = '</html>'.
APPEND l_email_body TO l_message.
CLEAR: l_email_body.
TRY.
lo_email = cl_bcs=>create_persistent( ).
* Get the length of the line
CLEAR l_cnt.
DESCRIBE TABLE l_message LINES l_cnt.
READ TABLE l_message INTO l_email_body INDEX l_cnt.
l_doc_len = ( l_cnt - 1 ) * 255 + STRLEN( l_email_body ).
lo_email_body = cl_document_bcs=>create_document(
i_type = 'HTM'
i_text = l_message
i_length = l_doc_len
i_subject = l_subject
i_language = sy-langu ).
lo_email->set_document( lo_email_body ).
* Sender - System User
lo_sender = cl_sapuser_bcs=>create( sy-uname ). "Use WF-BATCH for workflow batch
lo_email->set_sender( i_sender = lo_sender ).
lo_email->set_status_attributes( i_requested_status = 'E' ). "needed to avoid read receipts.
* Receiver Employee Email ID
l_email_id =
'receiver@abc.com'.
lo_receiver =
cl_cam_address_bcs=>create_internet_address( l_email_id ).
lo_email->add_recipient( i_recipient = lo_receiver
i_express = abap_true ).
lo_email->set_send_immediately( abap_true ).
lo_email->send( EXPORTING
i_with_error_screen = gc_checked
RECEIVING
result = l_send_result ).
IF l_send_result = abap_true.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = abap_true.
ENDIF.
CATCH cx_bcs INTO lx_exception.
ENDTRY.
ENDFORM. " SEND_EMAIL