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: 

Free_Item in BAPI_PO_CHANGE

Former Member
0 Kudos

Hi,

I want to make price = 0 in PO line Item. I'm using BAPI_PO_CHANGE with this code:

DATA: gs_ekpo TYPE ekpo.

DATA: gt_return TYPE TABLE OF bapiret2.

DATA: gs_return TYPE bapiret2.

DATA: gt_bapimepoitem TYPE TABLE OF bapimepoitem.

DATA: gt_bapimepoitemx TYPE TABLE OF bapimepoitemx.

DATA: gs_bapimepoitem TYPE bapimepoitem.

DATA: gs_bapimepoitemx TYPE bapimepoitemx.

PARAMETERS: p_ebeln LIKE ekpo-ebeln DEFAULT '1000901140'.

PARAMETERS: p_ebelp LIKE ekpo-ebelp DEFAULT '1'.

CLEAR: gs_ekpo,

gs_return,

gt_return[],

gs_bapimepoitem,

gs_bapimepoitemx,

gt_bapimepoitem[],

gt_bapimepoitemx[].

SELECT SINGLE * FROM ekpo INTO gs_ekpo

WHERE

ebeln = p_ebeln AND

ebelp = p_ebelp.

IF sy-subrc = 0.

gs_bapimepoitem-po_item = gs_ekpo-ebelp.

gs_bapimepoitem-free_item = 'X'.

APPEND gs_bapimepoitem TO gt_bapimepoitem.

gs_bapimepoitemx-po_item = gs_ekpo-ebelp.

gs_bapimepoitemx-free_item = 'X'.

APPEND gs_bapimepoitemx TO gt_bapimepoitemx.

CALL FUNCTION 'BAPI_PO_CHANGE'

EXPORTING

purchaseorder = gs_ekpo-ebeln

TABLES

return = gt_return

poitem = gt_bapimepoitem

poitemx = gt_bapimepoitemx.

READ TABLE gt_return INTO gs_return WITH KEY type = 'E'.

IF sy-subrc EQ 0.

*- errors

WRITE:/ 'E', gs_ekpo-ebeln, gs_ekpo-ebelp, 'BAPI',

gs_return-message.

ELSE.

*- success

CLEAR: gs_return,

gt_return[].

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

EXPORTING

wait = 'X'

IMPORTING

return = gs_return.

ENDIF.

ENDIF.

*******************

The program run succsefely, but it does not update the price on the line item to value 0.

Any Help please? i have SAP 4.72 with SAPKH47016.

Thanks.

2 REPLIES 2

Former Member
0 Kudos

Hi

Try using the BADI to change the price.

Implement BADI definition (ME_PROCESS_PO_CUST) and create a class and implemented the interface (IF_EX_ME_PROCESS_PO_CUST) and use the methods (PROCESS_ITEM) - GET_DATA and SET_DATA to change the price

Pls let me know, whether it works

Regards

Madhan Doraikannan

0 Kudos

It don't work because i don't have access to tables POITEM and POITEMX of bapi_po_change. (PROCESS_ITEM) - GET_DATA get only data from database.

Any others solutions ?

Thanks