How to send an email using the BCS framework.
DATA: lo_email TYPE REF TO cl_bcs,
lo_document TYPE REF TO cl_document_bcs,
lo_recipient TYPE REF TO if_recipient_bcs,
lo_bcs_exp TYPE REF TO cx_bcs,
lt_message TYPE soli_tab,
lt_att_data TYPE soli_tab,
ls_msg_line LIKE LINE OF lt_message,
lv_data TYPE string,
lv_subject TYPE so_obj_des,
lv_att_name TYPE sood-objdes,
lv_msg TYPE bapi_msg
.
TRY.
lo_email = cl_bcs=>create_persistent( ).
CONCATENATE 'Sammelrechnung' me->mv_opbel INTO lv_subject.
ls_msg_line-line = 'Anbei Ihre Sammelrechnung in elektronischer Form.'.
INSERT ls_msg_line INTO TABLE lt_message.
lo_document = cl_document_bcs=>create_document(
i_type = 'HTM'
i_subject = lv_subject
i_text = lt_message
).
me->transform(
IMPORTING
ev_result = lv_data
).
lt_att_data = cl_document_bcs=>string_to_soli( lv_data ).
CONCATENATE me->mv_opbel '.xls' INTO lv_att_name.
lo_document->add_attachment(
i_attachment_type = 'XLS'
i_attachment_subject = lv_att_name
i_att_content_text = lt_att_data
) .
lo_email->set_document( lo_document ).
lo_recipient = cl_cam_address_bcs=>create_internet_address( iv_email_address ).
lo_email->add_recipient( i_recipient = lo_recipient ).
CALL METHOD lo_email->set_status_attributes
EXPORTING
i_requested_status = 'E'
i_status_mail = 'E'.
CALL METHOD lo_email->set_send_immediately( abap_true ).
CALL METHOD lo_email->send(
EXPORTING
i_with_error_screen = 'X'
).
COMMIT WORK.
CATCH cx_bcs INTO lo_bcs_exp.
lv_msg = lo_bcs_exp->get_text( ).
me->mo_log->add_free_text(
EXPORTING
iv_msgty = 'E'
iv_text = lv_msg
).
RAISE EXCEPTION TYPE zcx_sare_exception.
ENDTRY.</pre>