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: 

bapi_po_create1

former_member211992
Active Participant
0 Kudos

Dear all

I m using bapi_po_create1 to create PO , it is a combination of service and material .. for material im not passing NETPR ,but PBXX condtion type with value im passing ,, now ths bapi thro's error ''net price must be greate than zero'' if i enter NETPR there is no error but net price should the value of PBXX.

How to rectify this.

Thank u

1 ACCEPTED SOLUTION

former_member211992
Active Participant
0 Kudos

Dear all

I have found one thing this is happening when i am passing multiple schedule lines , if each line item has one schedule line there is no error , but i cannot conclude why this is happening ? help me

18 REPLIES 18

raymond_giuseppi
Active Contributor
0 Kudos

Which value did you pass to field POITEM-PO_PRICE, I would suggest '1' (NET_PRICE -> gross price) for material and '2' NET_PRICE -> net price) for service, but perform some tests.

For reference read 580225 - Purchasing BAPIs: Conditions and pricing and BAPI documentation:

Regards,

Raymond

0 Kudos

thanks for ur reply

i have tried ,But still im getting the same error.

0 Kudos

Hi Peter,

Could you share your screen shot of error message.

Regards,

Vivek

0 Kudos
  • If you force a value (dummy or realistic) in net price, which result (value of net price) do you get in ME23N
  • You could also try to "trick" the BAPi using POITEM-CALCTYPE = 'B' (in change mode, trigger a price recalculation)
  • Ask also functiona to check for info record's condition's scale (e.g. from quantity or other values which orevent price correct calculation)

Regards,

Raymond

PS: For which version of ECC?

0 Kudos

0 Kudos

HI Peter,

Check your condition logic in header level. Also check table EKKO AND KONV-KHERK.

Regards,

Vivek

former_member211992
Active Participant
0 Kudos

Dear all

I have found one thing this is happening when i am passing multiple schedule lines , if each line item has one schedule line there is no error , but i cannot conclude why this is happening ? help me

0 Kudos

Could you post part of your code related to

  • item records fields for pricing like CALCTYPE, PO_PRICE, NET_PRICE (POITEM and POITEMX)
  • schedule records (POSCHEDULE and POSCHEDULEX)

Did you check if you don't mess some of your parameter with some common counter?

Did you perform some tests with ME21N ans same values

Could post whole RETURN table in some xml/html table for values of fields like ROW or FIELD

Regards,

Raymond

0 Kudos

I have tried with po_price and for material net_price eq 0 , im passing pbxx in item condition,,if run a program with single schedule line its working fine , multiple schedule line giving error. in this case what should i pass in CALCTYPE?

0 Kudos

Hi,

populate the pricing condition data in pricing condition tables..

  t_pocond-itm_number    = tbl_item-ebelp.

  t_pocond-cond_st_no    = '1'.

  t_pocond-cond_type     = 'PB00'.

  t_pocond-cond_value    = tbl_item-netpr.

  t_pocond-currency      = tbl_header-waers.

  t_pocond-change_id     = 'I'.

  APPEND t_pocond.

  t_pocondx-itm_number    = tbl_item-ebelp.

  t_pocondx-cond_st_no    = '1'.

  t_pocondx-itm_numberx   = 'X'.

  l_pocondx-cond_st_nox   = 'X'.

  t_pocondx-cond_type     = 'X'.

  t_pocondx-cond_value    = 'X'.

  t_pocondx-currency      = 'X'.

  t_pocondx-change_id     = 'X'.

  APPEND t_pocondx.

thanks!!

0 Kudos

        GS_POITEM-PO_ITEM = gs_item-ebelp.                  " '00001'.

         IF GS_ITEM-MATNR IS NOT INITIAL.

           GS_POITEM-MATERIAL = GS_ITEM-MATNR.

         ENDIF.

         GS_POITEM-SHORT_TEXT = GS_ITEM-TXZ01. "'TESTNEW'."GS_UPLOAD-TXZ01."'PO_TEST'.

         GS_POITEM-PLANT = GS_ITEM-WERKS. "'INAV'."GS_UPLOAD-WERKS .

         GS_POITEM-QUANTITY = GS_ITEM-MENGE. "'1'."GS_UPLOAD-MENGE.

         GS_POITEM-PO_UNIT = GS_ITEM-MEINSL. "'EA'."GS_UPLOAD-MEINS.

         GS_POITEM-NET_PRICE GS_ITEM-NETPR. " '100'."GS_UPLOAD-NETPR.

*        IF GS_POITEM-MATERIAL NE ' '.

*        GS_POITEM-CALCTYPE = 'B'.

*        endif.

*        IF GS_POITEM-MATERIAL NE ' '.

*          GS_POITEM-PO_PRICE = '1'.

*        ELSE.

*          GS_POITEM-PO_PRICE = '2'.              "*****Price Adoption: ' ' = Dont adopt ,1 = Gross, 2 = Net*********

*        ENDIF.

         GS_POITEM-MATL_GROUP = GS_ITEM-WGBEZ." ."GS_UPLOAD-WGBEZ."

         GS_POITEM-TAX_CODE = GS_ITEM-MWSKZ." '"GS_UPLOAD-MWSKZ."'.

         GS_POITEM-UNLIMITED_DLV = ''.

         GS_POITEM-ITEM_CAT = GS_ITEM-EPSTP .." GS_UPLOAD-EPSTP."'9'.

         GS_POITEM-ACCTASSCAT GS_ITEM-KNTTP. "

         GS_POITEM-PCKG_NO LV_PACKNO ."" '0000000010'.

         GS_POITEM-PREQ_NO = GS_ITEM-BANFN.     "Purchase Requisition Number

         GS_POITEM-PREQ_ITEM = GS_ITEM-BNFPO.        "Item Number of Purchase Requisition

         GS_POITEM-TRACKINGNO = GS_UPLOAD-SNO."GS_ITEM-BEDNR.       "Requirement Tracking Number

         GS_POITEM-PREQ_NAME = GS_ITEM-AFNAM.      "Name of Requisitioner/Requester

         GS_POITEM-CTRL_KEY = GS_ITEM-QSSPUR.       "Control Key for Quality Management in Procurement

         GS_POITEM-OVER_DLV_TOL = GS_ITEM-UEBTO.        "Overdelivery Tolerance Limit

         GS_POITEM-INCOTERMS1 = GS_ITEM-INCO1l.      "Incoterms (Part 1)

         GS_POITEM-INCOTERMS2 = GS_ITEM-INCO2l.      "Incoterms (Part 2)

         GS_POITEM-SRV_BASED_IV = GS_ITEM-LEBRE.   "Indicator for Service-Based Invoice Verification

         IF GS_ITEM-REPOS NE ' '.

           GS_POITEM-IR_IND = GS_ITEM-REPOS.     "Invoice Receipt Indicator

         ENDIF.

         IF GS_ITEM-WEBRE NE ' '.

           GS_POITEM-GR_BASEDIV = GS_ITEM-WEBRE.        "Indicator: GR-Based Invoice Verification

         ENDIF.

         GS_POITEM-ERS = GS_ITEM-XERSY.      "Evaluated Receipt Settlement (ERS)

         GS_POITEM-CUSTOMER = GS_ITEM-EKUNNR.   "Customer

         GS_POITEM-SUPP_VENDOR = GS_ITEM-EMLIF.   "Vendor to be supplied/who is to receive delivery

         GS_POITEM-SC_VENDOR = GS_ITEM-LBLKZ.     "Subcontracting vendor

         APPEND GS_POITEM TO GT_POITEM.

****************ITEMX

         GS_POITEMX-PO_ITEM = gs_item-ebelp.                 "'00001'.

         GS_POITEMX-PO_ITEMX = 'X'.

         IF GS_ITEM-MATNR IS NOT INITIAL.

           GS_POITEMX-MATERIAL = 'X'.

         ENDIF.

         GS_POITEMX-SHORT_TEXT = 'X'.

         GS_POITEMX-PLANT = 'X'.

         IF GS_POITEM-QUANTITY IS NOT INITIAL .

         GS_POITEMX-QUANTITY = 'X'.

         ENDIF.

         IF GS_POITEM-PO_UNIT IS NOT INITIAL.

         GS_POITEMX-PO_UNIT = 'X'.ENDIF.

*        if gs_poitem-calctype ne ' '.

*         GS_POITEMX-CALCTYPE = 'X'.

*        endif.

         IF GS_POITEM-NET_PRICE IS NOT INITIAL.

         GS_POITEMX-NET_PRICE = 'X'.

         ENDIF.

*        GS_POITEMX-PO_PRICE = 'X'.

         IF GS_POITEM-MATL_GROUP IS NOT INITIAL.

         GS_POITEMX-MATL_GROUP = 'X'.ENDIF.

         IF GS_POITEM-TAX_CODE IS NOT INITIAL.

         GS_POITEMX-TAX_CODE = 'X'.ENDIF.

         IF GS_POITEM-UNLIMITED_DLV IS NOT INITIAL.

         GS_POITEMX-UNLIMITED_DLV = 'X'.ENDIF.

         IF GS_POITEM-ITEM_CAT IS NOT INITIAL.

         GS_POITEMX-ITEM_CAT = 'X'.ENDIF.

         IF GS_POITEM-ACCTASSCAT IS NOT  INITIAL.

         GS_POITEMX-ACCTASSCAT = 'X'.ENDIF.

         IF GS_POITEM-PCKG_NO IS NOT INITIAL.

         GS_POITEMX-PCKG_NO = 'X'.ENDIF.

         IF GS_POITEM-PREQ_NO IS NOT INITIAL.

         GS_POITEMX-PREQ_NO = 'X'. ENDIF.    "Purchase Requisition Number

         IF GS_POITEM-PREQ_ITEM IS NOT INITIAL.

         GS_POITEMX-PREQ_ITEM = 'X'. ENDIF.       "Item Number of Purchase Requisition

         IF GS_POITEM-TRACKINGNO IS NOT INITIAL.

         GS_POITEMX-TRACKINGNO = 'X'. ENDIF.      "Requirement Tracking Number

         IF GS_POITEM-PREQ_NAME IS NOT INITIAL.

         GS_POITEMX-PREQ_NAME = 'X'ENDIF.    "Name of Requisitioner/Requester

         IF GS_POITEM-CTRL_KEY IS NOT INITIAL.

         GS_POITEMX-CTRL_KEY = 'X'ENDIF.     "Control Key for Quality Management in Procurement

         IF GS_POITEM-OVER_DLV_TOL IS NOT INITIAL.

         GS_POITEMX-OVER_DLV_TOL = 'X'. ENDIF.       "Overdelivery Tolerance Limit

         IF GS_POITEM-INCOTERMS1 IS NOT INITIAL.

         GS_POITEMX-INCOTERMS1 = 'X'. ENDIF.     "Incoterms (Part 1)

         IF GS_POITEM-INCOTERMS2 IS NOT INITIAL.

         GS_POITEMX-INCOTERMS2 = 'X'. ENDIF.     "Incoterms (Part 2)

         IF GS_POITEM-SRV_BASED_IV IS NOT INITIAL.

         GS_POITEMX-SRV_BASED_IV = 'X'ENDIF. "Indicator for Service-Based Invoice Verification

         IF GS_ITEM-REPOS NE ' '.

           GS_POITEMX-IR_IND = 'X'.     "Invoice Receipt Indicator

         ENDIF.

         IF GS_ITEM-WEBRE NE ' '.

           GS_POITEMX-GR_BASEDIV = 'X'.        "Indicator: GR-Based Invoice Verification

         ENDIF.

         IF GS_POITEM-ERS IS NOT INITIAL.

         GS_POITEMX-ERS = 'X'.ENDIF.      "Evaluated Receipt Settlement (ERS)

         IF GS_POITEM-CUSTOMER IS NOT INITIAL.

         GS_POITEMX-CUSTOMER = 'X'ENDIF. "Customer

         IF GS_POITEM-SUPP_VENDOR IS NOT INITIAL.

         GS_POITEMX-SUPP_VENDOR = 'X'. ENDIF"Vendor to be supplied/who is to receive delivery

         IF GS_POITEM-SC_VENDOR IS NOT INITIAL.

         GS_POITEMX-SC_VENDOR = 'X'. ENDIF.     "Subcontracting vendor

         APPEND GS_POITEMX TO GT_POITEMX.

         CLEAR : GS_POITEMX , GS_POITEM.


***********SCHEDULE LINE


LOOP AT GT_SCHEDULE INTO GS_SCHEDULE WHERE EBELP = GS_ITEM-EBELP AND

                   SINDICATOR EQ 'SCH'.

           lv_etenr = lv_etenr + 1.

           GS_POSCHEDULE-PO_ITEM = GS_ITEM-EBELP.

           GS_POSCHEDULE-SCHED_LINE = lv_etenr.

           GS_POSCHEDULE-DEL_DATCAT_EXT = GS_SCHEDULE-DEL_DATCAT_EXT.

           GS_POSCHEDULE-DELIVERY_DATE = GS_SCHEDULE-DELIVERY_DATE.

           GS_POSCHEDULE-QUANTITY = GS_SCHEDULE-QUANTITY.

           GS_POSCHEDULE-DELIV_TIME = GS_SCHEDULE-DELIV_TIME.

*          GS_POSCHEDULE-DELIV_TIME = GS_SCHEDULE-DELIV_TIME.

           GS_POSCHEDULE-PO_DATE = GS_SCHEDULE-PO_DATE.

           IF  GS_POSCHEDULE-DELIVERY_DATE IS NOT INITIAL.

             APPEND GS_POSCHEDULE TO GT_POSCHEDULE.

             CLEAR GS_POSCHEDULE.

             GS_POSCHEDULEX-PO_ITEM = GS_ITEM-EBELP.

             GS_POSCHEDULEX-SCHED_LINE = lv_etenr.

             GS_POSCHEDULEX-DEL_DATCAT_EXT ='X'.

             GS_POSCHEDULEX-PO_ITEMX = 'X'.

             GS_POSCHEDULEX-SCHED_LINEX = 'X'.

             GS_POSCHEDULEX-DELIVERY_DATE = 'X' .

*            GS_POSCHEDULEX-DEL_DATCAT_EXT = 'X'.

             GS_POSCHEDULEX-QUANTITY = 'X' .

             IF GS_POSCHEDULE-DELIV_TIME IS NOT INITIAL.

              GS_POSCHEDULEX-DELIV_TIME = 'X'.ENDIF.

              if GS_POSCHEDULE-PO_DATE IS NOT INITIAL.

              GS_POSCHEDULEX-PO_DATE = 'X'.ENDIF.

             APPEND GS_POSCHEDULEX TO GT_POSCHEDULEX.

             CLEAR : GS_POSCHEDULEX.

           ENDIF.

         ENDLOOP.

0 Kudos

Okay, try (or ask for) implementation of OSS note 1637916 - BAPI_PO_CREATE1: wrong price in PO with multi schedule lines.

Regards,

Raymond

0 Kudos

Hi , note 

1637916 - BAPI_PO_CREATE1: wrong price in PO with multi schedule lines. already implemented

This is my error log

0 Kudos

Manually create a PO with ME21N and create a small input file that should create a copy with same data, if you program create the PO then problem comes from your input data vs Customizing, start debugging (or create an incident in service.sap.com if you are confident with your data, are you able to create such a PO manually?)

Regards,

Raymond

0 Kudos

Now ,if i remove value in  POSCHEDULE-SCHED_LINE ther is no error but PO created only with last schedule line but ther are 2 schedule lines in xls file, if i add  POSCHEDULE-SCHED_LINE  0001 ,0002 like  ,its giving error 'please enter net price'

0 Kudos

You could try a "fall-back position"

  • create bapi with one schedule line per item
  • change bapi to add other schedules lines

(If that works, you should raise an incident)

Regards,

Raymond

0 Kudos

thanks Raymond  for your help .  Incident ? How?

0 Kudos

http://support.sap.com/incident (S_id and some authorization are required) or ask basis/super-admin.

Regards,

Raymond