Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Outbound process code for MBGMCR02

Former Member
3,124

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

1 ACCEPTED SOLUTION
Read only

Former Member
1,949

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!

2 REPLIES 2
Read only

Former Member
1,950

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!

Read only

0 Likes
1,949

This is exactly what I needed.

Thank you