HI Ron,
First instead i have recommended you to use the BAPI_PO_CREATE1 and there is one paramater No price from PO. Mark that field to X because if you can't mark this field to X then automatic system create the material value from the last purchase material value.
Below the Code is the BAPI for the GR receipt using PO number. I have also BAPI of BAPI_PO_CReate1. But to multiple logic for that bapi describe in my Program it is difficult to paste here.
data GOODSMVT_HEADER type BAPI2017_GM_HEAD_01 .
data GOODSMVT_CODE type BAPI2017_GM_CODE .
***** Table internal table
data it_GOODSMVT_ITEM type table of BAPI2017_GM_ITEM_CREATE .
data it_GOODSMVT_SERIALNUMBER type table of BAPI2017_GM_SERIALNUMBER .
**** Work area of that particular internal table ....
data wa_GOODSMVT_ITEM like line of it_GOODSMVT_ITEM .
data wa_GOODSMVT_SERIALNUMBER like line of it_GOODSMVT_SERIALNUMBER .
DATA IT_RETURN TYPE TABLE OF BAPIRET2 WITH HEADER LINE .
DATA P_MBLNR TYPE MBLNR .
DATA P_GJAHR TYPE GJAHR .
data gt_goodsmvt_headret LIKE bapi2017_gm_head_ret .
it_final1[] = it_final[] .
delete adjacent duplicates from it_final1 comparing ebeln_bapi .
LOOP AT it_final1 into wa_final1.
GOODSMVT_HEADER-PSTNG_DATE = sy-datum .
GOODSMVT_HEADER-DOC_DATE = sy-datum .
GOODSMVT_HEADER-HEADER_TXT = 'IT TEAM' .
GOODSMVT_HEADER-REF_DOC_NO_LONG = 'SAP TEAM' .
GOODSMVT_CODE = '01' . " FOR THE DOCUMENT CODE TYPE. 01 for pucrhcase order
* GMCODE Table T158G - 01 - MB01 - Goods Receipts for Purchase Order
* 02 - MB31 - Goods Receipts for Prod Order
* 03 - MB1A - Goods Issue
* 04 - MB1B - Transfer Posting
* 05 - MB1C - Enter Other Goods Receipt
* 06 - MB11
**BREAK-POINT .
LOOP AT it_final into wa_final where ebeln_bapi = wa_final1-ebeln_bapi.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = wa_final-matnr
IMPORTING
OUTPUT = wa_final-matnr.
WA_GOODSMVT_ITEM-MATERIAL = WA_FINAL-MATNR .
WA_GOODSMVT_ITEM-PLANT = lv_plant .
WA_GOODSMVT_ITEM-STGE_LOC = 'CG01' . "WA_FINAL-LGORT' .
WA_GOODSMVT_ITEM-MOVE_TYPE = '101' .
WA_GOODSMVT_ITEM-STCK_TYPE = 'Q' .
WA_GOODSMVT_ITEM-VENDOR = WA_FINAL-LIFNR .
WA_GOODSMVT_ITEM-ENTRY_QNT = WA_FINAL-MENGE .
WA_GOODSMVT_ITEM-PO_NUMBER = wa_final-ebeln_bapi .
WA_GOODSMVT_ITEM-PO_ITEM = WA_FINAL-ebeln_line . " iT CAN BE CHANGE IT THE ITEM OF GRN NUMBER
WA_GOODSMVT_ITEM-ITEM_TEXT = WA_FINAL-MAKTX .
WA_GOODSMVT_ITEM-MVT_IND = 'B' .
APPEND WA_GOODSMVT_ITEM TO IT_GOODSMVT_ITEM .
ENDLOOP.
CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
EXPORTING
GOODSMVT_HEADER = GOODSMVT_HEADER
GOODSMVT_CODE = GOODSMVT_CODE
* TESTRUN = ' '
* GOODSMVT_REF_EWM =
IMPORTING
GOODSMVT_HEADRET = gt_goodsmvt_headret
MATERIALDOCUMENT = P_MBLNR
MATDOCUMENTYEAR = P_GJAHR
TABLES
GOODSMVT_ITEM = IT_GOODSMVT_ITEM
* GOODSMVT_SERIALNUMBER =
RETURN = IT_RETURN.
* GOODSMVT_SERV_PART_DATA =
* EXTENSIONIN =
.
**BREAK-POINT .
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'
* IMPORTING
* RETURN =
.
Regards,
Nishant Bansal