干货铺 QQ 群: 834508274 ,纯顾问群,禁止发招聘及一切无关链接 广告等,欢迎顾问加入,申请时请提供模块,加入后请看公告,谢谢配合


记录一下,方便项目上直接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
*"----------------------------------------------------------------------

DATA: BEGIN OF GT_SEND OCCURS 0. "E-mail address
INCLUDE STRUCTURE SOMLRECI1.
DATA: END OF GT_SEND.

DATA: GS_DATA LIKE SODOCCHGI1, "E-mail setting
TAB_LINES TYPE I,
DOC_SIZE TYPE I.
DATA: L_TEXT(50).

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

DATA: IT_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.

CLEAR: GS_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 - 1 ) * 255 + STRLEN( GT_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.

ENDFUNCTION.