You are on page 1of 2

REPORT ZSEND_MAIL_ATTACHEMENT.

TYPES : BEGIN OF ty_data,


opbel type E_PRINTDOC,
END OF ty_data.
data : lt_data type TABLE OF ty_data,
lw_data type ty_data.
data: gc_tab TYPE c VALUE cl_bcs_convert=>gc_tab,
gc_crlf TYPE c VALUE cl_bcs_convert=>gc_crlf,
gt_tab type soli_tab,
gw_tab type soli,
gt_string type string .
data : solix_tab type solix_tab,
ev_size type SO_OBJ_LEN .
DATA: lo_send_request TYPE REF TO cl_bcs,
lo_document TYPE REF TO cl_document_bcs,
lo_recipient TYPE REF TO if_recipient_bcs,
lo_bcs_exception TYPE REF TO cx_bcs,
ld_subject TYPE so_obj_des,
lf_ok TYPE abap_bool,
text TYPE bcsy_text.
PARAMETERS : p_email type AD_SMTPADR.
START-OF-SELECTION .
SELECT opbel FROM erdk into TABLE lt_data UP TO 10 ROWS.
CONCATENATE gt_string 'OPBEL' gc_crlf INTO gt_string.
loop at lt_data INTO lw_data.
CONDENSE lw_data-opbel.
CONCATENATE gt_string lw_data-opbel gc_crlf INTO gt_string.
ENDLOOP.

TRY.
CALL METHOD CL_BCS_CONVERT=>STRING_TO_SOLIX
EXPORTING
IV_STRING = gt_string
IV_CODEPAGE = '4103'
* IV_ADD_BOM =
IMPORTING
ET_SOLIX = solix_tab
EV_SIZE = ev_size.
CATCH CX_BCS .
MESSAGE e445(so).
ENDTRY.

ld_subject = 'Document List'.


TRY.
* init request
lo_send_request = cl_bcs=>create_persistent( ).

APPEND 'Dear Sir/Madam,' to text.


APPEND ' ' to text.
APPEND 'Please find Attachement' to text.
* set mail content
lo_document = cl_document_bcs=>create_document(
i_type = 'RAW'
i_subject = ld_subject
i_text = text ).
lo_send_request->set_document( lo_document ).
lo_document->add_attachment(
i_attachment_type = 'xls'
i_attachment_subject = 'DocumentNo'
i_attachment_size = ev_size
i_att_content_hex = solix_tab ).
lo_send_request->set_document( lo_document ).
* set e-mail recipient
lo_recipient = cl_cam_address_bcs=>create_internet_address(
i_address_string = p_email ).
lo_send_request->add_recipient(
i_recipient = lo_recipient ).
* status attributes
lo_send_request->set_status_attributes(
i_requested_status = 'E'
i_status_mail = 'E' ).
* send
lf_ok = lo_send_request->send( ).
IF lf_ok = abap_true.
COMMIT WORK.
ENDIF.
CATCH cx_bcs INTO lo_bcs_exception.
MESSAGE ID lo_bcs_exception->msgid TYPE 'S'
NUMBER lo_bcs_exception->msgno DISPLAY LIKE 'E'
WITH lo_bcs_exception->msgv1 lo_bcs_exception->msgv2
lo_bcs_exception->msgv3 lo_bcs_exception->msgv4.
RETURN.
ENDTRY.

You might also like