SAP 使用ABAP实现邮件发送(一):
*&---------------------------------------------------------------------*
*& Form FRM_DEFINE_MAIL_HEADER
*&---------------------------------------------------------------------*
*& 邮件内容填充
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FRM_DEFINE_MAIL_HEADER .
DATA:LV_TMP_DATE LIKE SY-DATUM.
DATA:LV_TMP_CHAR(30).
LV_TMP_DATE = SY-DATUM.
CONCATENATE 'Overdue Batch ' SY-DATUM INTO LV_TMP_CHAR.
GT_OBJECT_HEADER = ''."文本头
APPEND GT_OBJECT_HEADER.
GT_CONTENTS_TXT = 'Dear Mr and Miss:'.
APPEND GT_CONTENTS_TXT.
GT_CONTENTS_TXT = ' '.
APPEND GT_CONTENTS_TXT.
"邮件数据填充
GT_CONTENTS_TXT = '预算监控报表异常数据:'.
APPEND GT_CONTENTS_TXT.
GT_CONTENTS_TXT = ' '.
APPEND GT_CONTENTS_TXT.
LOOP AT GT_ALV INTO DATA(LS_ALV).
GT_CONTENTS_TXT-LINE = "填充你的数据
APPEND GT_CONTENTS_TXT.
ENDLOOP.
GT_CONTENTS_TXT = ' '.
APPEND GT_CONTENTS_TXT.
GT_CONTENTS_TXT = LV_TMP_DATE.
APPEND GT_CONTENTS_TXT.
DESCRIBE TABLE GT_CONTENTS_TXT LINES GV_TAB_LINES.
READ TABLE GT_CONTENTS_TXT INDEX GV_TAB_LINES.
GS_DOC_DATA-DOC_SIZE = ( GV_TAB_LINES - 1 ) * 255 + STRLEN( GT_CONTENTS_TXT ).
********count lines by man context*************
CLEAR GT_PACKING_LIST-TRANSF_BIN.
GT_PACKING_LIST-TRANSF_BIN = 'X'. "ASCII format/binary format
GT_PACKING_LIST-HEAD_START = 1.
GT_PACKING_LIST-HEAD_NUM = 0.
GT_PACKING_LIST-BODY_START = 1.
GT_PACKING_LIST-BODY_NUM = GV_TAB_LINES.
GT_PACKING_LIST-DOC_TYPE = 'RAW'.
APPEND GT_PACKING_LIST.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_SEND_EMAIL_MESSAGE
*&---------------------------------------------------------------------*
*& 设置发送者邮箱地址和接收者的邮箱地址
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FRM_SEND_EMAIL_MESSAGE .
DATA: LV_SUBRC LIKE SY-SUBRC.
DATA: LV_SENDER_ADDRESS_TYPE TYPE SOEXTRECI1-ADR_TYP VALUE 'SMTP'.
DATA:LV_SENDER_ADDRESS TYPE SOEXTRECI1-RECEIVER.
LV_SENDER_ADDRESS = ''."发送方邮箱地址
* LV_SENDER_ADDRESS = ''.
* Add the recipients email address
CLEAR GT_RECEIVERS.
REFRESH GT_RECEIVERS.
GT_RECEIVERS-RECEIVER = ''."Email Address "接收方邮箱地址
GT_RECEIVERS-REC_TYPE = 'U'. "Internet address
GT_RECEIVERS-NOTIF_READ = 'X'.
GT_RECEIVERS-COM_TYPE = 'INT'.
GT_RECEIVERS-NOTIF_DEL = 'X'.
GT_RECEIVERS-NOTIF_NDEL = 'X'.
GT_RECEIVERS-COPY = 'X'.
APPEND GT_RECEIVERS.
GT_RECEIVERS-RECEIVER = ''(004)."Email Address
GT_RECEIVERS-REC_TYPE = 'U'. "Internet address
GT_RECEIVERS-NOTIF_READ = 'X'.
GT_RECEIVERS-COM_TYPE = 'INT'.
GT_RECEIVERS-NOTIF_DEL = 'X'.
GT_RECEIVERS-NOTIF_NDEL = 'X'.
GT_RECEIVERS-COPY = 'X'.
APPEND GT_RECEIVERS.
* 发送邮件
CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
EXPORTING
DOCUMENT_DATA = GS_DOC_DATA
PUT_IN_OUTBOX = 'X'
SENDER_ADDRESS = LV_SENDER_ADDRESS
SENDER_ADDRESS_TYPE = LV_SENDER_ADDRESS_TYPE
COMMIT_WORK = 'X'
TABLES
PACKING_LIST = GT_PACKING_LIST
OBJECT_HEADER = GT_OBJECT_HEADER
* contents_hex = gt_contents_hex
CONTENTS_TXT = GT_CONTENTS_TXT
RECEIVERS = GT_RECEIVERS
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.
LV_SUBRC = SY-SUBRC.
IF LV_SUBRC EQ 0.
WAIT UP TO 2 SECONDS.
SUBMIT RSCONN01 WITH MODE = 'INT'
WITH OUTPUT = 'X'
AND RETURN.
ENDIF.
ENDFORM.
邮件发送效果: