SAP发送邮件详解编程语言
FUNCTION ZEMAIL_TRIGGER.
* -
* * Local Interface:
* IMPORTING
* REFERENCE(CONTENT_SUBJECT) TYPE SO_OBJ_DES
* REFERENCE(ATTACHMENT_SUBJECT) TYPE SO_OBJ_DES
* REFERENCE(FILE_TYPE) TYPE SOODK-OBJTP OPTIONAL
* REFERENCE(NO_HEADER) OPTIONAL
* TABLES
* RECEPIENTS TYPE BCSY_SMTPA
* ITAB
* HEADER OPTIONAL
* CON_HEAD OPTIONAL
* -
type-pools: truxs.
data: l_text type char1024.
data: begin of it_text occurs 0,
text type char1024,
end of it_text.
data: l_lines type i,
l_size type sood-objlen. Size of Attachment
* Mail related
data: i_content type soli_tab, Mail content
i_attach type soli_tab. Attachment
data: l_send_request type ref to cl_bcs, E-Mail Send Request
l_document type ref to cl_document_bcs, E-Mail Attachment
l_recipient type ref to if_recipient_bcs, Distribution List
l_sender type ref to if_sender_bcs, Address of Sender
l_uname type salrtdrcpt, Sender Name(SY-UNAME)
l_bcs_exception type ref to cx_document_bcs, BCS Exception
l_addr_exception type ref to cx_address_bcs, Address Exception
l_send_exception type ref to cx_send_req_bcs. E-Mail sending Exception
*Constants *
constants: c_cr(1) type c value cl_abap_char_utilities= cr_lf. Line Feed for End-Of_line
data: c_tab(1). Tab Character
c_tab = cl_abap_char_utilities= horizontal_tab.
* if file_type = CSV .
* c_tab = , .
* endif.
data: c_ext type soodk-objtp value XLS . XLS Extension
if file_type is not initial.
c_ext = file_type.
endif.
* Preparing body of the Mail
move Dear All: to l_text.
append l_text to i_content.
move This Email is generated automatically by SAP. Please do not reply to this email. Kindly contact relevant IT staff. to l_text.
append l_text to i_content.
* Preparing contents of attachment with Change Log
field-symbols: lfs_table , Internal table structure
lfs_con . Field Content
field-symbols: alv_table , Internal table structure
alv_con . Field Content
data: l_con(200) type c. Field Content in character format
*** for CSV file
data: csvtab type truxs_t_text_data,
wa_csvtab(4096),
csvtab_new type truxs_t_text_data.
data: begin of tmp occurs 0,
txt(4096),
end of tmp.
data: seperator type c value , .
data : lv_xstring type xstring.
data : c_index like sy-tabix.
data : temp_binary_attach type solix_tab.
data : temp_text like it_text occurs 0 with header line.
data : it_binary_attach type solix_tab.
if file_type = CSV .
call function ZFTP_COMBINE_ITAB
exporting
no_header = no_header
file_type = CSV
seperator = seperator
* XMLDATA =
tables
it_fieldcat = header[]
itab = itab[]
it_title = con_head[]
binary_tab = it_binary_attach[]
* CHANGING
* CONVERT_TAB =
exceptions
conv_error = 1
others = 2
.
if sy-subrc 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
endif.
else.
* Header text
clear l_text.
refresh it_text.
if con_head[] is not initial.
clear l_text.
loop at con_head assigning lfs_table .
loop at header assigning alv_table .
assign component FIELDNAME of structure alv_table
to alv_con .
assign component alv_con of structure lfs_table
to lfs_con .
if sy-subrc ne 0.
else.
clear: l_con.
move lfs_con to l_con.
condense l_con.
if sy-tabix = 1.
clear: l_text.
move l_con to l_text.
else.
concatenate l_text l_con into l_text
separated by c_tab.
endif.
endif.
at last.
clear it_text-text.
it_text-text = l_text.
append it_text.
clear it_text.
endat.
endloop.
endloop.
endif.
if no_header = .
loop at header assigning lfs_table .
assign component SELTEXT_L of structure lfs_table
to lfs_con .
clear: l_con.
move lfs_con to l_con.
condense l_con.
if sy-tabix = 1.
clear: l_text.
move l_con to l_text.
else.
concatenate l_text l_con into l_text
separated by c_tab.
endif.
at last.
clear it_text-text.
it_text-text = l_text.
append it_text.
clear it_text.
endat.
endloop.
endif.
* Columns to be tab delimeted
clear l_text.
loop at itab assigning lfs_table .
loop at header assigning alv_table .
assign component FIELDNAME of structure alv_table
to alv_con .
assign component alv_con of structure lfs_table
to lfs_con .
if sy-subrc ne 0.
else.
clear: l_con.
move lfs_con to l_con.
condense l_con.
if sy-tabix = 1.
clear: l_text.
move l_con to l_text.
else.
concatenate l_text l_con into l_text
separated by c_tab.
endif.
endif.
at last.
clear it_text-text.
it_text-text = l_text.
append it_text.
clear it_text.
endat.
endloop.
endloop.
* Convert text to xstring.
loop at it_text.
c_index = c_index + 1.
append it_text to temp_text.
clear lv_xstring.
call function SCMS_TEXT_TO_XSTRING
exporting
mimetype = APPLICATION/MSEXCEL;charset=utf-16le
importing
buffer = lv_xstring
tables
text_tab = temp_text
exceptions
failed = 1
others = 2.
if sy-subrc 0.
message id sy-msgid type sy-msgty number sy-msgno
with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
endif.
* Convert xstring to binary.
clear temp_binary_attach.
refresh temp_binary_attach.
call function SCMS_XSTRING_TO_BINARY
exporting
buffer = lv_xstring
tables
binary_tab = temp_binary_attach.
append lines of temp_binary_attach to it_binary_attach.
clear temp_text.
refresh temp_text.
clear c_index.
endloop.
endif.
* Creates persistent send request
try.
l_send_request = cl_bcs= create_persistent( ).
* Creating Document
l_document = cl_document_bcs= create_document(
i_type = RAW
i_text = i_content[]
i_subject = content_subject ).
describe table itab lines l_lines.
* Size to multiplied by 2 for UNICODE enabled systems
* Adding Attachment
call method l_document- add_attachment
exporting
i_attachment_type = c_ext
i_attachment_subject = attachment_subject
i_att_content_hex = it_binary_attach[].
* Add document to send request
call method l_send_request- set_document( l_document ).
* Get Sender Object
l_uname = sy-uname.
l_sender = cl_sapuser_bcs= create( l_uname ).
call method l_send_request- set_sender
exporting
i_sender = l_sender.
* E-Mail
loop at recepients.
translate recepients to lower case.
l_recipient = cl_cam_address_bcs= create_internet_address( recepients ).
call method l_send_request- add_recipient
exporting
i_recipient = l_recipient
i_express = U
i_copy =
i_blind_copy =
i_no_forward = X . 是否要回执
endloop.
*Trigger E-Mail immediately
l_send_request- set_send_immediately( X ).
call method l_send_request- send( ).
commit work.
catch cx_document_bcs into l_bcs_exception.
catch cx_send_req_bcs into l_send_exception.
catch cx_address_bcs into l_addr_exception.
endtry.
ENDFUNCTION.
原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/19570.html
cxml相关文章
- SAP 中的货币(Currencies)详解编程语言
- SAP内表详解编程语言
- SAP的PI日志查看工具详解编程语言
- SAP采购申请审批记录增强详解编程语言
- SAP 发布简易REST 一:login验证详解编程语言
- SAP的JSON没有双引号问题详解编程语言
- SAP后台Job数据保存在表TBTCP/TBTCO中详解编程语言
- SAP内表类型及其数据读取效率评估详解编程语言
- SAP 摘录数据集详解编程语言
- SAP STO 退货业务的后台配置说明详解编程语言
- SAP 序列号里主批次与库存批次不同,如何修改详解编程语言
- SAP 如何从表中区分内外向交货单详解编程语言
- SAP定义物料组详解编程语言
- SAP MM ME21N 创建委外采购PO报错-Not possible to determine any components-之对策详解编程语言
- SAP-MM 价格条件详解-01计算方案的确定及部分概念说明编程语言
- SAP S4 BP事务代码的业务伙伴和供应商,客户之间的表关系详解编程语言
- SAP OBYC自动记账的实例说明 +VALUE STRING详解编程语言
- sap-通过定义物料组的评估类-设置无物料号的费用采购详解编程语言
- SAP FICO事务码F110替代详解编程语言
- SAP一句话入门-SD详解编程语言
- SAP常用知识点{系统变量|TCODE|消息类型|数据类型|变量声明|Internal Table}详解编程语言
- SAP的视图详解编程语言
- 想做SAP abap开发,但是却没有权限修改/新增 abap程序详解编程语言
- Oracle和SAP技术比较优势和劣势(oracle与sap比照)