DATA: Send_to LIKE SOMLRECI1 OCCURS 0 WITH HEADER LINE.
DATA: E_MAIL_SUBJECT TYPE SO_OBJ_DES.
DATA: OBJTXT LIKE SOLISTI1 OCCURS 10 WITH HEADER LINE.
DATA: OBJKEY TYPE SWO_TYPEID.
DATA: OBJTYP TYPE SWO_OBJTYP.
DATA: t_type TYPE char3.
DATA: t_Num TYPE char10.
*Mail Subject
if p_port = 'SALESORDER'.
t_type = '850'.
* E_MAIL_SUBJECT = 'New PO(EDI850)#'IDOC_Num-STATXT' from GNN'.
CONCATENATE 'New PO(EDI850)#'IDOC_Num-STATXT' from GNN' INTO E_MAIL_SUBJECT.
else.
t_type = '860'.
* E_MAIL_SUBJECT = 'New PO change(EDI860)#'IDOC_Num-STATXT' from GNN'.
CONCATENATE 'New PO change(EDI860)#'IDOC_Num-STATXT' from GNN' INTO E_MAIL_SUBJECT.
endif.
* Mail Body
OBJTXT = 'Dear All:'.
APPEND OBJTXT.
OBJTXT = 'Please find the sales order in sap.'.
APPEND OBJTXT.
OBJTXT = ''.
APPEND OBJTXT.
OBJTXT = 'Sales Order:'.
APPEND OBJTXT.
OBJTXT = SO_Num.
APPEND OBJTXT.
OBJTXT = ''.
APPEND OBJTXT.
APPEND OBJTXT.
OBJTXT = 'IDOC Number: '.
APPEND OBJTXT.
OBJTXT = IDOC_Num-DOCNUM.
APPEND OBJTXT.
IF SO_Num <> 'ERROR: Fail to find the SO#'.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = SO_Num
IMPORTING
output = t_Num.
OBJKEY = t_Num.
OBJTYP = 'BUS2032'.
ENDIF.
* SEND TO
SELECT MAILADDR FROM ZEDI_MAILLIST INTO TABLE Send_to WHERE CUSTCODE = '0000000000203702' AND EDITYPE = t_type.
* Send_to = IT_MAILIST.
CALL FUNCTION 'ZKZ_SEND_MAIL_WITH_BOR'
EXPORTING
MAIL_SUBJECT = E_MAIL_SUBJECT
P_OBJTYP = OBJTYP
P_OBJKEY = OBJKEY
TABLES
MAIL_BODY = OBJTXT
MAIL_SENDTO = Send_to.
FUNCTION ZKZ_SEND_MAIL_WITH_BOR.
*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" VALUE(MAIL_SUBJECT) TYPE SO_OBJ_DES OPTIONAL
*" VALUE(P_OBJTYP) TYPE SWO_OBJTYP OPTIONAL
*" VALUE(P_OBJKEY) TYPE SWO_TYPEID OPTIONAL
*" TABLES
*" MAIL_BODY STRUCTURE SOLISTI1 OPTIONAL
*" MAIL_SENDTO STRUCTURE SOMLRECI1
*" MAIL_COPYTO STRUCTURE SOMLRECI1 OPTIONAL
*"----------------------------------------------------------------------
DATA: DOCDATA LIKE SODOCCHGI1,
OBJPACK LIKE SOPCKLSTI1 OCCURS 10 WITH HEADER LINE,
OBJHEAD LIKE SOLISTI1 OCCURS 10 WITH HEADER LINE,
" OBJTXT LIKE SOLISTI1 OCCURS 10 WITH HEADER LINE,
OBJBIN LIKE SOLISTI1 OCCURS 10 WITH HEADER LINE,
OBJHEX LIKE SOLIX OCCURS 10 WITH HEADER LINE,
RECLIST LIKE SOMLRECI1 OCCURS 1 WITH HEADER LINE.
DATA: TAB_LINES TYPE I,
DOC_SIZE TYPE I,
OBJDES(100).
DATA:
L_OBJECT TYPE SWOTOBJID,
L_OBJHEADER LIKE SOXOBJ.
DATA: WA_MAIL_SENDTO TYPE SOMLRECI1,
WA_MAIL_COPYTO TYPE SOMLRECI1.
* For the BOR attachment
CONSTANTS:
C_OBJECT_DESCRIBE LIKE SWOTOBJID-DESCRIBE VALUE '*<OBJECT>*'.
*PARAMETERS:
* P_OBJTYP TYPE SWO_OBJTYP OBLIGATORY,
* P_OBJKEY TYPE SWO_TYPEID OBLIGATORY.
* Mail Subject
* CONCATENATE 'BOR Object' OBJDES 'as Attachment'
* INTO DOCDATA-OBJ_DESCR SEPARATED BY SPACE.
* CONDENSE DOCDATA-OBJ_DESCR.
DOCDATA-OBJ_DESCR = MAIL_SUBJECT.
IF NOT P_OBJKEY IS INITIAL.
* Mail Body
MAIL_BODY = ''.
APPEND MAIL_BODY.
MAIL_BODY = 'Please find enclosed linkage to open the object'.
APPEND MAIL_BODY.
ENDIF.
DESCRIBE TABLE MAIL_BODY LINES TAB_LINES.
READ TABLE MAIL_BODY INDEX TAB_LINES.
DOCDATA-DOC_SIZE = ( TAB_LINES - 1 ) * 255 + STRLEN( MAIL_BODY ).
* Write Packing List (Main)
CLEAR OBJPACK-TRANSF_BIN.
OBJPACK-HEAD_START = 0.
OBJPACK-HEAD_NUM = 0.
OBJPACK-BODY_START = 1.
OBJPACK-BODY_NUM = TAB_LINES.
OBJPACK-DOC_TYPE = 'RAW'.
APPEND OBJPACK.
IF NOT P_OBJKEY IS INITIAL.
CONCATENATE P_OBJTYP '-' P_OBJKEY INTO OBJDES.
DOCDATA-OBJ_NAME = 'BOR Object'.
* Create OBJ attachment
L_OBJECT-DESCRIBE = C_OBJECT_DESCRIBE.
L_OBJECT-OBJTYPE = P_OBJTYP.
L_OBJECT-OBJKEY = P_OBJKEY.
CALL FUNCTION 'OWN_LOGICAL_SYSTEM_GET'
IMPORTING
OWN_LOGICAL_SYSTEM = L_OBJECT-LOGSYS
EXCEPTIONS
OWN_LOGICAL_SYSTEM_NOT_DEFINED = 1
OTHERS = 2.
*IF SY-SUBRC <> 0.
* MESSAGE E398(00) WITH 'No Log Sys Found'.
*ENDIF.
MOVE-CORRESPONDING L_OBJECT TO L_OBJHEADER.
APPEND L_OBJHEADER TO OBJHEAD.
* Write Packing List (Attachment)
CLEAR OBJPACK.
OBJPACK-HEAD_START = 1.
OBJPACK-HEAD_NUM = 1.
OBJPACK-BODY_START = 0.
OBJPACK-BODY_NUM = 0.
OBJPACK-DOC_TYPE = 'OBJ'.
OBJPACK-OBJ_NAME = P_OBJTYP.
OBJPACK-OBJ_DESCR = OBJDES.
APPEND OBJPACK.
ENDIF.
* Create receiver list
LOOP AT MAIL_SENDTO INTO WA_MAIL_SENDTO.
RECLIST-RECEIVER = WA_MAIL_SENDTO-RECEIVER.
RECLIST-REC_TYPE = 'B'.
APPEND RECLIST.
ENDLOOP.
LOOP AT MAIL_COPYTO INTO WA_MAIL_COPYTO.
RECLIST-RECEIVER = WA_MAIL_COPYTO.
RECLIST-COPY = WA_MAIL_COPYTO.
RECLIST-REC_TYPE = 'B'.
APPEND RECLIST.
ENDLOOP.
* Send Message
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
DOCUMENT_DATA = DOCDATA
PUT_IN_OUTBOX = 'X'
" COMMIT_WORK = 'X'
TABLES
PACKING_LIST = OBJPACK
OBJECT_HEADER = OBJHEAD
CONTENTS_BIN = OBJBIN
CONTENTS_TXT = MAIL_BODY
RECEIVERS = RECLIST
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 <> 0.
MESSAGE ID 'SO' TYPE 'W' NUMBER '023'.
ENDIF.
ENDFUNCTION.