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

本文共 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

你可能感兴趣的文章
阿里云服务器CentOS6.9安装Mysql
查看>>
剑指offer系列6:数值的整数次方
查看>>
js 过滤敏感词
查看>>
poj2752 Seek the Name, Seek the Fame
查看>>
软件开发和软件测试,我该如何选择?(蜗牛学院)
查看>>
基本封装方法
查看>>
bcb ole拖拽功能的实现
查看>>
生活大爆炸之何为光速
查看>>
bzoj 2456: mode【瞎搞】
查看>>
[Typescript] Specify Exact Values with TypeScript’s Literal Types
查看>>
[GraphQL] Reuse Query Fields with GraphQL Fragments
查看>>
Illustrated C#学习笔记(一)
查看>>
理解oracle中连接和会话
查看>>
两种最常用的Sticky footer布局方式
查看>>
Scrapy实战篇(三)之爬取豆瓣电影短评
查看>>
HDU 5510 Bazinga KMP
查看>>
[13年迁移]Firefox下margin-top问题
查看>>
Zookeeper常用命令 (转)
查看>>
Java程序IP v6与IP v4的设置
查看>>
RUP(Rational Unified Process),统一软件开发过程
查看>>