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

PO BAPI Problem in condition types

Former Member
0 Likes
757

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.

================

1 REPLY 1
Read only

Former Member
0 Likes
406

Any input??