发送mail例子

注意下面例子中:

  RECVLIST-REC_TYPE = 'U'.
  RECVLIST-COM_TYPE = 'INT'.

设定发送到internet的mail而非SAP用户inbox。如要发送到SAP mail的话应该将上面设定注释掉。

REPORT Z_EMAIL .

****************************************************************
*                                                              *
* Mit diesem Programm k鰊nt ihr aus dem R/3 heraus e-mails     *       
* versenden.  Es ist eine vereinfachte Version mit 10 Eingabe- *
* zeilen aber funktioniert. Der Empf醤ger kann nicht an auf    *
* die e-mail antworten. Die email-Adresse des Absenders sieht  *
* wie folgt aus: SY-UNAME vor  dem @ und sysid und client,     *
* (z.B. DEV_100) nach dem @.                                   *
****************************************************************

* Parameters
PARAMETERS: SUB LIKE SOMLRECI1-RECEIVER
              DEFAULT 'Subject line'.
PARAMETERS: EAD LIKE SOMLRECI1-RECEIVER
              DEFAULT 'me@here.com'.
PARAMETERS: L01 LIKE SOLISTI1-LINE
              DEFAULT 'Body text'.
PARAMETERS: L02 LIKE SOLISTI1-LINE.
PARAMETERS: L03 LIKE SOLISTI1-LINE.
PARAMETERS: L04 LIKE SOLISTI1-LINE.
PARAMETERS: L05 LIKE SOLISTI1-LINE.
PARAMETERS: L06 LIKE SOLISTI1-LINE.
PARAMETERS: L07 LIKE SOLISTI1-LINE.
PARAMETERS: L08 LIKE SOLISTI1-LINE.
PARAMETERS: L09 LIKE SOLISTI1-LINE.
PARAMETERS: L10 LIKE SOLISTI1-LINE.

* Macro
DEFINE M_LINEADD.
IF NOT &1 IS INITIAL.
  TAB = &1. APPEND TAB.
ENDIF.
END-OF-DEFINITION.

* Variables
DATA: BEGIN OF TAB OCCURS 10.
DATA:   LINE(40).
DATA: END OF TAB.
DATA: RC LIKE SY-SUBRC.

* Main program
START-OF-SELECTION.
  REFRESH TAB.
  M_LINEADD L01.
  M_LINEADD L02.
  M_LINEADD L03.
  M_LINEADD L04.
  M_LINEADD L05.
  M_LINEADD L06.
  M_LINEADD L07.
  M_LINEADD L08.
  M_LINEADD L09.
  M_LINEADD L10.
  PERFORM Z_SEND_EMAIL TABLES TAB USING EAD SUB RC.
  IF RC IS INITIAL.
    WRITE: / 'Your e-mail has been sent successfully.'.
  ELSE.
    WRITE: / 'Your attempt to send an e-mail failed.'.
  ENDIF.

*---------------------------------------------------------------------*
*       FORM Z_SEND_EMAIL                                             *
*---------------------------------------------------------------------*
*  -->  ITAB                                                          *
*  -->  EMAILADDRESS                                                  *
*  -->  SUBJECTLINE                                                   *
*  -->  RETURNCODE                                                    *
*---------------------------------------------------------------------*
FORM Z_SEND_EMAIL TABLES ITAB
                  USING  EMAILADDRESS TYPE C
                         SUBJECTLINE  TYPE C
                         RETURNCODE   LIKE SY-SUBRC.
  DATA: DOCUMENT LIKE SODOCCHGI1.
  DATA: PACKLIST LIKE SOPCKLSTI1     OCCURS 0 WITH HEADER LINE.
  DATA: CONTENTS LIKE SOLISTI1       OCCURS 0 WITH HEADER LINE.
  DATA: RECVLIST LIKE SOMLRECI1      OCCURS 0 WITH HEADER LINE.
  DATA: FIELDLEN TYPE P.
  DATA: TABLINES TYPE P.
*
* Initialization
  CLEAR: CONTENTS, DOCUMENT, PACKLIST, RECVLIST.
  REFRESH: CONTENTS, PACKLIST, RECVLIST.
  RETURNCODE = 12.

* Contents
  CONCATENATE
    'The following message has been sent from SAP'
    SY-SYSID
    SY-MANDT
    '(Do not reply to this message):'
      INTO CONTENTS SEPARATED BY ' '.
  APPEND CONTENTS.
  CONTENTS = SY-ULINE(40).
  APPEND CONTENTS.
  LOOP AT ITAB.
    CONTENTS = ITAB.
    APPEND CONTENTS.
  ENDLOOP.
  CONTENTS = SY-ULINE(40).
  APPEND CONTENTS.

* Document
  DOCUMENT-OBJ_NAME = 'EMAIL'.
  DOCUMENT-OBJ_DESCR = SUBJECTLINE.
  DOCUMENT-OBJ_LANGU = SY-LANGU.
  DOCUMENT-OBJ_EXPDAT = SY-DATUM.
  DOCUMENT-SENSITIVTY = 'F'.
  DOCUMENT-OBJ_PRIO = 9.
  DOCUMENT-NO_CHANGE = 'X'.
  DOCUMENT-PRIORITY = 9.
  DOCUMENT-EXPIRY_DAT = SY-DATUM.
  DESCRIBE FIELD CONTENTS-LINE LENGTH FIELDLEN.
  DESCRIBE TABLE CONTENTS LINES TABLINES.
  MULTIPLY FIELDLEN BY TABLINES.
  DOCUMENT-DOC_SIZE = FIELDLEN.

* Packing list
  PACKLIST-TRANSF_BIN = SPACE.
  PACKLIST-HEAD_START = 1.
  PACKLIST-HEAD_NUM = 0.
  PACKLIST-BODY_START = 1.
  DESCRIBE TABLE CONTENTS LINES PACKLIST-BODY_NUM.
  PACKLIST-DOC_TYPE = 'RAW'.
  APPEND PACKLIST.

* Receiver list
  RECVLIST-RECEIVER = EMAILADDRESS.
  RECVLIST-REC_TYPE = 'U'.
  RECVLIST-COM_TYPE = 'INT'.
  RECVLIST-NOTIF_DEL = 'X'.
  RECVLIST-NOTIF_NDEL = 'X'.
  APPEND RECVLIST.

* Call the mail function
  CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
       EXPORTING
            DOCUMENT_DATA              = DOCUMENT
            PUT_IN_OUTBOX              = 'X'
       TABLES
            PACKING_LIST               = PACKLIST
            CONTENTS_TXT               = CONTENTS
            RECEIVERS                  = RECVLIST
       EXCEPTIONS
            TOO_MANY_RECEIVERS         = 1
            DOCUMENT_NOT_SENT          = 2
            DOCUMENT_TYPE_NOT_EXIST    = 3
            OPERATION_NO_AUTHORIZATION = 4
            PARAMETER_ERROR            = 5
            X_ERROR                    = 6
            ENQUEUE_ERROR              = 7
            OTHERS                     = 8.
  RETURNCODE = SY-SUBRC.
*
ENDFORM. 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值