‎2007 Oct 24 6:39 AM
Hi,
I am facing a strange problem in creation of PO through "BAPI_PO_CREATE1".
In the Item condition internal table, I am passing the condition types.
The PO is getting created successfully.
Eg. I pass conditions and their values as follows:
PB00 : 1000
ZB00 : 1000
FRB1 : 1000
The PO is created successfully and we can check the prices updated properly.
Now,
When I create a second PO with the same values, the prices are taken from the last PO and the prices from
my code(which are passed through BAPI) are added to the last value.
If I run the program with the same values as above, the PO is created with the values 2000.
Third time it is 3000 and so.
The value from the last PO is coming into the new PO.
Please advise me if anything missing.
My code is below::
================
&----
*& Report ZTEST_PO
*&
&----
*&
*&
&----
REPORT ZTEST_PO.
data : HEADER like BAPIMEPOHEADER .
data : HEADERX like BAPIMEPOHEADERX .
data : POITEM like BAPIMEPOITEM occurs 0 with header line.
data : POITEMX like BAPIMEPOITEMX occurs 0 with header line.
data : POSCHEDULE like BAPIMEPOSCHEDULE occurs 0 with header line.
data : POSCHEDULEX like BAPIMEPOSCHEDULX occurs 0 with header line.
DATA : RET LIKE BAPIRET2 OCCURS 0 WITH HEADER LINE.
DATA : ret1 like bapiret2.
Data PO like BAPIMEPOHEADER-PO_NUMBER.
************************************************
data : pocond like BAPIMEPOCOND occurs 0 with header line.
data : pocondx like BAPIMEPOCONDX occurs 0 with header line.
*pocond-CONDITION_NO = '00000'.
pocond-itm_number = '000010'.
pocond-COND_ST_NO = '001' .
*pocond-COND_COUNT = '1'.
pocond-COND_TYPE = 'PB00'.
pocond-COND_value = '500'.
pocond-CURRENCY = 'EUR'.
pocond-CURRENCY_ISO = 'EUR'.
pocond-CHANGE_ID = 'I'.
APPEND POCOND.
**pocond-CONDITION_NO = '00000'.
*pocond-itm_number = '000010'.
*pocond-COND_ST_NO = '10' .
*pocond-COND_COUNT = '2'.
*pocond-COND_TYPE = 'PBXX'.
*pocond-COND_value = '555'.
*pocond-CURRENCY = 'EUR'.
*pocond-CURRENCY_ISO = 'EUR'.
*pocond-CHANGE_ID = 'U'.
*APPEND POCOND.
*
**pocond-CONDITION_NO = '00000'.
*pocond-itm_number = '000010'.
*pocond-COND_ST_NO = '20' .
*pocond-COND_COUNT = 0.
*pocond-COND_TYPE = 'ZB00'.
*pocond-COND_value = '666'.
*pocond-CURRENCY = 'EUR'.
*pocond-CHANGE_ID = 'U'.
*APPEND POCOND.
*
**pocond-CONDITION_NO = '00000'.
*pocond-itm_number = '000010'.
*pocond-COND_ST_NO = '30' .
*pocond-COND_COUNT = 0.
*pocond-COND_TYPE = 'FRB1'.
*pocond-COND_value = '777'.
*pocond-CURRENCY = 'EUR'.
*pocond-CHANGE_ID = 'U'.
*APPEND POCOND.
*pocondx-CONDITION_NO = '00000'.
POCONDX-ITM_NUMBER = '000010'.
POCONDX-COND_ST_NO = '000'.
*POCONDX-CONDITION_NOX = 'X'.
*POCONDX-COND_ST_NOX = 'X'.
POCONDX-ITM_NUMBERX = 'X'.
*POCONDX-COND_COUNT = 'X'.
POCONDX-COND_TYPE = 'X'.
POCONDX-COND_value = 'X'.
pocondX-CURRENCY = 'X'.
*pocondX-CURRENCY_ISO = 'X'.
pocondX-CHANGE_ID = 'X'.
APPEND POCONDX.
*****************************
HEADER-COMP_CODE = 'TF01'.
HEADER-DOC_TYPE = 'DMPO'.
HEADER-VENDOR = '0000000317'.
HEADER-LANGU = 'EN'.
HEADER-PURCH_ORG = '1001'.
HEADER-PUR_GROUP = '110'.
HEADER-CURRENCY = 'EUR'.
HEADER-DOC_DATE = '22.10.2007'.
HEADER-REF_1 = '999999999999'.
HEADERX-VENDOR = 'X'.
HEADERX-PURCH_ORG = 'X'.
HEADERX-PUR_GROUP = 'X'.
HEADERX-REF_1 = 'X'.
POITEM-PO_ITEM = '00010'.
POITEM-MATERIAL = '00042199730L'.
POITEM-PLANT = '1000'.
POITEM-STGE_LOC = '1030'.
POITEM-MATL_GROUP = '01'.
POITEM-QUANTITY = '10'.
POITEM-PRICE_UNIT = 500.
poitem-calctype = 'C'.
append POITEM.
POITEMX-PO_ITEM = '00010'.
POITEMX-MATERIAL = 'X'.
POITEMX-PLANT = 'X'.
POITEMX-QUANTITY = 'X'.
POITEMX-PRICE_UNIT = 'X'.
append POITEMX.
POSCHEDULE-PO_ITEM = '00010'.
POSCHEDULE-DELIVERY_DATE = '30.10.2007'.
append POSCHEDULE.
POSCHEDULEX-PO_ITEM = '00010'.
POSCHEDULEX-PO_ITEMX = 'X'.
POSCHEDULEX-DELIVERY_DATE = 'X'.
append POSCHEDULEX.
CALL FUNCTION 'BAPI_PO_CREATE1'
EXPORTING
poheader = HEADER
POHEADERX = HEADERX
POADDRVENDOR =
TESTRUN =
MEMORY_UNCOMPLETE =
MEMORY_COMPLETE =
POEXPIMPHEADER =
POEXPIMPHEADERX =
VERSIONS =
NO_MESSAGING =
NO_MESSAGE_REQ =
NO_AUTHORITY =
NO_PRICE_FROM_PO =
IMPORTING
EXPPURCHASEORDER = PO
EXPHEADER =
EXPPOEXPIMPHEADER =
TABLES
RETURN = RET
POITEM = POITEM
POITEMX = POITEMX
POADDRDELIVERY =
POSCHEDULE = POSCHEDULE
POSCHEDULEX = POSCHEDULEX
POACCOUNT =
POACCOUNTPROFITSEGMENT =
POACCOUNTX =
POCONDHEADER = POCOND
POCONDHEADERX = POCONDX
POCOND = POCOND
POCONDX = POCONDX
POLIMITS =
POCONTRACTLIMITS =
POSERVICES =
POSRVACCESSVALUES =
POSERVICESTEXT =
EXTENSIONIN =
EXTENSIONOUT =
POEXPIMPITEM =
POEXPIMPITEMX =
POTEXTHEADER =
POTEXTITEM =
ALLVERSIONS =
POPARTNER =
POCOMPONENTS =
POCOMPONENTSX =
POSHIPPING =
POSHIPPINGX =
POSHIPPINGEXP =
NFMETALLITMS =
.
if RET-type NE 'E'.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'
IMPORTING
RETURN = ret1.
write : ' PO Created : ', PO .
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'
IMPORTING
RETURN = ret1.
ENDIF.
================
‎2007 Oct 24 7:11 AM