ABAP 发送邮件(表格/附件)

前言

发送邮件功能在SAP 中比较常见的了,比如报表,生产上的数据记录等,都需要用到邮件功能。现展示一个简单的邮件功能给大家,望采纳。

语法

千篇一律,实用最要紧,直接贴代码。


DATA: GT_SPFLI TYPE TABLE OF SPFLI WITH HEADER LINE.
DATA:M_REMARK TYPE SO_TEXT255,STITLE1(50) TYPE C,MAILTO TYPE AD_SMTPADR.
DATA:OREF TYPE REF TO CX_ROOT,TXT TYPE STRING, LV_STRING TYPE STRING.

CONSTANTS:
  GC_TAB  TYPE C VALUE CL_BCS_CONVERT=>GC_TAB,  "CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB
  GC_CRLF TYPE C VALUE CL_BCS_CONVERT=>GC_CRLF.

DATA BINARY_CONTENT TYPE SOLIX_TAB.
DATA SIZE           TYPE SO_OBJ_LEN.
DATA SEND_REQUEST   TYPE REF TO CL_BCS.
DATA DOCUMENT       TYPE REF TO CL_DOCUMENT_BCS.
DATA RECIPIENT      TYPE REF TO IF_RECIPIENT_BCS.
DATA RECIPSEND      TYPE REF TO IF_SENDER_BCS.
DATA BCS_EXCEPTION  TYPE REF TO CX_BCS.
DATA BINARY_CONTENT_FORECAST TYPE SOLIX_TAB.
DATA MAIN_TEXT      TYPE BCSY_TEXT.
DATA SENT_TO_ALL    TYPE OS_BOOLEAN.

DATA:BEGIN OF T_EXCEL OCCURS 0,
  CARRID   TYPE SPFLI-CARRID,
  CITYFROM TYPE SPFLI-CITYFROM,
  END OF T_EXCEL.
 

 SELECT * INTO CORRESPONDING FIELDS OF TABLE GT_SPFLI FROM SPFLI.
  CLEAR  :T_EXCEL,MAIN_TEXT,STITLE1,LV_STRING.
  REFRESH:T_EXCEL,MAIN_TEXT.
  "标题---------------------------------------------
  CONCATENATE '测试数据(' SY-DATUM+0(4) '-' SY-DATUM+4(2) '-' SY-DATUM+6(2) ')' INTO STITLE1.
  "说明-------------------------------------
  M_REMARK = 'Dear ALL:'.
  APPEND M_REMARK TO MAIN_TEXT.
  M_REMARK = ''.
  APPEND M_REMARK TO MAIN_TEXT.

  M_REMARK = '请查看附件!'.
  APPEND M_REMARK TO MAIN_TEXT.
  M_REMARK = ''.
  APPEND M_REMARK TO MAIN_TEXT.

  M_REMARK = '谢谢!'.
  APPEND M_REMARK TO MAIN_TEXT.
  M_REMARK = ''.
  APPEND M_REMARK TO MAIN_TEXT.
  "附件数据---------------------------------------
  T_EXCEL-CARRID   = ''.
  T_EXCEL-CITYFROM = 'Depart.city'.
  INSERT T_EXCEL INDEX 1.
  LOOP AT GT_SPFLI.
    T_EXCEL-CARRID = GT_SPFLI-CARRID.
    T_EXCEL-CITYFROM = GT_SPFLI-CITYFROM .
    APPEND T_EXCEL.
    CLEAR T_EXCEL.
  ENDLOOP.

  LOOP AT T_EXCEL.
    CONCATENATE LV_STRING
    T_EXCEL-CARRID           GC_TAB
    T_EXCEL-CITYFROM          GC_CRLF
    INTO LV_STRING.
  ENDLOOP.
  "---------------------------------------------------
  TRY.
      CL_BCS_CONVERT=>STRING_TO_SOLIX(
        EXPORTING
          IV_STRING   = LV_STRING
          IV_CODEPAGE = '4103'  "suitable for MS Excel, leave empty
          IV_ADD_BOM  = 'X'     "for other doc types
        IMPORTING
          ET_SOLIX  = BINARY_CONTENT
          EV_SIZE   = SIZE ).
    CATCH CX_BCS.
      MESSAGE E445(SO).
  ENDTRY.

  TRY.

      SEND_REQUEST = CL_BCS=>CREATE_PERSISTENT( ).
      DOCUMENT = CL_DOCUMENT_BCS=>CREATE_DOCUMENT(
       I_TYPE    = 'RAW'
       I_TEXT    = MAIN_TEXT
       I_SUBJECT = STITLE1 ).      " 邮件主题名

      DOCUMENT->ADD_ATTACHMENT(
        I_ATTACHMENT_TYPE    = 'XLS'                        " 附件格式
        I_ATTACHMENT_SUBJECT = 'Attachment'         " attachment name
        I_ATTACHMENT_SIZE    = SIZE                         "附件大小
        I_ATT_CONTENT_HEX    = BINARY_CONTENT ).            "附件内容
      SEND_REQUEST->SET_DOCUMENT( DOCUMENT ).

      "寄件人若为空,则默认SAP 邮件,SU01 维护默认邮件----------------
*      RECIPSEND = CL_CAM_ADDRESS_BCS=>CREATE_INTERNET_ADDRESS( MAILTO ).
*      SEND_REQUEST->SET_SENDER( RECIPSEND ).

      "收件人--------------------------------------------------------
      MAILTO = 'AA<XXXX.ORG>'."需维护收件人,
      RECIPIENT = CL_CAM_ADDRESS_BCS=>CREATE_INTERNET_ADDRESS( MAILTO ).
      SEND_REQUEST->ADD_RECIPIENT( RECIPIENT ).
      SEND_REQUEST->SET_SEND_IMMEDIATELY( 'X' ).  "设置立即发送
*      SEND_REQUEST->SEND_REQUEST->SET_LINK_TO_OUTBOX( 'X' ). "与outbox关联

      CALL METHOD SEND_REQUEST->SEND(
        EXPORTING
          I_WITH_ERROR_SCREEN = 'X'
        RECEIVING
          RESULT              = SENT_TO_ALL ).

      IF SENT_TO_ALL = 'X'.
        COMMIT WORK AND WAIT.
        MESSAGE '发送成功' TYPE 'S'.
      ELSE.
        ROLLBACK WORK.
        MESSAGE '发送失败' TYPE 'S' DISPLAY LIKE 'E'.
      ENDIF.

    CATCH CX_BCS INTO BCS_EXCEPTION.
      MESSAGE I865(SO) WITH BCS_EXCEPTION->ERROR_TYPE.
  ENDTRY.
 

结果

总结

本次介绍了ABAP 发邮件的功能,后期还会继续更新其他功能。若有疑问或错误,请到评论区留言,谢谢!

  • 19
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

指尖溯光

创作不易您的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值