Bapi- Bapi_contract_change

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • Raulalsan
    Junior Member
    • sep
    • 25

    #1

    Bapi- Bapi_contract_change

    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!!
    Editado por última vez por Raulalsan; 26/03/2018, 11:50:20.
  • Raulalsan
    Junior Member
    • sep
    • 25

    #2
    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.

    Comentario

    Trabajando...