博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BCS SET EMAIL
阅读量:4545 次
发布时间:2019-06-08

本文共 7634 字,大约阅读时间需要 25 分钟。

FUNCTION zcrm_send_email.*"----------------------------------------------------------------------*"*"Local Interface:*"  IMPORTING*"     VALUE(IV_SUBJECT) TYPE  SO_OBJ_DES OPTIONAL*"     VALUE(IV_SENDER_EMAL) TYPE  ADR6-SMTP_ADDR OPTIONAL*"     VALUE(IV_SENDER_NAME) TYPE  ADR6-SMTP_ADDR OPTIONAL*"     VALUE(IV_COMMON_BODY1) TYPE  FLAG DEFAULT ABAP_TRUE*"     VALUE(IV_COMMON_BODY2) TYPE  FLAG DEFAULT ABAP_TRUE*"     VALUE(IV_EXCEL_AS_BODY) TYPE  FLAG OPTIONAL*"     VALUE(IV_EXCEL) TYPE  FLAG OPTIONAL*"     VALUE(IV_PDF) TYPE  FLAG OPTIONAL*"     VALUE(IT_TABLE) TYPE  ANY TABLE OPTIONAL*"  TABLES*"      IT_BODYS STRUCTURE  SOLISTI1 OPTIONAL*"      IT_RECIPIENTS_EMAIL STRUCTURE  BAPIADSMTP OPTIONAL*"      IT_CC_RECIPIENTS_EMAIL STRUCTURE  BAPIADSMTP OPTIONAL*"----------------------------------------------------------------------  FIELD-SYMBOLS:    
TYPE abap_compdescr,
TYPE any,
TYPE any,
TYPE any. DATA: gs_bapiadsmtp TYPE bapiadsmtp, gr_cx_send_req_bcs TYPE REF TO cx_send_req_bcs, gv_os_boolean TYPE os_boolean, gr_send_request TYPE REF TO cl_bcs, gr_document TYPE REF TO cl_document_bcs, gr_recipient TYPE REF TO if_recipient_bcs, gr_bcs_exception TYPE REF TO cx_bcs, gr_sender TYPE REF TO if_sender_bcs. TRY.* create persistent send request ------------------------ FREE gr_send_request. gr_send_request = cl_bcs=>create_persistent( ).* Start program frm_set_mail_document-Begin REFRESH:gt_solisti1.*IV_COMMON_BODY1-Begin IF iv_common_body1 = abap_true. gs_solisti1 = ''. APPEND gs_solisti1 TO gt_solisti1. ENDIF.*IV_COMMON_BODY1-End*IT_BODYS IF it_bodys[] IS NOT INITIAL. APPEND LINES OF it_bodys TO gt_solisti1. ENDIF.*IT_TABLE 如果非空的话获取共用抬头数据 REFRESH:gt_ddfields. IF it_table IS NOT INITIAL. LOOP AT it_table ASSIGNING
. IF gt_ddfields[] IS INITIAL. gr_cl_abap_structdescr ?= cl_abap_typedescr=>describe_by_data(
).*表头 IF gt_ddfields[] IS INITIAL. CALL METHOD gr_cl_abap_structdescr->get_ddic_field_list EXPORTING p_langu = sy-langu RECEIVING p_field_list = gt_ddfields EXCEPTIONS not_found = 1 no_ddic_type = 2 OTHERS = 3. IF sy-subrc <> 0.* Implement suitable error handling here ENDIF. ENDIF. ENDIF. ENDLOOP. ENDIF.*IV_EXCEL_AS_BODY IF iv_excel_as_body = abap_true. IF it_table IS NOT INITIAL. gs_solisti1 = '
.*表内容 gs_solisti1 = '
. CLEAR:gs_solisti1. ASSIGN
-name TO
. ASSIGN COMPONENT
OF STRUCTURE
TO
. WRITE
TO gv_field. CONCATENATE '
'. APPEND gs_solisti1 TO gt_solisti1. gs_solisti1 = '
'. APPEND gs_solisti1 TO gt_solisti1.* Excel抬头 CLEAR:gs_solisti1. LOOP AT gt_ddfields INTO gs_ddfields. CLEAR:gs_solisti1.* IF gs_solisti1 IS INITIAL.* CONCATENATE '
' INTO gs_solisti1.* ELSE.* CONCATENATE gs_solisti1 '
' INTO gs_solisti1.* ENDIF. CONCATENATE '
' INTO gs_solisti1. APPEND gs_solisti1 TO gt_solisti1. ENDLOOP.* Excel 数据 LOOP AT it_table ASSIGNING
'. APPEND gs_solisti1 TO gt_solisti1. LOOP AT gr_cl_abap_structdescr->components ASSIGNING
' INTO gs_solisti1. APPEND gs_solisti1 TO gt_solisti1. ENDLOOP. gs_solisti1 = '
'. APPEND gs_solisti1 TO gt_solisti1. ENDLOOP. gs_solisti1 = '
' gs_ddfields-fieldtext ' ' gs_ddfields-fieldtext ' ' gs_ddfields-fieldtext '
' gv_field '
'. APPEND gs_solisti1 TO gt_solisti1. ENDIF. ENDIF.*IV_COMMON_BODY2-Begin IF iv_common_body2 = abap_true. gs_solisti1 = '
'. APPEND gs_solisti1 TO gt_solisti1. gs_solisti1 = '
'. APPEND gs_solisti1 TO gt_solisti1. gs_solisti1 = 'Hisense Service'. APPEND gs_solisti1 TO gt_solisti1. gs_solisti1 = '
'. APPEND gs_solisti1 TO gt_solisti1. gs_solisti1 = '0860 447 3673'. APPEND gs_solisti1 TO gt_solisti1. gs_solisti1 = '
'. APPEND gs_solisti1 TO gt_solisti1. gs_solisti1 = 'service@hisense.co.za'. APPEND gs_solisti1 TO gt_solisti1. ENDIF.*IV_COMMON_BODY2-End IF iv_common_body1 = abap_true. gs_solisti1 = '
'. APPEND gs_solisti1 TO gt_solisti1. gs_solisti1 = ''. APPEND gs_solisti1 TO gt_solisti1. ENDIF. gr_document = cl_document_bcs=>create_document( i_type = 'HTM' i_text = gt_solisti1 i_subject = iv_subject ).* Start program frm_set_mail_document-End* Define Attachment frm_set_mail_attachment-Begin IF iv_excel = abap_true.****EXCEL附加抬头 CLEAR:gv_string,gv_lines,gv_number. DESCRIBE TABLE gt_ddfields LINES gv_lines. LOOP AT gt_ddfields INTO gs_ddfields. gv_number = gv_number + 1. IF gv_lines = gv_number. CONCATENATE gv_string gs_ddfields-fieldtext gc_crlf INTO gv_string. ELSE. IF gv_string IS INITIAL. CONCATENATE gs_ddfields-fieldtext gc_tab INTO gv_string. ELSE. CONCATENATE gv_string gs_ddfields-fieldtext gc_tab INTO gv_string. ENDIF. ENDIF. ENDLOOP.****EXCEL附加内容 LOOP AT it_table ASSIGNING
. gr_cl_abap_structdescr ?= cl_abap_typedescr=>describe_by_data(
). CLEAR:gv_number. LOOP AT gr_cl_abap_structdescr->components ASSIGNING
. gv_number = gv_number + 1. ASSIGN
-name TO
. ASSIGN COMPONENT
OF STRUCTURE
TO
. WRITE
TO gv_field. IF gv_lines = gv_number. CONCATENATE gv_string gv_field gc_crlf INTO gv_string. ELSE. CONCATENATE gv_string gv_field gc_tab INTO gv_string. ENDIF. ENDLOOP. ENDLOOP.* Convert string to xstring type* 'APPLICATION/MSEXCEL;charset=utf-16le' CLEAR:gv_xstring. CALL FUNCTION 'SCMS_STRING_TO_XSTRING' EXPORTING text = gv_string mimetype = gc_mimetype IMPORTING buffer = gv_xstring EXCEPTIONS failed = 1 OTHERS = 2.* Add the file header for utf-16le. . IF sy-subrc = 0. CONCATENATE cl_abap_char_utilities=>byte_order_mark_little gv_xstring INTO gv_xstring IN BYTE MODE. ENDIF. CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' EXPORTING buffer = gv_xstring TABLES binary_tab = gt_solix.*Create attachment notification gr_document->add_attachment( i_attachment_type = 'XLS'""XXL XLS i_attachment_subject = iv_subject i_att_content_hex = gt_solix ). ENDIF.*add document object to send request TRY. gr_send_request->set_document( gr_document ). CATCH cx_send_req_bcs INTO gr_cx_send_req_bcs.* MESSAGE i605(sbcoms) .* pv_subrc = 4. ENDTRY.* Define Attachment frm_set_mail_attachment-End* Sender addess frm_set_sender-Begin IF iv_sender_emal IS INITIAL. iv_sender_emal = iv_sender_name = 'service@hisense.co.za'. ENDIF. CALL METHOD cl_cam_address_bcs=>create_internet_address EXPORTING i_address_string = iv_sender_emal "'europe@hisense.com' i_address_name = iv_sender_name "'europe@hisense.com' RECEIVING result = gr_sender. CALL METHOD gr_send_request->set_sender EXPORTING i_sender = gr_sender.* Sender addess frm_set_sender-End* create receiver list frm_set_receiver_list-Begin***收件人处理 LOOP AT it_recipients_email INTO gs_bapiadsmtp. IF sy-uname = zcl_crm_attributes=>gc_chenguoguang. gs_bapiadsmtp-e_mail = 'airwolf_chen@163.com'. ENDIF. FREE gr_recipient. gr_recipient = cl_cam_address_bcs=>create_internet_address( gs_bapiadsmtp-e_mail ). gr_send_request->add_recipient( gr_recipient ). ENDLOOP.***抄送人处理 LOOP AT it_cc_recipients_email INTO gs_bapiadsmtp. IF sy-uname = zcl_crm_attributes=>gc_chenguoguang. gs_bapiadsmtp-e_mail = '744793323@qq.com'. ENDIF. FREE gr_recipient. gr_recipient = cl_cam_address_bcs=>create_internet_address( gs_bapiadsmtp-e_mail ). gr_send_request->add_recipient( EXPORTING i_copy = 'X' i_recipient = gr_recipient ). ENDLOOP.* create receiver list frm_set_receiver_list-End* send mail gr_send_request->set_send_immediately( 'X' ). gv_os_boolean = gr_send_request->send( i_with_error_screen = '' ). COMMIT WORK AND WAIT. CATCH cx_bcs INTO gr_bcs_exception.* MESSAGE i865(so) WITH lo_bcs_exception->error_type. ENDTRY.ENDFUNCTION.

 

转载于:https://www.cnblogs.com/sapSB/p/6422707.html

你可能感兴趣的文章
Hibernate学习四----------Blob
查看>>
CTF-练习平台-Misc之 中国菜刀,不再web里?
查看>>
Mac系统配置JDK环境变量
查看>>
多项式累加
查看>>
剑指offer(18)二叉搜索树的后续遍历
查看>>
微信小程序一笔记账开发进度四
查看>>
bzoj 1070 费用流
查看>>
201671010139 徐楠 第四周总结
查看>>
JAVA链表简单实现
查看>>
[转载]T-SQL(MSSQL)语句查询执行顺序
查看>>
SignalR 行实时通信最大连接数
查看>>
开发进度6
查看>>
php方法重载
查看>>
三次握手和四次挥手(二)
查看>>
MySQL中的索引
查看>>
Android开发之手势滑动(滑动手势监听)详解
查看>>
switch
查看>>
HTTP错误code大全
查看>>
PAT Advanced Level 1043
查看>>
C++重载运算符练习--对people类重载“= =”运算符和“=”运算符
查看>>