Showing posts with label Email. Show all posts
Showing posts with label Email. Show all posts

Friday, December 23, 2011

Send Email from ABAP

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