Application Development 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: 

PO Goods receipt

Former Member
0 Kudos

Hello experts,

Do you know any BAPI that can be used to create Goods receipt for a PO and how to use it? Please help, thank you!

Chuong

3 REPLIES 3

Former Member
0 Kudos

Hi,

Check "BAPI_GOODSMVT_CREATE". Using it you can post a GR against PO.

You could use GM_Code 01: Goods receipt for purchase order.

Following is the documentation...

Method

GoodsReceipt.CreateFromData

Post goods movement

Functionality

You can use this method to create a material document for a goods movement.

You can only create one material document each time you call up the method.

You can use a simulation function before posting the goods movement to check how the data is updated in the database. The standard system is configured so that the goods movement is posted immediately without simulating beforehand.

Notes

The following authorization object is checked when this method is used:

M_MSEG_WMB Material documents: plant

M_MSEG_BMB Material documents: movement type

M_MSEG_WWA Goods movements: plant

M_MSEG_BWA Goods movements: movement type

Transfer

The following information about the material document that is to be created is transferred to the method:

a structure with header data

a structure with the code for the movement

a table with the item data

a table with the serial numbers

The posting is carried out in the R/3 System via the MB_CREATE_GOODS_MOVEMENT function module.

Confirmations

Messages are returned in the parameter return. The parameter documentation shows the return codes and their meanings.

Further Information

The method can only carry out your function if no error messages were generated in the "Return" table. This is the case if the header data and all the items were processed successfully.

Transaction control is not implemented. The calling program therefore has to execute the 'Commit Work' itself after this method has been successfully invoked (i.e. if no errors were reported in the Return parameter).

Which fields have to be filled during the various transactions/ events?

The following sample scenarios demonstrate which fields have to be filled for which business transactions/events (code).

There are the following types of transactions/events:

<i><b>GM_Code 01: Goods receipt for purchase order</b></i>

GM_Code 02: Goods receipt for production order

GM_Code 03: Goods issue

GM_Code 04: Transfer posting

GM_Code 05: Other goods receipts

GM_Code 06: Reversal of goods movements

Entering the movement indicator

Depending on the transaction, you must enter the following in the movement indicator:

GM_Code 01 (Goods receipt for purchase order): B

GM_Code 02 (Goods receipt for production order): F

For all other transactions, you leave the field blank.

For 1: GM_Code 01: Goods receipt for purchase order

Purchase order known

The following fields have to be filled:

Purchase order

Purchase order item

Movement type

Movement indicator

Quantity in unit of entry

ISO code unit of measurement for unit of entry or

quantity proposal

The following fields may have to be filled in some cases (incomplete listing):

Shelf life expiration date (if it has been configured like this in the system)

Reason for movement (if it has been configured like this in the system)

Batch (if the material is handled in batches and batch numbers are not assigned automatically)

Storage location (if a storage location has not been specified in the purchase order item)

The following fields can be filled (incomplete listing):

Stock type

Item text

Unloading point

Delivery completed indicator

You cannot fill the following fields (incomplete listing):

Account assignment fields (account assignment is adopted from the purchase order)

Reservation

Receiving/issuing material

Receiving/issuing plant

Receiving/issuing storage location

In the case of a purchase order item with the "subcontracting" item category, only the GR item in the interface is to be transferred. The system automatically determines GI items.

Purchase order unknown: shipping notification known

The following fields must be filled:

Delivery

Delivery item

Movement type

Other fields, such as those under "Purchase order known". The system determines the relevant purchase order item via the delivery/delivery item.

Purchase order known: purchase order should be created automatically

The following fields must be filled:

Material number

Plant

Storage location

vendor

Movement type

Movement indicator

quantity in unit of entry

ISO code unit of measurement for unit of entry

The following fields may have to be filled in some cases (incomplete listing):

Shelf life expiration date (if it has been configured like this in the system)

Reason for movement (if it has been configured like this in the system)

Batch (if the material is handled in batches and batches are not assigned automatically)

The following fields can be filled (incomplete listing):

Stock type

Item text

Unloading point

You cannot fill the following fields (incomplete listing):

Account assignment fields (automatic creation of purchase order items with account assignment is not supported)

Reservation

Receiving/issuing material

Receiving/issuing plant

Receiving/issuing storage location

Purchase order unknown: a purchase order should not be created

The following fields must be filled:

Material number

Plant

Storage location

Vendor

Movement type

Movement indicator

Quantity in unit of entry

ISO code unit of measurement for unit of entry

The following fields may have to be filled in some cases (incomplete listing):

Shelf life expiration date (if it has been configured like this)

Reason for movement (if it has been configured like this)

Batch (if the material is handled in batches and automatic assignment of batch numbers is not set)

The following fields can be filled (incomplete listing):

Special stock indicator

Item text

Unloading point

Goods recipient

The following fields cannot be filled (incomplete listing):

Account assignment (automatic creation of purchase order items with account assignment is not supported)

Reservation

Receiving/issuing material

Receiving/issuing plant

Receiving/issuing storage location

Receiving/issuing batch

The input combinations listed above for the GM_CODE 01 can be combined within an input table so that they can be posted in a material document. Items can also be posted for different purchase orders, provided that all the purchase orders reference the same vendor.

For 2 GM_Code 02: Goods receipt for production order

The following fields must be filled:

Order

Movement type

Movement indicator

Quantity in unit of entry

ISO code unit of measurement for unit of entry or

quantity proposal

The following fields may have to be filled in some cases (incomplete listing):

Shelf life expiration date (if the system has been configured like this)

Reason for movement (if the system has been configured like this)

Batch (if the material is handled in batches and automatic batch number assignment is set)

Storage location (if storage location has not been specified)

The following fields can be filled (incomplete listing):

Order item (co-product)

Stock type

Item text

Unloading point

"Delivery completed" indicator

The following fields cannot be filled (incomplete listing):

Account assignment fields (the account assignments are adopted from the purchase order

Reservation

Receiving/issuing material

Receiving/issuing plant

Receiving/issuing storage location

Receiving/issuing batch

For 3 GM_Code 03: Goods issue

Goods issue without reference to a reservation

The following fields must be filled:

Material number

Plant

Storage location

Movement type

Movement indicator

Quantity in unit of entry

ISO code unit of measurement for unit of entry

The following fields may have to be filled in some cases (incomplete listing):

Special stock (e.g. sales order, project, vendor etc.)

Shelf life expiration date (if the system is configured like this)

Reason for movement (if the system has been configured like this)

Batch (if the material is handled in batches and automatic batch number assignment is set)

Account assignment fields

The following fields can be filled (incomplete listing):

Special stock indicator

Item text

Unloading point

Goods recipient

The following fields cannot be filled (incomplete listing):

Reservation

Receiving/issuing material

Receiving/issuing plant

Receiving/issuing storage location

Receiving/issuing batch

Goods issue with reference to a reservation

The following fields must be filled:

Reservation number

Reservation item

Record type of the reservation

Movement indicator

Quantity in unit of entry

ISO code unit of measurement for unit of entry

The following fields may have to be filled in some cases (incomplete list):

Shelf life expiration date (if this has been configured in the system)

Reason for movement (if this has been configured in the system)

Batch (if the material is handled in batches and automatic batch number assignment is not set)

Storage location (if not planned in the reservation)

The following fields can be filled (incomplete count):

Special stock indicator

Item text

Unloading point

Goods recipient

The following fields cannot be filled (incomplete count):

Movement type

Material

Plant

Account assignment fields

For 4 GM_Code 04: Transfer posting

Transfer posting without reference to a reservation

The following fields must be filled:

Material number

Plant

Storage location

Movement type

Movement indicator

Quantity in unit of entry

ISO code unit of measurement for unit of entry

The following fields may have to be filled in some cases (incomplete listing):

Receiving material

Receiving plant

Receiving storage location

Receiving batch (if material is handled in batches and you want to change batches)

Receiving/issuing special stock (e.g. sales order, project, vendor etc.)

Shelf life expiration date (if this has been configured in the system)

Reason for movement (if this has been configured in the system)

Batch (if the material is handled in batches and automatic batch number assignment is not set)

The following fields can be filled (incomplete listing):

Special stock indicator

Item text

Account assignment fields (for automatic posting lines: Expense/income from stock transfer)

The following fields cannot be filled (incomplete listing):

Reservation

Transfer posting with reference to a reservation

See goods issue with reference to a reservation

For 5 GM_Code 05: Other goods receipts

Other goods receipt with reference to a reservation

See goods issue without reference to a reservation

Other goods receipt with reference to a reservation

See goods issue with reference to a reservation

For 6 GM_Code 06: Reversal of goods movements

You can use the Cancel method to reverse goods movements. But you may also want to cancel a goods movement without referencing a material document (see the Cancel method).

If you want to work without referencing the document, you have to fill the field BAPI_GM_ITEM_CREATE-XSTOB in the interface. In this case, the system converts the movement type assigned in the interface to the reversal movement type. Alternatively you can set the reversal movement type in the interface. In this case, the BAPI_GM_ITEM_CREATE_XSTOB field must be transferred blank.

If you want to cancel a goods movement with reference to a reservation (without using the Cancel method) you can only transfer the field BAPI_GM_ITEM_CREATE_XSTOB if it is filled. Movement types are not transferred when you post with reference to a reservation, as the movement type is contained in the reservation item.

Regards,

Bharat

0 Kudos

Thank you Bharat. I will read your document and apply it later.

Chuong

Former Member
0 Kudos

Hi,

This example program for doing a GR against a PO.

report zgr_0001.

  • Structures for BAPI

data: gm_header type bapi2017_gm_head_01.

data: gm_code type bapi2017_gm_code.

data: gm_headret type bapi2017_gm_head_ret.

data: gm_item type table of

bapi2017_gm_item_create with header line.

data: gm_return type bapiret2 occurs 0 with header line.

data: gm_retmtd type bapi2017_gm_head_ret-mat_doc.

clear: gm_return, gm_retmtd. refresh gm_return.

  • Setup BAPI header data.

gm_header-pstng_date = sy-datum.

gm_header-doc_date = sy-datum.

gm_code-gm_code = '01'. "" GR for PO

  • Write 101 movement to table

clear gm_item.

move '101' to gm_item-move_type .

move '000000000040003572' to gm_item-material.

move '100' to gm_item-entry_qnt.

move 'BF' to gm_item-entry_uom.

move '0008' to gm_item-plant.

move '8003' to gm_item-stge_loc.

move '0000095851' to gm_item-po_number.

move '000001' to gm_item-po_item.

move 'B' to gm_item-mvt_ind.

append gm_item.

  • Call goods movement BAPI

call function 'BAPI_GOODSMVT_CREATE'

exporting

goodsmvt_header = gm_header

goodsmvt_code = gm_code

importing

goodsmvt_headret = gm_headret

materialdocument = gm_retmtd

tables

goodsmvt_item = gm_item

return = gm_return.

if not gm_retmtd is initial.

commit work and wait.

call function 'DEQUEUE_ALL'.

else.

commit work and wait.

call function 'DEQUEUE_ALL'.

endif.

write:/ gm_retmtd.

loop at gm_return.

write:/ gm_return.

endloop.

Regards,

KK