SAP 发送带附件邮件示例
SAP 发送带附件邮件示例程序
示例代码:
DATA: GV_FILE TYPE CHAR50. "Like SO_OBJ_DES
PARAMETERS : P_FILE TYPE CHAR100 OBLIGATORY.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
PERFORM FRM_GET_FIELDNAME.
START-OF-SELECTION.
PERFORM FRM_SEND_MAIL.
FORM FRM_GET_FIELDNAME .
DATA: LV_RC TYPE I.
DATA: LT_FILE_TABLE TYPE FILETABLE.
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
EXPORTING
WINDOW_TITLE = '打开文件'
CHANGING
FILE_TABLE = LT_FILE_TABLE
RC = LV_RC.
IF SY-SUBRC = 0.
READ TABLE LT_FILE_TABLE INTO DATA(WA_FILE_TABLE) INDEX 1.
P_FILE = WA_FILE_TABLE-FILENAME.
ENDIF.
CALL FUNCTION 'STPU1_EXTRACT_FILENAME'
EXPORTING
FILE_AND_PATH = P_FILE
IMPORTING
FILE = GV_FILE
* PATHNAME =
.
ENDFORM.
FORM FRM_SEND_MAIL .
*File Object Definition
DATA: LV_FILENAME TYPE STRING,
LV_SIZE TYPE I,
LV_SIZE_CHAR TYPE SO_OBJ_LEN,
LT_DATA TYPE SOLIX_TAB.
*Mail Object Definition
DATA: L_SEND_REQUEST TYPE REF TO CL_BCS,
L_DOCUMENT TYPE REF TO CL_DOCUMENT_BCS,
L_SENDER TYPE REF TO CL_SAPUSER_BCS,
L_RECIPIENT TYPE REF TO CL_CAM_ADDRESS_BCS,
L_BCS_EXCEPTION TYPE REF TO CX_DOCUMENT_BCS,
L_ADDR_EXCEPTION TYPE REF TO CX_ADDRESS_BCS,
L_SEND_EXCEPTION TYPE REF TO CX_SEND_REQ_BCS,
L_ATTACHMENT_NAME TYPE SO_OBJ_DES.
DATA: LV_CONTENTS TYPE STRING,
LT_MTEXT TYPE BCSY_TEXT,
LV_TITLE TYPE SO_OBJ_DES,
LT_SENDER TYPE TABLE OF AD_SMTPADR.
*Get File Data
LV_FILENAME = P_FILE.
CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_UPLOAD
EXPORTING
FILENAME = LV_FILENAME
FILETYPE = 'BIN'
* HAS_FIELD_SEPARATOR = SPACE
* HEADER_LENGTH = 0
* READ_BY_LINE = 'X'
* DAT_MODE = SPACE
* CODEPAGE = SPACE
* IGNORE_CERR = ABAP_TRUE
* REPLACEMENT = '#'
* VIRUS_SCAN_PROFILE =
IMPORTING
FILELENGTH = LV_SIZE
* HEADER =
CHANGING
DATA_TAB = LT_DATA
* ISSCANPERFORMED = SPACE
EXCEPTIONS
FILE_OPEN_ERROR = 1
FILE_READ_ERROR = 2
NO_BATCH = 3
GUI_REFUSE_FILETRANSFER = 4
INVALID_TYPE = 5
NO_AUTHORITY = 6
UNKNOWN_ERROR = 7
BAD_DATA_FORMAT = 8
HEADER_NOT_ALLOWED = 9
SEPARATOR_NOT_ALLOWED = 10
HEADER_TOO_LONG = 11
UNKNOWN_DP_ERROR = 12
ACCESS_DENIED = 13
DP_OUT_OF_MEMORY = 14
DISK_FULL = 15
DP_TIMEOUT = 16
NOT_SUPPORTED_BY_GUI = 17
ERROR_NO_GUI = 18
OTHERS = 19.
IF SY-SUBRC <> 0.
LV_SIZE_CHAR = LV_SIZE.
ENDIF.
* Send Mail To Admin
TRY.
*-----------------step1: create request-----------------*
L_SEND_REQUEST = CL_BCS=>CREATE_PERSISTENT( ).
*-----------------step2: create mail content-----------------*
* Set Mian Contets
LV_CONTENTS = 'Line 1'.
APPEND LV_CONTENTS TO LT_MTEXT.
LV_CONTENTS = 'Line 2'.
APPEND LV_CONTENTS TO LT_MTEXT.
LV_CONTENTS = |Line 3|.
APPEND LV_CONTENTS TO LT_MTEXT.
* Set Title
CONCATENATE 'SET' 'Email subject' INTO LV_TITLE SEPARATED BY SPACE.
L_DOCUMENT = CL_DOCUMENT_BCS=>CREATE_DOCUMENT(
I_TYPE = 'RAW' "RAW以RAW格式发送 HTM以html格式发送;其它更多类型请检查透明表TSOTD中的项
I_TEXT = LT_MTEXT
I_SUBJECT = LV_TITLE ).
*-----------------step3: add Mail Attachement-----------------*
L_ATTACHMENT_NAME = GV_FILE.
CALL METHOD L_DOCUMENT->ADD_ATTACHMENT
EXPORTING
I_ATTACHMENT_TYPE = 'BIN'
I_ATTACHMENT_SUBJECT = L_ATTACHMENT_NAME
I_ATTACHMENT_SIZE = LV_SIZE_CHAR
* I_ATTACHMENT_LANGUAGE = SPACE
* I_ATT_CONTENT_TEXT =
I_ATT_CONTENT_HEX = LT_DATA
* I_ATTACHMENT_HEADER =
* IV_VSI_PROFILE =
.
*-----------------step4: add mail content-----------------*
L_SEND_REQUEST->SET_DOCUMENT( L_DOCUMENT ).
*-----------------step5: mail address-----------------*
* Set Sender sy-uname
L_SENDER = CL_SAPUSER_BCS=>CREATE( SY-UNAME ).
CALL METHOD L_SEND_REQUEST->SET_SENDER
EXPORTING
I_SENDER = L_SENDER.
* Set Receiver
SELECT LOW FROM TVARVC INTO TABLE LT_SENDER WHERE NAME = 'Z_PLM_DOCSTATUS_MAIL'. "Read STVARVC Address List
LOOP AT LT_SENDER INTO DATA(WA_SENDER).
L_RECIPIENT = CL_CAM_ADDRESS_BCS=>CREATE_INTERNET_ADDRESS( WA_SENDER ).
CALL METHOD L_SEND_REQUEST->ADD_RECIPIENT
EXPORTING
I_RECIPIENT = L_RECIPIENT
I_EXPRESS = 'X'
I_COPY = ' '
I_BLIND_COPY = ' '
I_NO_FORWARD = ' '.
ENDLOOP.
*-----------------step6: add address to request-----------------*
L_SEND_REQUEST->SET_SEND_IMMEDIATELY( 'X' ).
*-----------------step7: commit request
L_SEND_REQUEST->SEND( ).
COMMIT WORK AND WAIT.
* Catch Exception
CATCH CX_DOCUMENT_BCS INTO L_BCS_EXCEPTION.
CATCH CX_SEND_REQ_BCS INTO L_SEND_EXCEPTION.
CATCH CX_ADDRESS_BCS INTO L_ADDR_EXCEPTION.
ENDTRY.
RETURN.
ENDFORM.
效果
post SAP-Garson
原文链接:https://blog.csdn.net/qq_30797051/article/details/109012899文章来自于网络,如果侵犯了您的权益,请联系站长删除!