• 邮件


    事物代码: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.
  • 相关阅读:
    SQL“多字段模糊匹配关键字查询”[转载] Virus
    [转载]分页存储过程 Virus
    质因数 Virus
    由传值引发的思考 Virus
    RFID票务系统调研报告 Virus
    以人为中心还是以事为中心 Virus
    IOC容器 Virus
    [导入]数据库设计三大范式应用实例剖析 Virus
    电子商务B2B调研报告 Virus
    心情不是太好 Virus
  • 原文地址:https://www.cnblogs.com/sapSB/p/6651280.html
Copyright © 2020-2023  润新知