Hi, im gonna show you how to send mail with excel attachment in sap abap.
Main code
REPORT zcrm_test_33.
PERFORM get_data.
PERFORM send_excel TABLES lt_order USING 'Mail Subject'.
Definitions
TYPES : BEGIN OF ty_order,
object_id TYPE crmt_object_id_db,
process_type TYPE crmt_process_type_db,
posting_date TYPE crmt_posting_date,
END OF ty_order,
t_body_msg TYPE solisti1.
DATA: w_body_msg TYPE t_body_msg.
DATA : w_cnt TYPE i.
DATA: i_body_msj TYPE STANDARD TABLE OF t_body_msg.
DATA: lt_order TYPE TABLE OF ty_order,
ls_order TYPE ty_order,
lv_subject TYPE so_obj_des.
Get data from crmd_orderadm_h
FORM get_data.
SELECT * INTO CORRESPONDING FIELDS OF TABLE lt_order FROM crmd_orderadm_h.
ENDFORM.
Send excel
FORM send_excel TABLES orders USING text.
DATA: mail_data LIKE sodocchgi1,
note_object LIKE thead-tdobject,
node_it LIKE thead-tdid,
send_mail_ok(1),
mail_note(1000) TYPE c,
flag LIKE sonv-flag,
ls_table TYPE ty_order,
receivers LIKE somlreci1 OCCURS 0 WITH HEADER LINE,
it_attach TYPE STANDARD TABLE OF solisti1 INITIAL SIZE 0 WITH HEADER LINE,
attachment LIKE solisti1 OCCURS 0 WITH HEADER LINE,
packing_list LIKE sopcklsti1 OCCURS 0 WITH HEADER LINE,
message TYPE STANDARD TABLE OF solisti1 INITIAL SIZE 0 WITH HEADER LINE,
mail_content LIKE solisti1 OCCURS 0 WITH HEADER LINE.
DATA: ld_format TYPE so_obj_tp,
ld_attfilename TYPE so_obj_des,
ld_attdescription TYPE so_obj_nam.
CONSTANTS: con_tab TYPE c VALUE cl_abap_char_utilities=>horizontal_tab,
con_cret TYPE c VALUE cl_abap_char_utilities=>cr_lf.
"body of mail
PERFORM build_body_of_mail USING: 'Hi Dear,','You can find xls file in attachment.','Good luck!'.
data:
l_obj(11),
l_type(5),
l_date(15).
CONCATENATE 'ORDER ID' 'TYPE' 'DATE' INTO it_attach SEPARATED BY con_tab.
CONCATENATE con_cret it_attach INTO it_attach.
APPEND it_attach.
LOOP AT orders INTO ls_order .
l_obj = ls_order-object_id.
l_type = ls_order-process_type.
l_date = ls_order-posting_date.
CONCATENATE l_obj l_type l_date INTO it_attach SEPARATED BY con_tab.
CONCATENATE con_cret it_attach INTO it_attach.
" turkish character problems
* replace all OCCURRENCES OF 'Ş' in it_attach WITH 'S'.
APPEND it_attach.
ENDLOOP.
CLEAR: mail_data, mail_content, receivers.
REFRESH: mail_content.
READ TABLE it_attach INDEX w_cnt.
mail_data-doc_size = ( w_cnt - 1 ) * 255 + strlen( attachment ) .
mail_data-obj_name = 'SARPT'.
mail_data-obj_descr = text.
mail_data-obj_langu = sy-langu.
mail_data-sensitivty = 'F'.
REFRESH attachment.
attachment[] = it_attach[].
CLEAR : packing_list.
REFRESH packing_list.
"Describe the body of the message.
packing_list-transf_bin = space.
packing_list-head_start = 1.
packing_list-head_num = 0.
packing_list-body_start = 1.
DESCRIBE TABLE i_body_msj LINES packing_list-body_num.
packing_list-doc_type = 'RAW'.
APPEND packing_list.
CLEAR : packing_list.
"Create attachment notification
packing_list-transf_bin = 'X'.
packing_list-head_start = 1.
packing_list-head_num = 1.
packing_list-body_start = 1.
DESCRIBE TABLE attachment LINES packing_list-body_num.
ld_format = 'XLS'.
ld_attfilename = text.
ld_attdescription = 'DOSYA'.
packing_list-doc_type = ld_format.
packing_list-obj_descr = ld_attfilename.
packing_list-obj_name = ld_attfilename.
packing_list-doc_size = packing_list-body_num * 255.
packing_list-obj_langu = sy-langu.
APPEND packing_list.
" Receivers.
receivers-rec_type = 'U'.
receivers-com_type = 'INT'.
receivers-notif_read = ' '.
receivers-notif_del = ' '.
receivers-receiver = 'emreaydin1129@gmail.com'.
APPEND receivers.
CLEAR receivers.
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
document_data = mail_data
* PUT_IN_OUTBOX = ' '
commit_work = 'X'
IMPORTING
sent_to_all = flag
* NEW_OBJECT_ID =
TABLES
packing_list = packing_list
* OBJECT_HEADER =
contents_bin = attachment
contents_txt = i_body_msj
* CONTENTS_HEX =
* OBJECT_PARA =
* OBJECT_PARB =
receivers = receivers
EXCEPTIONS
too_many_receivers = 1
document_not_sent = 2
document_type_not_exist = 3
operation_no_authorization = 4
parameter_error = 5
x_error = 6
enqueue_error = 7
OTHERS = 8.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
ENDFORM.
FORM build_body_of_mail USING l_message.
w_body_msg = l_message.
APPEND w_body_msg TO i_body_msj.
CLEAR w_body_msg.
ENDFORM.
Result.



Yorum bırakın