美文网首页
ABAP 发送邮件

ABAP 发送邮件

作者: 阿努比斯1117 | 来源:发表于2017-11-26 17:43 被阅读0次
DATA: G_AUTOF TYPE CHAR4.
DATA SEND_REQUEST TYPE REF TO CL_BCS.    "CL_BCS 发送邮件主要用到的功能类, 包括创建发送请求, 添加发送内容,添加发送地址, 到最终的发送指令发出.
DATA DOCUMENT     TYPE REF TO CL_DOCUMENT_BCS." 用来放置发送的内容.
DATA G_TEXT TYPE SOLI_TAB.
DATA G_CONTENT TYPE STRING.
DATA MAILTO TYPE AD_SMTPADR.
DATA RECIPIENT TYPE REF TO CL_CAM_ADDRESS_BCS.
DATA L_BCS_EXCEPTION TYPE REF TO CX_DOCUMENT_BCS.
DATA L_SEND_EXCEPTION TYPE REF TO CX_SEND_REQ_BCS.
DATA L_ADDR_EXCEPTION TYPE REF TO CX_ADDRESS_BCS.
DATA: IT_HEX1 TYPE SOLIX_TAB  .
DATA: LV_XML TYPE XSTRING.
DATA:T_MAILHEX TYPE SOLIX_TAB.
DATA:I_RECORD TYPE SOLIX_TAB.
DATA:FILELEN TYPE I.
DATA: G_OVERDAT LIKE SY-DATUM.

DATA: BEGIN OF WA_ATTACH,
  EBELN LIKE EKPO-EBELN,
  EBELP LIKE EKPO-EBELP,
  BANFN LIKE EBAN-BANFN,
  BNFPO LIKE EBAN-BNFPO,
  TXZ01 LIKE ZMMT116-TXZ01,
  LIFNR LIKE LFA1-LIFNR,
  NAME1 LIKE LFA1-NAME1,
  OVERDAT LIKE ZMMT116-OVERDAT,
  CRNAM LIKE ZMMT116-CRNAM,
  ERNAM LIKE EKKO-ERNAM,
  END OF WA_ATTACH.

DATA: GT_ATTACH LIKE WA_ATTACH OCCURS 0 WITH HEADER LINE.

SELECT *
  INTO CORRESPONDING FIELDS OF TABLE GT_ATTACH
FROM ****
  WHERE ************.

TRY.
"  邮件正文
    G_CONTENT = ''.
    APPEND G_CONTENT TO G_TEXT.
    G_CONTENT = 'DEAR SIR:' .
    APPEND G_CONTENT TO G_TEXT.
    G_CONTENT = ''.
    APPEND G_CONTENT TO G_TEXT.
    G_CONTENT = '...........................'.
    APPEND G_CONTENT TO G_TEXT.
    G_CONTENT = ''.
    APPEND G_CONTENT TO G_TEXT.
    APPEND G_CONTENT TO G_TEXT.
    G_CONTENT = 'THANKS.'.
    APPEND G_CONTENT TO G_TEXT.

*    创建发送请求
    SEND_REQUEST = CL_BCS=>CREATE_PERSISTENT( ).

    DOCUMENT = CL_DOCUMENT_BCS=>CREATE_DOCUMENT(
                                I_TYPE = 'RAW'
                                I_TEXT = G_TEXT
                                I_IMPORTANCE = '1'
                                I_SUBJECT = '************'              "郵件主題
                                ).

*---------- 創建郵件的附件
*----內表作為郵件附件發送 BEGIN
    DATA: TMPSTR TYPE STRING .
    CLEAR: TMPSTR,I_RECORD,I_RECORD[].

    DATA: TAB TYPE C VALUE CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB,
          ENTER(2) TYPE C VALUE CL_ABAP_CHAR_UTILITIES=>CR_LF,
          N TYPE I.
    DATA: BEGIN OF HEADTAB OCCURS 0 ,
            LENGTH    TYPE I ,
            DECIMALS  TYPE I,
            TYPE_KIND TYPE C,
            NAME(30)  TYPE C,
          END OF HEADTAB.
    DATA DESCR_REF TYPE REF TO CL_ABAP_STRUCTDESCR.
    FIELD-SYMBOLS: <COMP_WA> TYPE ABAP_COMPDESCR ,
                   <F_FIELD> ,
                   <F_T_ATTACH> TYPE ANY .
    DATA:STR TYPE STRING,
         STR2 TYPE STRING ,
         TEXT1 TYPE C.
    DESCR_REF ?= CL_ABAP_TYPEDESCR=>DESCRIBE_BY_DATA( GT_ATTACH ). "導出表頭內容BANFN BNFPO MATNR TXZ01 MEINS EKGRP MENGE等等
    LOOP AT DESCR_REF->COMPONENTS ASSIGNING <COMP_WA>.
      MOVE-CORRESPONDING <COMP_WA> TO HEADTAB.
      APPEND HEADTAB.
    ENDLOOP.
    DESCRIBE TABLE HEADTAB LINES N.
    LOOP AT GT_ATTACH ASSIGNING <F_T_ATTACH>.
      DO N TIMES.
        ASSIGN COMPONENT SY-INDEX OF STRUCTURE <F_T_ATTACH> TO <F_FIELD>.
        STR = <F_FIELD>.
        READ TABLE HEADTAB INDEX SY-INDEX.
        IF HEADTAB-TYPE_KIND = 'I' OR HEADTAB-TYPE_KIND = 'P'
                                   OR HEADTAB-TYPE_KIND = 'F'.
          SEARCH STR FOR '-'.
          IF SY-SUBRC = 0 AND SY-FDPOS <> 0.
            SPLIT STR AT '-' INTO STR TEXT1.
            CONDENSE STR.
            CONCATENATE '-' STR INTO STR.
          ELSE.
            CONDENSE STR.
          ENDIF.
        ELSE.
*        SHIFT STR LEFT DELETING LEADING '0' .
        ENDIF.
        CONCATENATE STR2 TAB STR INTO STR2.
      ENDDO.
      SHIFT STR2.
      CONCATENATE TMPSTR STR2 ENTER INTO TMPSTR.
      CLEAR STR2.
    ENDLOOP.

    CONCATENATE '採購單號' TAB
                '採購單項目' TAB
                '請購單號' TAB
                '請購單項目' TAB
                '物料說明' TAB
                '供應商代碼' TAB
                '供應商名稱' TAB
                '完工日期' TAB
                '開單人' TAB
                '需求人' ENTER
                TMPSTR INTO TMPSTR.

    DATA:TMPBUFFER TYPE XSTRING.
    CALL FUNCTION 'SCMS_STRING_TO_XSTRING'
      EXPORTING
        TEXT     = TMPSTR
        MIMETYPE = '"TEXT/HTML; CHARSET=BIG5"'
*       ENCODING = '8400'
      IMPORTING
        BUFFER   = TMPBUFFER
      EXCEPTIONS
        FAILED   = 1
        OTHERS   = 2.
    CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
      EXPORTING
        BUFFER          = TMPBUFFER
        APPEND_TO_TABLE = ''
      IMPORTING
        OUTPUT_LENGTH   = FILELEN
      TABLES
        BINARY_TAB      = I_RECORD.
    APPEND LINES OF I_RECORD TO T_MAILHEX.



*----內表作為郵件附件發送 END
    DOCUMENT->ADD_ATTACHMENT(                             "添加附件
      I_ATTACHMENT_TYPE    = 'XLS'                        " 附件格式
      I_ATTACHMENT_SUBJECT = '*****************'         " ATTACHMENT NAME
 "     I_ATTACHMENT_SIZE    = SIZE                         "附件大小
      I_ATT_CONTENT_HEX    =  T_MAILHEX ).

    CALL METHOD SEND_REQUEST->SET_DOCUMENT( DOCUMENT ).
*       CALL METHOD L_SEND_REQUEST->SET_SENDER
*        EXPORTING
*          I_SENDER = L_SENDER.

"邮件地址
      CLEAR :MAILTO.
      MAILTO = '736998669@qq.com'.
      RECIPIENT = CL_CAM_ADDRESS_BCS=>CREATE_INTERNET_ADDRESS( MAILTO ).
    SEND_REQUEST->ADD_RECIPIENT( RECIPIENT ).
    SEND_REQUEST->SET_SEND_IMMEDIATELY( 'X' ).
    CALL METHOD SEND_REQUEST->SEND( ).
    COMMIT WORK.
  CATCH CX_DOCUMENT_BCS INTO L_BCS_EXCEPTION.
  CATCH CX_SEND_REQ_BCS INTO L_SEND_EXCEPTION.
  CATCH CX_ADDRESS_BCS  INTO L_ADDR_EXCEPTION.
ENDTRY.

相关文章

  • ABAP 发送邮件

  • spring boot 邮件发送基础详解(4种邮件超级详细)

    本文将介绍spring boot邮件发送将介绍以下几个方面: 邮件使用场景 邮件发送原理 邮件发送流程 邮件发送步...

  • 翱翔云天教你写ABAP程序发送邮件

    1. 变量定义: 类: CL_BCS – Business Communication Service, 发送邮件...

  • SKPSMTPMessage

    SKPSMTPMessage 可以自己实现邮件发送,采用系统的邮件发送会弹出邮件发送框,如果要求静默发送邮件可参照...

  • SpringBoot 发送邮件

    # 依赖 # 配置 # 发送简单文本邮件 # 发送html邮件 # 使用邮件模板发送邮件 添加依赖 配置 新建ht...

  • 2018-10-11

    文本邮件的发送 1.邮件发送流程 ​ 邮件的发送是主动行为:主要通过 MUA/邮件客户端软件,将邮件内容发送给对应...

  • python自动发送邮件

    python自动发送邮件 在说python发送邮件之前,需要了解一下简单的邮件发送知识,邮件发送一般通过SMTP协...

  • python -- Email , send(smtp), re

    python Email功能: 发送普通文本邮件 发送带有html格式的邮件 发送带有附件的邮件 发送插入图片到正...

  • 2018-07-02

    发送邮件 //发送邮件 @ResponseBody @RequestMapping("email") public...

  • Golang使用SMTP发送邮件

    使用SMTP发送邮件 发送邮件测试 邮箱如下

网友评论

      本文标题:ABAP 发送邮件

      本文链接:https://www.haomeiwen.com/subject/rltlbxtx.html