2012 Mar 22 5:44 AM
Dear Experts..
My requirement is to create PO Plantwise using BAPI_PO_CREATE1 and I am able to pass the data to the BAPI in the following fields..
CALL FUNCTION 'BAPI_PO_CREATE1'
EXPORTING
poheader = po_header
poheaderx = poheaderx
IMPORTING
exppurchaseorder = purchaseorder
TABLES
return = return
poitem = poitem
poitemx = poitemx .
And it is generating a PO, but the probelm is that if, for example, there are 10 records in the excel file which I am supposed to upload and create PO, PO is getting generated only last record i.e. the last Line Item.
Kindly help, I even tried to debig the BAPI, but unable to solve the issue.
Thanks in advance.
2012 Mar 22 5:51 AM
Hi Gopa,
You will have to pass values to POSCHEDULE & POSCHEDULEX also.
Please ensure while de-bugging that, there are 10 records in the internal tables for 'ITEM' & 'SCHEDULE' with line item numbers in incremental way as applicable.
Regards,
Pranav.
Hi
Please check BAPI documentation in SE37 you will get more info on what parameters you need to populate and restrictions of that BAPI.
Parameter: POHEADER
| COMP_CODE | = | 1000 |
| DOC_TYPE | = | NB |
| ITEM_INTVL | = | 00001 |
| VENDOR | = | 0000001000 |
| PMNTTRMS | = | 0001 |
| PURCH_ORG | = | 1000 |
| PUR_GROUP | = | 001 |
| CURRENCY | = | EUR |
Parameter: POHEADERX
| COMP_CODE | = | X |
| DOC_TYPE | = | X |
| ITEM_INTVL | = | X |
| VENDOR | = | X |
| PMNTTRMS | = | X |
| PURCH_ORG | = | X |
| PUR_GROUP | = | X |
Parameter: POITEM
| PO_ITEM | = | 00001 |
| MATERIAL | = | 100-100 |
| PLANT | = | 1000 |
| STGE_LOC | = | 0001 |
| QUANTITY | = | 15.000 |
| TAX_CODE | = | V0 |
| ITEM_CAT | = | 0 |
| ACCTASSCAT | = | K |
Parameter: POITEMX
| PO_ITEM | = | 00001 |
| MATERIAL | = | X |
| PLANT | = | X |
| STGE_LOC | = | X |
| QUANTITY | = | X |
| TAX_CODE | = | X |
| ITEM_CAT | = | X |
| ACCTASSCAT | = | X |
Parameter: POSCHEDULE
| PO_ITEM | = | 00001 |
| SCHED_LINE | = | 0001 |
| DELIVERY_DATE | = | 02.12.2002 |
| QUANTITY | = | 6.000 |
| PO_ITEM | = | 00001 |
| SCHED_LINE | = | 0002 |
| DELIVERY_DATE | = | 03.12.2002 |
| QUANTITY | = | 5.000 |
| PO_ITEM | = | 00001 |
| SCHED_LINE | = | 0003 |
| DELIVERY_DATE | = | 04.12.2002 |
| QUANTITY | = | 4.000 |
Parameter: POSCHEDULEX
| PO_ITEM | = | 00001 |
| SCHED_LINE | = | 0001 |
| PO_ITEMX | = | X |
| SCHED_LINEX | = | X |
| DELIVERY_DATE | = | X |
| QUANTITY | = | X |
| PO_ITEM | = | 00001 |
| SCHED_LINE | = | 0002 |
| PO_ITEMX | = | X |
| SCHED_LINEX | = | X |
| DELIVERY_DATE | = | X |
| QUANTITY | = | X |
| PO_ITEM | = | 00001 |
| SCHED_LINE | = | 0003 |
| PO_ITEMX | = | X |
| SCHED_LINEX | = | X |
| DELIVERY_DATE | = | X |
| QUANTITY | = | X |
Parameter: POACCOUNT
| PO_ITEM | = | 00001 |
| SERIAL_NO | = | 01 |
| QUANTITY | = | 15.000 |
| GL_ACCOUNT | = | 0000400000 |
| COSTCENTER | = | 0000001000 |
| CO_AREA | = | 1000 |
Parameter: POACCOUNTX
| PO_ITEM | = | 00001 |
| SERIAL_NO | = | 01 |
| QUANTITY | = | X |
| GL_ACCOUNT | = | X |
| COSTCENTER | = | X |
| CO_AREA | = | X |
Parameter: POCOND
| ITM_NUMBER | = | 000001 |
| COND_ST_NO | = | 001 |
| COND_TYPE | = | PB00 |
| COND_VALUE | = | 79.900000000 |
| CURRENCY | = | EUR |
| CURRENCY_ISO | = | EUR |
| COND_UNIT | = | KG |
| COND_P_UNT | = | 1 |
| CHANGE_ID | = | U |
Parameter: POCONDX
| ITM_NUMBER | = | 000001 |
| COND_ST_NO | = | 000 |
| ITM_NUMBERX | = | X |
| COND_TYPE | = | X |
| COND_VALUE | = | X |
| CURRENCY | = | X |
| CHANGE_ID | = | X |
Parameter: POPARTNER
| PARTNERDESC | = | OA |
| LANGU | = | EN |
| BUSPARTNO | = | 0000001100 |
| PARTNERDESC | = | GS |
| LANGU | = | EN |
| BUSPARTNO | = | 0000001200 |
| PARTNERDESC | = | PI |
| LANGU | = | EN |
| BUSPARTNO | = | 0000001000 |
2012 Mar 22 5:51 AM
Hi Gopa,
You will have to pass values to POSCHEDULE & POSCHEDULEX also.
Please ensure while de-bugging that, there are 10 records in the internal tables for 'ITEM' & 'SCHEDULE' with line item numbers in incremental way as applicable.
Regards,
Pranav.
2012 Mar 22 6:49 AM
Dear Pranav.
Thanx a TON for you suggestion..As u said I have passed values to POSCHEDULE & POSCHEDULEX also.
And in my excel file I have maintained 12 records for a single plant say MM01 with 3 materails say M1, M2 & M3(here M3 is the last materail in excel with 4 line items-10,20,30,40) . Now once I execute my Bapi, only the last 4 records of M3 is coming in PO remaining materials M1 & M2 with there repective Line Items are not coming.
Plz find the code:-
PO_HEADER-DOC_DATE = tab-DOC_DATE.
IF po_docty is not initial.
PO_HEADER-DOC_TYPE = tab-DOC_TYPE.
ELSE.
PO_HEADER-DOC_TYPE = 'ZA06'.
ENDIF.
PO_HEADER-COMP_CODE = tab-COMP_CODE.
PO_HEADER-PURCH_ORG = tab-PURCH_ORG.
PO_HEADER-PUR_GROUP = tab-PUR_GROUP.
PO_HEADER-VENDOR = tab-VENDOR.
PO_HEADER-SUPPL_PLNT = tab-SUPPL_PLNT.
PO_HEADER-PO_NUMBER = tab-PO_NUMBER.
PO_HEADER-CREAT_DATE = tab-doc_DATE.
****Purchase Order Header Data (Change Parameter)
POHEADERX-DOC_TYPE = 'X'.
POHEADERX-VENDOR = 'X'.
POHEADERX-PURCH_ORG = 'X'.
POHEADERX-PUR_GROUP = 'X'.
***Purchase Order Item
if po_mat = tab-material.
po_item = po_item + 10.
else.
clear po_item.
po_item = po_item + 10.
po_mat = tab-material.
endif.
PO_ITEMS-PO_ITEM = PO_ITEM.
PO_ITEMS-MATERIAL = tab-MATERIAL.
PO_ITEMS-EMATERIAL = tab-EMATERIAL.
IF po_itcat IS NOT INITIAL.
PO_ITEMS-ITEM_CAT = tab-ITEM_CAT.
else.
PO_ITEMS-ITEM_CAT = '7'.
ENDIF.
PO_ITEMS-PLANT = tab-PLANT.
PO_ITEMS-QUANTITY = tab-QUANTITY.
PO_ITEMS-NET_PRICE = tab-NET_PRICE.
PO_ITEMS-STGE_LOC = tab-STGE_LOC.
append po_items.
***Purchase Order Item Data (Change Parameter)
POITEMX-PO_ITEM = PO_ITEM.
POITEMX-MATERIAL = 'X'.
POITEMX-QUANTITY = 'X'.
POITEMX-NET_PRICE = 'X'.
POITEMX-PLANT = 'X'.
APPEND POITEMX.
CLEAR: POITEMX, PO_ITEMS.
*********Fields for Purchase Order Delivery Schedule Lines
POSCHEDULE-PO_ITEM = PO_ITEM.
POSCHEDULE-DELIVERY_DATE = tab-DELIV_DATE.
append POSCHEDULE.
*********Fields for Schedule Lines in Purchase Order (Change Toolbar)
POSCHEDULEX-PO_ITEM = PO_ITEM.
POSCHEDULEX-PO_ITEMX = 'X'.
POSCHEDULEX-DELIVERY_DATE = 'X'.
append POSCHEDULEX.
clear : POSCHEDULE, POSCHEDULEX.
endif.
at end of PLANT.
CALL FUNCTION 'BAPI_PO_CREATE1'
EXPORTING
POHEADER = PO_HEADER
POHEADERX = POHEADERX
IMPORTING
EXPPURCHASEORDER = PURCHASEORDER
TABLES
RETURN = RETURN
POITEM = PO_ITEMS
POITEMX = POITEMX
POSCHEDULE = POSCHEDULE
POSCHEDULEX = POSCHEDULEX
Please guide... Thanx in advance
2012 Mar 22 7:09 AM
Hi
Please check BAPI documentation in SE37 you will get more info on what parameters you need to populate and restrictions of that BAPI.
Parameter: POHEADER
| COMP_CODE | = | 1000 |
| DOC_TYPE | = | NB |
| ITEM_INTVL | = | 00001 |
| VENDOR | = | 0000001000 |
| PMNTTRMS | = | 0001 |
| PURCH_ORG | = | 1000 |
| PUR_GROUP | = | 001 |
| CURRENCY | = | EUR |
Parameter: POHEADERX
| COMP_CODE | = | X |
| DOC_TYPE | = | X |
| ITEM_INTVL | = | X |
| VENDOR | = | X |
| PMNTTRMS | = | X |
| PURCH_ORG | = | X |
| PUR_GROUP | = | X |
Parameter: POITEM
| PO_ITEM | = | 00001 |
| MATERIAL | = | 100-100 |
| PLANT | = | 1000 |
| STGE_LOC | = | 0001 |
| QUANTITY | = | 15.000 |
| TAX_CODE | = | V0 |
| ITEM_CAT | = | 0 |
| ACCTASSCAT | = | K |
Parameter: POITEMX
| PO_ITEM | = | 00001 |
| MATERIAL | = | X |
| PLANT | = | X |
| STGE_LOC | = | X |
| QUANTITY | = | X |
| TAX_CODE | = | X |
| ITEM_CAT | = | X |
| ACCTASSCAT | = | X |
Parameter: POSCHEDULE
| PO_ITEM | = | 00001 |
| SCHED_LINE | = | 0001 |
| DELIVERY_DATE | = | 02.12.2002 |
| QUANTITY | = | 6.000 |
| PO_ITEM | = | 00001 |
| SCHED_LINE | = | 0002 |
| DELIVERY_DATE | = | 03.12.2002 |
| QUANTITY | = | 5.000 |
| PO_ITEM | = | 00001 |
| SCHED_LINE | = | 0003 |
| DELIVERY_DATE | = | 04.12.2002 |
| QUANTITY | = | 4.000 |
Parameter: POSCHEDULEX
| PO_ITEM | = | 00001 |
| SCHED_LINE | = | 0001 |
| PO_ITEMX | = | X |
| SCHED_LINEX | = | X |
| DELIVERY_DATE | = | X |
| QUANTITY | = | X |
| PO_ITEM | = | 00001 |
| SCHED_LINE | = | 0002 |
| PO_ITEMX | = | X |
| SCHED_LINEX | = | X |
| DELIVERY_DATE | = | X |
| QUANTITY | = | X |
| PO_ITEM | = | 00001 |
| SCHED_LINE | = | 0003 |
| PO_ITEMX | = | X |
| SCHED_LINEX | = | X |
| DELIVERY_DATE | = | X |
| QUANTITY | = | X |
Parameter: POACCOUNT
| PO_ITEM | = | 00001 |
| SERIAL_NO | = | 01 |
| QUANTITY | = | 15.000 |
| GL_ACCOUNT | = | 0000400000 |
| COSTCENTER | = | 0000001000 |
| CO_AREA | = | 1000 |
Parameter: POACCOUNTX
| PO_ITEM | = | 00001 |
| SERIAL_NO | = | 01 |
| QUANTITY | = | X |
| GL_ACCOUNT | = | X |
| COSTCENTER | = | X |
| CO_AREA | = | X |
Parameter: POCOND
| ITM_NUMBER | = | 000001 |
| COND_ST_NO | = | 001 |
| COND_TYPE | = | PB00 |
| COND_VALUE | = | 79.900000000 |
| CURRENCY | = | EUR |
| CURRENCY_ISO | = | EUR |
| COND_UNIT | = | KG |
| COND_P_UNT | = | 1 |
| CHANGE_ID | = | U |
Parameter: POCONDX
| ITM_NUMBER | = | 000001 |
| COND_ST_NO | = | 000 |
| ITM_NUMBERX | = | X |
| COND_TYPE | = | X |
| COND_VALUE | = | X |
| CURRENCY | = | X |
| CHANGE_ID | = | X |
Parameter: POPARTNER
| PARTNERDESC | = | OA |
| LANGU | = | EN |
| BUSPARTNO | = | 0000001100 |
| PARTNERDESC | = | GS |
| LANGU | = | EN |
| BUSPARTNO | = | 0000001200 |
| PARTNERDESC | = | PI |
| LANGU | = | EN |
| BUSPARTNO | = | 0000001000 |
2012 Mar 22 7:15 AM
And also pls fecth item number incremental from standard table T161-PINCR, Item number incremental may vary based on doc type & doc category.
Thanks,
Chandra
2012 Mar 22 7:18 AM
Probelm is with below code
***Purchase Order Item
if po_mat = tab-material.
po_item = po_item + 10.
else.
clear po_item.
po_item = po_item + 10.
po_mat = tab-material.
endif.
Try to increment 10 20 ....120(12 Items) irresptive of material and pls check
Thanks,
Chandra
2012 Mar 22 7:28 AM
Dear Chandra Nare,
Thank A lot for your answer...
my problem is solved... now I am able ti generate the PO for all 12 records..
My issue stands resolved...
Regards
Gopa
| User | Count |
|---|---|
| 3 | |
| 2 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |