PDA

Ver la Versión Completa : Bapi- Bapi_contract_change


Raulalsan
22/03/18, 14:44:22
Saludos a tod@s!
estoy intentando actualizar el net_price a través de la bapi BAPI_CONTRACT_CHANGE.
Todos los valores me los informa bien y me crea las posiciones nuevas, sin embargo, me deja el net_price sin informar.


ls_item-item_no = '000080'. "EBELP posicion
ls_item-material = '4038306'. "MATNR material
ls_item-target_qty = '105'. "KTMNG "Ctd.prevista
ls_item-net_price = '333'. " NETPR Precio neto
APPEND ls_item TO lt_item.

ls_itemx-item_no = '000080'. "EBELP posicion
ls_itemx-target_qty = abap_true. "
ls_itemx-net_price = abap_true.
APPEND ls_itemx TO lt_itemx.

CALL FUNCTION 'BAPI_CONTRACT_CHANGE'
EXPORTING
purchasingdocument = '4600000029'
TABLES
item = lt_item
itemx = lt_itemx
return = lt_return.

COMMIT WORK AND WAIT.

PD: Si ejecuto el programa Z dos veces si que cambia el NET_PRICE.

¿Alguna idea de por qué no informa el net_price?

Muchas gracias!!

Raulalsan
26/03/18, 11:24:21
Finalmente lo resolví de una manera no muy óptima pero que funciona...
Básicamente lanzo la BAPI dos veces y limpiando las tablas después de cada ejecución.

De esta manera si que lo cambia.
Dejo la solución por si a alguien le ayuda :)

DO 2 TIMES.
CLEAR ls_item.
ls_item-item_no = 'XXXXX'.
ls_item-material = 'XXXXXX'.
ls_item-material = |{ ls_item-material ALPHA = IN }|.
ls_item-target_qty = X.
ls_item-net_price = 'XXX.XX'.

APPEND ls_item TO lt_item.

CLEAR ls_itemx.
ls_itemx-item_no = 'XXXXX'.
ls_itemx-material = abap_true.
ls_itemx-target_qty = abap_true.
ls_itemx-net_price = abap_true.
APPEND ls_itemx TO lt_itemx.

CALL FUNCTION 'BAPI_CONTRACT_CHANGE'
EXPORTING
purchasingdocument = 'XXXXXXXX'
* testrun = lv_salida
TABLES
item = lt_item
itemx = lt_itemx
return = lt_return.

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.

CLEAR: lt_item, lt_itemx, lt_return.
REFRESH: lt_item, lt_itemx, lt_return.
ENDDO.