04-06-2016 8:00 AM
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
04-06-2016 11:37 AM
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
04-06-2016 8:07 AM
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
04-06-2016 8:27 AM
thanks for ur reply
i have tried ,But still im getting the same error.
04-06-2016 9:00 AM
Hi Peter,
Could you share your screen shot of error message.
Regards,
Vivek
04-06-2016 9:10 AM
Regards,
Raymond
PS: For which version of ECC?
04-06-2016 9:15 AM
04-06-2016 10:29 AM
HI Peter,
Check your condition logic in header level. Also check table EKKO AND KONV-KHERK.
Regards,
Vivek
04-06-2016 11:37 AM
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
04-07-2016 8:35 AM
Could you post part of your code related to
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
04-07-2016 9:16 AM
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?
04-07-2016 9:24 AM
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!!
04-07-2016 9:55 AM
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.
04-07-2016 10:06 AM
Okay, try (or ask for) implementation of OSS note 1637916 - BAPI_PO_CREATE1: wrong price in PO with multi schedule lines.
Regards,
Raymond
04-07-2016 10:19 AM
Hi , note
1637916 - BAPI_PO_CREATE1: wrong price in PO with multi schedule lines. already implemented
This is my error log
04-07-2016 10:29 AM
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
04-07-2016 11:36 AM
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'
04-07-2016 1:04 PM
You could try a "fall-back position"
(If that works, you should raise an incident)
Regards,
Raymond
04-07-2016 2:47 PM
04-07-2016 2:50 PM
http://support.sap.com/incident (S_id and some authorization are required) or ask basis/super-admin.
Regards,
Raymond