‎2010 Apr 07 4:15 PM
Hello Experts:
I need to send out material movement (document) information using IDOC. I found MBGMCR02 is a suitable one but the process code is inbound.
I read some thread, it said you can create a new outbound process code. But I don't know exactly how to do it.
Can anyone share some advice?
Thanks a lot.
Dennis
‎2010 Apr 07 7:29 PM
Hi Dennis,
To solve this problem create the outbound process code using the following method:
Goto txn WE41 : Create a new outbound process code say ZMMGRO and assign your message type MBGMCR to this.
Also maintain a FM say ZMBGMCR_IDOC_OUPUT which process the IDOC in the outbound side.
The FM signature should typically look like this:
""Local Interface:
*" IMPORTING
*" VALUE(OBJECT) LIKE NAST STRUCTURE NAST
*" VALUE(CONTROL_RECORD_IN) LIKE EDIDC STRUCTURE EDIDC
*" EXPORTING
*" VALUE(OBJECT_TYPE) LIKE WFAS1-ASGTP
*" VALUE(CONTROL_RECORD_OUT) LIKE EDIDC STRUCTURE EDIDC
*" TABLES
*" INT_EDIDD STRUCTURE EDIDD
*" EXCEPTIONS
*" ERROR_MESSAGE_RECEIVED
*" DATA_NOT_RELEVANT_FOR_SENDING
*"----
TABLES: MKPF, MSEG.
data wa_mkpf type MKPF.
data it_mseg type TABLE OF MSEG.
data wa_mseg like LINE OF it_mseg.
data wa_E1BP2017_GM_HEAD_01 type E1BP2017_GM_HEAD_01.
data wa_E1MBGMCR type E1MBGMCR .
data wa_E1BP2017_GM_ITEM_CREATE type E1BP2017_GM_ITEM_CREATE.
data wa_E1BP2017_GM_CODE type E1BP2017_GM_CODE.
data wa_E1BP2017_GM_ITEM_CREATE1 type E1BP2017_GM_ITEM_CREATE1.
data wa_E1BP2017_GM_SERIALNUMBER type E1BP2017_GM_SERIALNUMBER.
data wa_edidd type edidd.
******************************************
Create Control Record **********
move CONTROL_RECORD_IN to CONTROL_RECORD_OUT.
control_record_out-direct = '1'.
control_record_out-serial = sy-datum.
control_record_out-serial+8 = sy-uzeit.
*******************************************
Fill Segment data from MKPF & MSEG ******
clear wa_edidd.
clear wa_E1MBGMCR.
move wa_E1MBGMCR to wa_edidd-sdata.
wa_edidd-segnam = 'E1MBGMCR'.
append wa_edidd to int_edidd.
Select single * from MKPF into wa_mkpf where
mblnr eq OBJECT-OBJKY+0(10)
and mjahr eq OBJECT-OBJKY+10(4).
clear wa_edidd.
clear wa_E1BP2017_GM_HEAD_01.
wa_E1BP2017_GM_HEAD_01-PSTNG_DATE = wa_mkpf-BUDAT.
wa_E1BP2017_GM_HEAD_01-DOC_DATE = wa_mkpf-BLDAT.
wa_E1BP2017_GM_HEAD_01-BILL_OF_LADING = wa_mkpf-FRBNR.
wa_E1BP2017_GM_HEAD_01-PR_UNAME = wa_mkpf-USNAM.
wa_E1BP2017_GM_HEAD_01-HEADER_TXT = wa_mkpf-BKTXT.
move wa_E1BP2017_GM_HEAD_01 to wa_edidd-sdata.
wa_edidd-segnam = 'E1BP2017_GM_HEAD_01'.
append wa_edidd to int_edidd.
SELECT * from mseg INTO TABLE it_mseg where
mblnr eq OBJECT-OBJKY+0(10)
and mjahr eq OBJECT-OBJKY+10(4).
loop at it_mseg into wa_mseg.
CLEAR wa_edidd.
CLEAR wa_E1BP2017_GM_ITEM_CREATE.
wa_E1BP2017_GM_ITEM_CREATE-MATERIAL = wa_mseg-MATNR.
wa_E1BP2017_GM_ITEM_CREATE-PLANT = wa_mseg-WERKS.
wa_E1BP2017_GM_ITEM_CREATE-STGE_LOC = wa_mseg-LGORT.
wa_E1BP2017_GM_ITEM_CREATE-BATCH = wa_mseg-CHARG.
wa_E1BP2017_GM_ITEM_CREATE-MOVE_TYPE = wa_mseg-BWART.
wa_E1BP2017_GM_ITEM_CREATE-STCK_TYPE = wa_mseg-INSMK.
wa_E1BP2017_GM_ITEM_CREATE-SPEC_STOCK = wa_mseg-SOBKZ.
wa_E1BP2017_GM_ITEM_CREATE-VENDOR = wa_mseg-LIFNR.
wa_E1BP2017_GM_ITEM_CREATE-ENTRY_QNT = wa_mseg-MENGE.
wa_E1BP2017_GM_ITEM_CREATE-ENTRY_UOM = wa_mseg-ERFME.
wa_E1BP2017_GM_ITEM_CREATE-PO_NUMBER = wa_mseg-EBELN.
wa_E1BP2017_GM_ITEM_CREATE-PO_ITEM = wa_mseg-EBELP.
move wa_E1BP2017_GM_ITEM_CREATE to wa_edidd-sdata.
wa_edidd-segnam = 'E1BP2017_GM_ITEM_CREATE'.
append wa_edidd to int_edidd.
endloop.
****************************************************
ENDFUNCTION.
Do remember to maintain the message control in WE20 where you maintain this outbound code against your output type.
Hope this helps!
‎2010 Apr 07 7:29 PM
Hi Dennis,
To solve this problem create the outbound process code using the following method:
Goto txn WE41 : Create a new outbound process code say ZMMGRO and assign your message type MBGMCR to this.
Also maintain a FM say ZMBGMCR_IDOC_OUPUT which process the IDOC in the outbound side.
The FM signature should typically look like this:
""Local Interface:
*" IMPORTING
*" VALUE(OBJECT) LIKE NAST STRUCTURE NAST
*" VALUE(CONTROL_RECORD_IN) LIKE EDIDC STRUCTURE EDIDC
*" EXPORTING
*" VALUE(OBJECT_TYPE) LIKE WFAS1-ASGTP
*" VALUE(CONTROL_RECORD_OUT) LIKE EDIDC STRUCTURE EDIDC
*" TABLES
*" INT_EDIDD STRUCTURE EDIDD
*" EXCEPTIONS
*" ERROR_MESSAGE_RECEIVED
*" DATA_NOT_RELEVANT_FOR_SENDING
*"----
TABLES: MKPF, MSEG.
data wa_mkpf type MKPF.
data it_mseg type TABLE OF MSEG.
data wa_mseg like LINE OF it_mseg.
data wa_E1BP2017_GM_HEAD_01 type E1BP2017_GM_HEAD_01.
data wa_E1MBGMCR type E1MBGMCR .
data wa_E1BP2017_GM_ITEM_CREATE type E1BP2017_GM_ITEM_CREATE.
data wa_E1BP2017_GM_CODE type E1BP2017_GM_CODE.
data wa_E1BP2017_GM_ITEM_CREATE1 type E1BP2017_GM_ITEM_CREATE1.
data wa_E1BP2017_GM_SERIALNUMBER type E1BP2017_GM_SERIALNUMBER.
data wa_edidd type edidd.
******************************************
Create Control Record **********
move CONTROL_RECORD_IN to CONTROL_RECORD_OUT.
control_record_out-direct = '1'.
control_record_out-serial = sy-datum.
control_record_out-serial+8 = sy-uzeit.
*******************************************
Fill Segment data from MKPF & MSEG ******
clear wa_edidd.
clear wa_E1MBGMCR.
move wa_E1MBGMCR to wa_edidd-sdata.
wa_edidd-segnam = 'E1MBGMCR'.
append wa_edidd to int_edidd.
Select single * from MKPF into wa_mkpf where
mblnr eq OBJECT-OBJKY+0(10)
and mjahr eq OBJECT-OBJKY+10(4).
clear wa_edidd.
clear wa_E1BP2017_GM_HEAD_01.
wa_E1BP2017_GM_HEAD_01-PSTNG_DATE = wa_mkpf-BUDAT.
wa_E1BP2017_GM_HEAD_01-DOC_DATE = wa_mkpf-BLDAT.
wa_E1BP2017_GM_HEAD_01-BILL_OF_LADING = wa_mkpf-FRBNR.
wa_E1BP2017_GM_HEAD_01-PR_UNAME = wa_mkpf-USNAM.
wa_E1BP2017_GM_HEAD_01-HEADER_TXT = wa_mkpf-BKTXT.
move wa_E1BP2017_GM_HEAD_01 to wa_edidd-sdata.
wa_edidd-segnam = 'E1BP2017_GM_HEAD_01'.
append wa_edidd to int_edidd.
SELECT * from mseg INTO TABLE it_mseg where
mblnr eq OBJECT-OBJKY+0(10)
and mjahr eq OBJECT-OBJKY+10(4).
loop at it_mseg into wa_mseg.
CLEAR wa_edidd.
CLEAR wa_E1BP2017_GM_ITEM_CREATE.
wa_E1BP2017_GM_ITEM_CREATE-MATERIAL = wa_mseg-MATNR.
wa_E1BP2017_GM_ITEM_CREATE-PLANT = wa_mseg-WERKS.
wa_E1BP2017_GM_ITEM_CREATE-STGE_LOC = wa_mseg-LGORT.
wa_E1BP2017_GM_ITEM_CREATE-BATCH = wa_mseg-CHARG.
wa_E1BP2017_GM_ITEM_CREATE-MOVE_TYPE = wa_mseg-BWART.
wa_E1BP2017_GM_ITEM_CREATE-STCK_TYPE = wa_mseg-INSMK.
wa_E1BP2017_GM_ITEM_CREATE-SPEC_STOCK = wa_mseg-SOBKZ.
wa_E1BP2017_GM_ITEM_CREATE-VENDOR = wa_mseg-LIFNR.
wa_E1BP2017_GM_ITEM_CREATE-ENTRY_QNT = wa_mseg-MENGE.
wa_E1BP2017_GM_ITEM_CREATE-ENTRY_UOM = wa_mseg-ERFME.
wa_E1BP2017_GM_ITEM_CREATE-PO_NUMBER = wa_mseg-EBELN.
wa_E1BP2017_GM_ITEM_CREATE-PO_ITEM = wa_mseg-EBELP.
move wa_E1BP2017_GM_ITEM_CREATE to wa_edidd-sdata.
wa_edidd-segnam = 'E1BP2017_GM_ITEM_CREATE'.
append wa_edidd to int_edidd.
endloop.
****************************************************
ENDFUNCTION.
Do remember to maintain the message control in WE20 where you maintain this outbound code against your output type.
Hope this helps!
‎2019 Aug 07 5:18 PM