How to Send Email Using SAP Bcs Framework

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>
SAP  ABAP 

See also