REPORT ZDDTEST003.
CONSTANTS:
GC_TAB TYPE C VALUE CL_BCS_CONVERT=>GC_TAB, "CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB
GC_CRLF TYPE C VALUE CL_BCS_CONVERT=>GC_CRLF. "CL_ABAP_CHAR_UTILITIES=>CR_LF
DATA: I_PACKING_LIST LIKE SOPCKLSTI1 OCCURS 0 WITH HEADER LINE,
I_RECEIVERS LIKE SOMLRECI1 OCCURS 0 WITH HEADER LINE, "receivers
I_CONTENTS_TXT LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE, "ASCII contents of object and attachments
I_CONTENTS_HEX LIKE SOLIX OCCURS 0 WITH HEADER LINE, "Binary contents of object and attachments
I_CONTENTS_BIN LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE,
I_OBJECT_HEADER LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE, "attachments name
W_DOC_DATA LIKE SODOCCHGI1.
DATA: C_MIMETYPE TYPE CHAR64 VALUE 'APPLICATION/MSEXCEL;charset=utf-16le'.
DATA: V_XATTACH TYPE XSTRING.
DATA: LV_STRING TYPE STRING.
DATA: TAB_LINES LIKE SY-TABIX,
W_SENT_ALL(1) TYPE C,
W_ERROR TYPE SY-SUBRC.
DATA: I_SPFLI LIKE STANDARD TABLE OF SPFLI WITH HEADER LINE.
START-OF-SELECTION.
PERFORM GET_SPFLI_DATA.
PERFORM DEFINE_MAIL_HEADER.
PERFORM DEFINE_MAIL_ATTACHMENT.
PERFORM GET_RECEIVERS.
PERFORM SEND_EMAIL_MESSAGE.
FORM GET_SPFLI_DATA .
SELECT * FROM SPFLI
INTO CORRESPONDING FIELDS OF TABLE I_SPFLI.
ENDFORM. " GET_SPFLI_DATA
FORM DEFINE_MAIL_HEADER .
DATA: TMP_DATE LIKE SY-DATUM.
DATA: TMP_CHAR(30).
TMP_DATE = SY-DATUM.
CONCATENATE 'Overdue Batch ' SY-DATUM INTO TMP_CHAR.
W_DOC_DATA-OBJ_DESCR = 'Hello'. "Email Subject.
W_DOC_DATA-PRIORITY = 1. "mail PRIORITY¡A 1 is highest
W_DOC_DATA-OBJ_LANGU = SY-LANGU.
W_DOC_DATA-OBJ_NAME = 'OFFER'. "Name of document..
W_DOC_DATA-SENSITIVTY = 'O'. "Document sensitivity.
I_CONTENTS_TXT = 'Dear Mr and Miss:'.
APPEND I_CONTENTS_TXT.
I_CONTENTS_TXT = ' '.
APPEND I_CONTENTS_TXT.
I_CONTENTS_TXT = ' Please check attachment in time!'.
APPEND I_CONTENTS_TXT.
I_CONTENTS_TXT = ' This Email is sent by systme, Do not Return the Email.'.
APPEND I_CONTENTS_TXT.
I_CONTENTS_TXT =' If you have any problem, please contact with ERP.'.
APPEND I_CONTENTS_TXT.
I_CONTENTS_TXT = ' '.
APPEND I_CONTENTS_TXT.
I_CONTENTS_TXT = TMP_DATE.
APPEND I_CONTENTS_TXT.
DESCRIBE TABLE I_CONTENTS_TXT LINES TAB_LINES.
READ TABLE I_CONTENTS_TXT INDEX TAB_LINES.
W_DOC_DATA-DOC_SIZE = ( TAB_LINES - 1 ) * 255 + STRLEN( I_CONTENTS_TXT ).
CLEAR I_PACKING_LIST-TRANSF_BIN.
I_PACKING_LIST-TRANSF_BIN = SPACE. "ASCII format/binary format
I_PACKING_LIST-HEAD_START = 1.
I_PACKING_LIST-HEAD_NUM = 0.
I_PACKING_LIST-BODY_START = 1.
I_PACKING_LIST-BODY_NUM = TAB_LINES.
I_PACKING_LIST-DOC_TYPE = 'RAW'.
APPEND I_PACKING_LIST.
ENDFORM. " DEFINE_MAIL_HEADER
FORM DEFINE_MAIL_ATTACHMENT .
LOOP AT I_SPFLI.
CONCATENATE LV_STRING
I_SPFLI-CARRID GC_TAB
I_SPFLI-CONNID GC_TAB
I_SPFLI-COUNTRYFR GC_TAB
I_SPFLI-CITYFROM GC_TAB
I_SPFLI-CITYFROM GC_TAB
I_SPFLI-COUNTRYTO GC_TAB
I_SPFLI-CITYTO GC_TAB
I_SPFLI-AIRPTO GC_CRLF
INTO LV_STRING.
ENDLOOP.
CALL FUNCTION 'SCMS_STRING_TO_XSTRING'
EXPORTING
TEXT = LV_STRING
MIMETYPE = C_MIMETYPE
IMPORTING
BUFFER = V_XATTACH
EXCEPTIONS
FAILED = 1
OTHERS = 2.
IF SY-SUBRC = 0.
CONCATENATE CL_ABAP_CHAR_UTILITIES=>BYTE_ORDER_MARK_LITTLE
V_XATTACH INTO V_XATTACH IN BYTE MODE.
ENDIF.
CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
EXPORTING
BUFFER = V_XATTACH
TABLES
BINARY_TAB = I_CONTENTS_HEX.
DESCRIBE TABLE I_SPFLI LINES TAB_LINES.
TAB_LINES = TAB_LINES .
I_PACKING_LIST-TRANSF_BIN = 'X'.
I_PACKING_LIST-HEAD_START = 1.
I_PACKING_LIST-HEAD_NUM = 0.
I_PACKING_LIST-BODY_START = 1.
I_PACKING_LIST-BODY_NUM = TAB_LINES.
I_PACKING_LIST-DOC_TYPE = 'XLS'.
I_PACKING_LIST-OBJ_NAME = 'ATTACHMENT'.
I_PACKING_LIST-OBJ_DESCR = 'spfli'.
I_PACKING_LIST-DOC_SIZE = TAB_LINES * 255.
APPEND I_PACKING_LIST.
ENDFORM. " DEFINE_MAIL_ATTACHMENT
FORM GET_RECEIVERS .
CLEAR I_RECEIVERS.
REFRESH I_RECEIVERS.
I_RECEIVERS-RECEIVER = '461356592@qq.com'."Email Address
I_RECEIVERS-REC_TYPE = 'U'. "Internet address
I_RECEIVERS-NOTIF_READ = 'X'.
I_RECEIVERS-COM_TYPE = 'INT'.
I_RECEIVERS-NOTIF_DEL = 'X'.
I_RECEIVERS-NOTIF_NDEL = 'X'.
APPEND I_RECEIVERS.
ENDFORM. " GET_RECEIVERS
FORM SEND_EMAIL_MESSAGE.
DATA: W_SUBRC LIKE SY-SUBRC.
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
DOCUMENT_DATA = W_DOC_DATA "Attributes of new document
PUT_IN_OUTBOX = 'X' "Flag: Move document to outbox after send
COMMIT_WORK = 'X' "An explicit COMMIT WORK is to be set
IMPORTING
SENT_TO_ALL = W_SENT_ALL
TABLES
PACKING_LIST = I_PACKING_LIST "Information about structure of data tables
OBJECT_HEADER = I_OBJECT_HEADER
CONTENTS_HEX = I_CONTENTS_HEX
CONTENTS_TXT = I_CONTENTS_TXT "ASCII contents of object and attachments
RECEIVERS = I_RECEIVERS "Document recipients with send attributes
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.
W_SUBRC = SY-SUBRC.
WAIT UP TO 2 SECONDS.
IF W_SUBRC EQ 0.
SUBMIT RSCONN01 WITH MODE = 'INT'
WITH OUTPUT = 'X'
AND RETURN.
ENDIF.
ENDFORM. " SEND_EMAIL_MESSAGE
|