06-25-2006 4:00 PM
Hi again,
I have tested to create or modify a purchase order using (BAPIs CREATE1 and CHANGE) using the FREE_ITEM flag, but it doesn't work. There is a SAP note that explain that is not possible.
Anybody know any way to uptade a service purchase order line with price 0,
Thanks
BR
Jorge
07-03-2006 4:35 PM
hello,
please check with following code. this code works in SAP46C.
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.
parameters: P_EBELP like ekpo-ebelp.
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
* POHEADER =
* POHEADERX =
* POADDRVENDOR =
* TESTRUN =
* MEMORY_UNCOMPLETE =
* MEMORY_COMPLETE =
* NO_MESSAGING =
* NO_MESSAGE_REQ =
* NO_AUTHORITY =
* NO_PRICE_FROM_PO =
* IMPORTING
* EXPHEADER =
TABLES
return = gt_return
poitem = gt_bapimepoitem
poitemx = gt_bapimepoitemx
* POADDRDELIVERY =
* POSCHEDULE =
* POSCHEDULEX =
* POACCOUNT =
* POACCOUNTPROFITSEGMENT =
* POACCOUNTX =
* POCONDHEADER =
* POCONDHEADERX =
* POCOND =
* POCONDX =
* POLIMITS =
* POCONTRACTLIMITS =
* POSERVICES =
* POSRVACCESSVALUES =
* POSERVICESTEXT =
* EXTENSIONIN =
* EXTENSIONOUT =
* POTEXTHEADER =
* POTEXTITEM =
* POPARTNER =
.
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
IF p_test IS INITIAL.
CLEAR: gs_return,
gt_return[].
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'
IMPORTING
return = gs_return.
If you have made a single test in SE37; the update doesnot work as it needs a exclusive <b>commit work</b>.
Hope this helps.
Best Regards, Murugesh AS