SAP 系统创建销售订单自动发邮件
DATA : send_request TYPE REF TO cl_bcs,
document TYPE REF TO cl_document_bcs,
mail_sender_lr TYPE REF TO if_sender_bcs,
recipient TYPE REF TO if_recipient_bcs,
fail TYPE REF TO cx_bcs.
DATA :l_content TYPE string,
main_text TYPE bcsy_text,
title TYPE so_obj_des,
p_sender LIKE adr6-smtp_addr,
mailto TYPE ad_smtpadr.
TYPES : BEGIN OF ltype_zemp,
zzemp TYPE zemp-zzemp,
smtp_addr TYPE zemp-smtp_addr,
zztext TYPE zemp_t-zztext,
END OF ltype_zemp.
TYPES : BEGIN OF ltype_fvbak,
zzemployee TYPE vbak-zzemployee1,
END OF ltype_fvbak.
TYPES : BEGIN OF ltype_kna1,
kunnr TYPE kna1-kunnr,
name1 TYPE kna1-name1,
END OF ltype_kna1.
TYPES : BEGIN OF ltype_user,
zzoter TYPE zoter_t-zzoter,
zztext TYPE zoter_t-zztext,
END OF ltype_user.
DATA : netwr_sum TYPE vbap-netwr VALUE 0,
mwsbp_sum TYPE vbap-mwsbp VALUE 0.
DATA : ls_fxvbap LIKE LINE OF fxvbap.
DATA : wa TYPE ztemail_send_log.
DATA : cnt TYPE i VALUE 0.
DATA: l_year TYPE char4,
l_month TYPE char2,
l_day TYPE char2,
l_hour TYPE char2,
l_minute TYPE char2.
DATA e_datlo TYPE sy-datlo.
DATA e_timlo TYPE sy-timlo.
CLEAR: e_datlo,e_timlo.
CALL FUNCTION 'ZFM_GET_DATE_TIME'
IMPORTING
e_datlo = e_datlo
e_timlo = e_timlo.
CLEAR e_return.
CLEAR: l_year, l_month, l_day, l_hour, l_minute.
DATA : lt_zemp TYPE TABLE OF ltype_zemp,
ls_zemp LIKE LINE OF lt_zemp.
DATA : lt_kna1 TYPE TABLE OF ltype_kna1,
ls_kna1 LIKE LINE OF lt_kna1.
DATA : lt_fvbak TYPE TABLE OF ltype_fvbak,
ls_fvbak LIKE LINE OF lt_fvbak.
DATA : lt_user TYPE TABLE OF ltype_user,
ls_user LIKE LINE OF lt_user.
DATA : name1 TYPE adrp-name_text.
IF fvbak-vtweg = '01' OR fvbak-vtweg = '03'.
MOVE e_timlo+0(2) TO l_hour.
MOVE e_timlo+2(2) TO l_minute.
CLEAR lt_fvbak.
APPEND fvbak-zzemployee1 TO lt_fvbak.
APPEND fvbak-zzemployee2 TO lt_fvbak.
APPEND fvbak-zzemployee3 TO lt_fvbak.
APPEND fvbak-zzemployee4 TO lt_fvbak.
"get email address
CLEAR lt_zemp.
SELECT
t1~zzemp
t1~smtp_addr
t2~zztext
FROM zemp AS t1 INNER JOIN zemp_t AS t2 ON t1~zzemp = t2~zzemp
INTO CORRESPONDING FIELDS OF TABLE lt_zemp
FOR ALL ENTRIES IN lt_fvbak
WHERE t1~zzemp = lt_fvbak-zzemployee
AND t2~spras = '1'.
"get customer name
CLEAR lt_kna1.
SELECT
kunnr
name1
FROM kna1
INTO CORRESPONDING FIELDS OF TABLE lt_kna1
WHERE kunnr = fvbak-kunnr.
"get sales engineer
CLEAR lt_user.
SELECT
zzoter
zztext
FROM zoter_t
INTO CORRESPONDING FIELDS OF TABLE lt_user
WHERE zzoter = fvbak-zzoter
AND spras = '1'.
"get hsje
CLEAR ls_fxvbap.
CLEAR netwr_sum.
CLEAR mwsbp_sum.
LOOP AT fxvbap INTO ls_fxvbap.
netwr_sum = netwr_sum + ls_fxvbap-netwr.
mwsbp_sum = mwsbp_sum + ls_fxvbap-mwsbp.
ENDLOOP.
ENDIF.
IF lt_zemp IS NOT INITIAL.
CLEAR ls_zemp.
CLEAR name1.
CLEAR cnt.
LOOP AT lt_zemp INTO ls_zemp.
CLEAR main_text.
CLEAR title.
CLEAR mailto.
CLEAR document.
TRY.
p_sender = 'sapsupport.nlp@netzsch.com'.
DATA : dsje(15) TYPE c.
cnt = cnt + 1.
dsje = netwr_sum + mwsbp_sum." switch price to char
CLEAR ls_user.
READ TABLE lt_user INTO ls_user INDEX 1.
CLEAR ls_kna1.
READ TABLE lt_kna1 INTO ls_kna1 INDEX 1.
"get sales engineer
CONCATENATE 'Dear' ls_zemp-zztext ':' INTO l_content.
APPEND l_content TO main_text.
CLEAR l_content.
"get second line
CONCATENATE ' 销售订单' fvbak-vbeln '已于' fvbak-erdat+0(4) '年' fvbak-erdat+4(2) '月' fvbak-erdat+6(2) '日-' l_hour ':' l_minute '创建成功.' INTO l_content.
APPEND l_content TO main_text.
CLEAR l_content.
"get purchase order number
CONCATENATE ' 合同编号:' fvbak-bname '.' INTO l_content.
APPEND l_content TO main_text.
CLEAR l_content.
"get customer name
CONCATENATE ' 客户名称:' ls_kna1-name1 '.' INTO l_content.
APPEND l_content TO main_text.
CLEAR l_content.
"get sales engineer
CONCATENATE ' 订单处理工程师:' ls_user-zztext '.' INTO l_content.
APPEND l_content TO main_text.
CLEAR l_content.
"get dsje
CONCATENATE ' 金额:' dsje fvbak-waerk INTO l_content SEPARATED BY ' '.
APPEND l_content TO main_text.
CLEAR l_content.
"blank
l_content = ' '.
APPEND l_content TO main_text.
CLEAR l_content.
"system information
l_content = '此邮件为系统自动发送,请勿回复!'.
APPEND l_content TO main_text.
CLEAR l_content.
"signature
l_content = '客户服务中心'.
APPEND l_content TO main_text.
CLEAR l_content.
"get company name
l_content = '耐驰(兰州)泵业有限公司'.
APPEND l_content TO main_text.
CLEAR l_content.
"get date
CONCATENATE '日期:' sy-datum INTO l_content.
APPEND l_content TO main_text.
CLEAR l_content.
"title
CONCATENATE ls_kna1-name1 '的销售订单' fvbak-vbeln '已创建' INTO title.
"mail-to
mailto = ls_zemp-smtp_addr.
"Create send email request.
send_request = cl_bcs=>create_persistent( ).
"Create emali content.
document = cl_document_bcs=>create_document( i_type = 'RAW' i_text = main_text i_subject = title ).
"add mail content
send_request->set_document( document ).
"mail send receive address
mail_sender_lr = cl_cam_address_bcs=>create_internet_address( p_sender ).
send_request->set_sender( i_sender = mail_sender_lr ).
recipient = cl_cam_address_bcs=>create_internet_address( mailto ).
"add address to request
send_request->add_recipient( recipient ).
"commit request
send_request->send( i_with_error_screen = 'X' ).
COMMIT WORK AND WAIT.
IF sy-subrc = 0.
e_return-msgtyp = 'S'.
ENDIF.
CATCH cx_bcs INTO fail. "Send email failed
IF fail->error_type IS NOT INITIAL.
CLEAR wa.
wa-tcode = sy-tcode.
wa-ernam = fvbak-ernam.
wa-erdat = fvbak-erdat.
wa-erzet = e_timlo + cnt.
wa-msgtyp = 'E'.
wa-msgv1 = ls_zemp-zztext.
wa-msgv2 = fvbak-vbeln.
CONCATENATE fvbak-bname ls_kna1-name1 INTO wa-msgv3 SEPARATED BY ' '.
CONCATENATE '订单处理工程师:' ls_user-zztext '销售单含税金额:' dsje fvbak-waerk INTO wa-msgv4 SEPARATED BY ' '.
INSERT INTO ztemail_send_log VALUES wa.
COMMIT WORK AND WAIT.
CLEAR wa.
************If the mail send fail send a email to it support*********************************************************************************
* CLEAR mailto.
* CLEAR title.
* mailto = 'haifeng.ma@netzsch.com'.
* title = '邮件未能发送成功,请检查!'.
*
* "Create emali content.
* document = cl_document_bcs=>create_document( i_type = 'RAW' i_text = main_text i_subject = title ).
*
* "add mail content
* send_request->set_document( document ).
*
* "mail send receive address
* mail_sender_lr = cl_cam_address_bcs=>create_internet_address( p_sender ).
* send_request->set_sender( i_sender = mail_sender_lr ).
* recipient = cl_cam_address_bcs=>create_internet_address( mailto ).
*
* "add address to request
* send_request->add_recipient( recipient ).
*
* "commit request
* send_request->send( i_with_error_screen = 'X' ).
*
* COMMIT WORK AND WAIT.
* IF sy-subrc = 0.
* e_return-msgtyp = 'S'.
* ENDIF.
************If the mail send fail send a email to it support*********************************************************************************
ENDIF.
ENDTRY.
ENDLOOP.
CLEAR main_text.
CLEAR title.
CLEAR mailto.
CLEAR name1.
CLEAR dsje.
ENDIF.
ENDFUNCTION.
post SAP-Garson
原文链接:https://blog.csdn.net/wtxhai/article/details/102909421文章来自于网络,如果侵犯了您的权益,请联系站长删除!