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

Problem in uploading multiple PO line items using bapi_po_create1

former_member311223
Participant
0 Likes
2,063

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.

1 ACCEPTED SOLUTION
Read only

former_member222709
Contributor
0 Likes
1,587

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 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.

6 REPLIES 6
Read only

former_member222709
Contributor
0 Likes
1,588

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.

Read only

0 Likes
1,587

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

Read only

0 Likes
1,587

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
Read only

0 Likes
1,587

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

Read only

0 Likes
1,587

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

Read only

0 Likes
1,587

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