事物代码:ALRTCATDEF
通用函数:
FUNCTION zcrm_send_email_common. *"---------------------------------------------------------------------- *"*"本地接口: *" IMPORTING *" VALUE(IS_SEND_EMS) TYPE ZSRVS_SEND_EMS OPTIONAL *" VALUE(IT_TABLE) TYPE ANY TABLE OPTIONAL *" VALUE(IS_XSTRING) TYPE XSTRING OPTIONAL *" TABLES *" IT_RECIPIENTS_EMAIL STRUCTURE BAPIADSMTP OPTIONAL *" IT_CC_RECIPIENTS_EMAIL STRUCTURE BAPIADSMTP OPTIONAL *" IT_SIGNATURE STRUCTURE SOLISTI1 OPTIONAL *"---------------------------------------------------------------------- DATA: lv_title TYPE string, lv_short_text TYPE string, lv_long_text TYPE string, lt_long_text TYPE rcl_bag_tline, ls_long_text TYPE tline, lt_short_text TYPE rcl_bag_tline, ls_short_text TYPE tline. ***说明: *1.仅满足Alert 模版需求 *2.Email 内容包含:A。邮件抬头;B。邮件文本;C。Excel内容;D。签名;E。附件 CLEAR:gv_so_obj_des. ***基于Alert获取Email Body内容-Begin CALL FUNCTION 'ZSRV_GET_ZSRVS_SEND_SMS' EXPORTING is_send_ems = is_send_ems iv_salrtdcat = is_send_ems-salrtdcat IMPORTING ev_title = lv_title ev_short_text = lv_short_text ev_long_text = lv_long_text et_long_text = lt_long_text et_short_text = lt_short_text EXCEPTIONS alert_error = 1 alert_no_recipients = 2 OTHERS = 3. IF sy-subrc <> 0. * Implement suitable error handling here ENDIF. gv_so_obj_des = lv_title. ***基于Alert获取Email Body内容-End 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. *IS_SEND_EMS-COMMON_BODY1-Begin IF is_send_ems-common_body1 = abap_true. gs_solisti1 = '<html><body>'. APPEND gs_solisti1 TO gt_solisti1. ENDIF. *IS_SEND_EMS-COMMON_BODY1-End *lt_long_text IF lt_long_text[] IS NOT INITIAL. LOOP AT lt_long_text INTO ls_long_text. IF ls_long_text-tdline IS INITIAL. gs_solisti1 = '<br>'. ELSE. gs_solisti1 = ls_long_text-tdline. ENDIF. APPEND gs_solisti1 TO gt_solisti1. ENDLOOP. ENDIF. *IT_TABLE 如果非空的话获取共用抬头数据 REFRESH:gt_ddfields. IF it_table IS NOT INITIAL. CALL FUNCTION 'ZCRM_CONVERT_TABLE_INFO' EXPORTING it_table = it_table CHANGING ct_ddfields = gt_ddfields. ENDIF. *IS_SEND_EMS-EXCEL_AS_BODY IF is_send_ems-excel_as_body = abap_true. IF it_table IS NOT INITIAL. gs_solisti1 = '<table border="1">'. APPEND gs_solisti1 TO gt_solisti1. gs_solisti1 = '<tr>'. 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 '<td>' gs_ddfields-fieldtext '</td>' INTO gs_solisti1. * ELSE. * CONCATENATE gs_solisti1 '<td>' gs_ddfields-fieldtext '</td>' INTO gs_solisti1. * ENDIF. CONCATENATE '<td>' gs_ddfields-fieldtext '</td>' INTO gs_solisti1. APPEND gs_solisti1 TO gt_solisti1. ENDLOOP. * Excel 数据 LOOP AT it_table ASSIGNING <gs_line>. *表内容 gs_solisti1 = '<tr>'. APPEND gs_solisti1 TO gt_solisti1. LOOP AT gr_cl_abap_structdescr->components ASSIGNING <fs_comp>. CLEAR:gs_solisti1. ASSIGN <fs_comp>-name TO <fs_col>. ASSIGN COMPONENT <fs_col> OF STRUCTURE <gs_line> TO <gs_field>. WRITE <gs_field> TO gv_field. CONCATENATE '<td >' gv_field '</td> ' INTO gs_solisti1. APPEND gs_solisti1 TO gt_solisti1. ENDLOOP. gs_solisti1 = '</tr>'. APPEND gs_solisti1 TO gt_solisti1. ENDLOOP. gs_solisti1 = '</table>'. APPEND gs_solisti1 TO gt_solisti1. ENDIF. ENDIF. *签名信息-Begin IF it_signature[] IS NOT INITIAL. APPEND LINES OF it_signature TO gt_solisti1. ENDIF. *签名信息-End IF is_send_ems-common_body1 = abap_true. gs_solisti1 = '<br>'. APPEND gs_solisti1 TO gt_solisti1. gs_solisti1 = '</body></html>'. APPEND gs_solisti1 TO gt_solisti1. ENDIF. gr_document = cl_document_bcs=>create_document( i_type = 'HTM' i_text = gt_solisti1 i_subject = gv_so_obj_des ). * Start program frm_set_mail_document-End * Define Attachment frm_set_mail_attachment-Begin IF is_send_ems-attachment_type IS NOT INITIAL. IF is_send_ems-attachment_type = 'XLS' OR is_send_ems-attachment_type = 'TXT'. CLEAR:gv_xstring. CALL FUNCTION 'ZCRM_CONVERT_TABLE_INFO' EXPORTING it_table = it_table iv_xstring = abap_true IMPORTING ev_xstring = gv_xstring CHANGING ct_ddfields = gt_ddfields. ENDIF. IF is_send_ems-attachment_type = 'PDF'. CLEAR:gv_xstring. CALL FUNCTION 'ZSRV_PRINT_TO_PDF' EXPORTING iv_samrtform = is_send_ems-samrtform iv_object_id = is_send_ems-object_id IMPORTING file = gv_xstring. ENDIF. IF IS_XSTRING IS NOT INITIAL. gv_xstring = IS_XSTRING. 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 = is_send_ems-attachment_type i_attachment_subject = gv_so_obj_des 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 is_send_ems-sender_email IS NOT INITIAL. CALL METHOD cl_cam_address_bcs=>create_internet_address EXPORTING i_address_string = is_send_ems-sender_email "'europe@hisense.com' i_address_name = is_send_ems-sender_name "'europe@hisense.com' RECEIVING result = gr_sender. CALL METHOD gr_send_request->set_sender EXPORTING i_sender = gr_sender. ENDIF. * 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 = 'gjyx.abap3@hisense.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 = 'gjyx.abap3@hisense.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.
LS_ZSRVS_SEND_SMS-USER_DATUM = SY-DATUM. LS_ZSRVS_SEND_SMS-SALRTDCAT = 'ZCRM_SRV0012'. LS_ZSRVS_SEND_SMS-SENDER_EMAIL = GS_ZCRMT_MAINT_I-VALUE2 ."'service123@hisense.co.za'. LS_ZSRVS_SEND_SMS-SENDER_NAME = GS_ZCRMT_MAINT_I-VALUE2 ."'service133@hisense.co.za'. LS_ZSRVS_SEND_SMS-COMMON_BODY1 = ABAP_TRUE. LS_ZSRVS_SEND_SMS-EXCEL_AS_BODY = ABAP_FALSE. LS_ZSRVS_SEND_SMS-ATTACHMENT_TYPE = 'XLS'. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING INPUT = GW_ROOT-OBJECT_ID IMPORTING OUTPUT = LS_ZSRVS_SEND_SMS-OBJECT_ID. * LS_ZSRVS_SEND_SMS-OBJECT_ID = '0210001600'. WHILE GS_ZCRMT_MAINT_I-VALUE1 IS NOT INITIAL. SPLIT GS_ZCRMT_MAINT_I-VALUE1 at ' ' INTO LS_RECIPIENTS_EMAIL-E_MAIL GS_ZCRMT_MAINT_I-VALUE1. APPEND LS_RECIPIENTS_EMAIL TO LT_RECIPIENTS_EMAIL. ENDWHILE. * LS_RECIPIENTS_EMAIL-E_MAIL = GS_ZCRMT_MAINT_I-VALUE1 ."'gjyx.abap4@hisense.com'. * APPEND LS_RECIPIENTS_EMAIL TO LT_RECIPIENTS_EMAIL. WHILE GS_ZCRMT_MAINT_I-VALUE3 IS NOT INITIAL. SPLIT GS_ZCRMT_MAINT_I-VALUE3 at ' ' INTO LS_CC_RECIPIENTS_EMAIL-E_MAIL GS_ZCRMT_MAINT_I-VALUE3. APPEND LS_CC_RECIPIENTS_EMAIL TO LT_CC_RECIPIENTS_EMAIL. ENDWHILE. * IF GS_ZCRMT_MAINT_I-VALUE3 IS NOT INITIAL. * LS_CC_RECIPIENTS_EMAIL-E_MAIL = GS_ZCRMT_MAINT_I-VALUE3. * APPEND LS_CC_RECIPIENTS_EMAIL TO LT_CC_RECIPIENTS_EMAIL. * ENDIF. CALL FUNCTION 'ZCRM_SEND_EMAIL_COMMON' EXPORTING IS_SEND_EMS = LS_ZSRVS_SEND_SMS IS_XSTRING = GV_ATTAC TABLES IT_RECIPIENTS_EMAIL = LT_RECIPIENTS_EMAIL IT_CC_RECIPIENTS_EMAIL = LT_CC_RECIPIENTS_EMAIL.