记录一下,方便项目上直接copy


发邮件的FM

FUNCTION ZLM_TEST_MAIL_01.
*"----------------------------------------------------------------------
*"*"Local Interface:
*"  IMPORTING
*"     VALUE(MAIL_TITLE) TYPE  SO_OBJ_DES OPTIONAL
*"     REFERENCE(MAIL_TEXT) TYPE  STRING
*"  EXPORTING
*"     VALUE(ERROR_TEXT) TYPE  STRING
*"  TABLES
*"      SEND_LIST STRUCTURE  SOLISTI1 OPTIONAL
*"----------------------------------------------------------------------

  DATABEGIN OF GT_SEND OCCURS 0.             "E-mail address
          INCLUDE STRUCTURE SOMLRECI1.
  DATAEND OF GT_SEND.

  DATAGS_DATA LIKE SODOCCHGI1,              "E-mail setting
        TAB_LINES  TYPE I,
        DOC_SIZE   TYPE I.
  DATAL_TEXT(50).

  DATABEGIN OF GT_ITAB OCCURS 0,            "E-mail text
          TEXT(255),
        END OF GT_ITAB.

  DATAIT_SITAB TYPE TABLE OF STRING.
  SPLIT MAIL_TEXT AT '/n/t' INTO TABLE GT_ITAB.

* Email的接收人员
  LOOP AT SEND_LIST.
    GT_SEND-RECEIVER     SEND_LIST-LINE.
    GT_SEND-REC_TYPE     =  'U'.
    GT_SEND-EXPRESS      =  'X'.
    APPEND GT_SEND.
  ENDLOOP.

  CLEARGS_DATA.

  GS_DATA-OBJ_NAME     =  'URGENT'.
  GS_DATA-OBJ_DESCR    =  MAIL_TITLE"邮件标题
  GS_DATA-OBJ_LANGU    =  '1'"中文
*GS_DATA-SENSITIVTY   =  'P'.
  GS_DATA-OBJ_PRIO     =  '1'.
  GS_DATA-NO_CHANGE    =  'X'.
  GS_DATA-PRIORITY     =  '1'.
*   Write Packing List (Main)
  DESCRIBE TABLE GT_ITAB LINES TAB_LINES.
  READ     TABLE GT_ITAB INDEX TAB_LINES.
  GS_DATA-DOC_SIZE TAB_LINES 255 STRLENGT_ITAB ).

* SEND THE EMAIL
  CALL FUNCTION 'SO_NEW_DOCUMENT_SEND_API1'
    EXPORTING
      DOCUMENT_DATA              GS_DATA
      DOCUMENT_TYPE              'RAW'
      PUT_IN_OUTBOX              'X'
      COMMIT_WORK                'X'
    TABLES
      OBJECT_CONTENT             GT_ITAB
      RECEIVERS                  GT_SEND
    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.

  IF SY-SUBRC NE 0.
    ERROR_TEXT '邮件发送失败'.
  ElseIF SY-SUBRC 0.

* 如果不自动送,加上执行邮件立即发送程序代码
  SUBMIT RSCONN01 WITH MODE 'INT'
                WITH OUTPUT 'X' "显示发送结果  可以使用空 
                AND RETURN.
  MESSAGE '发送成功' TYPE 'S'.
  ENDIF.