Problema con bapi BAPI_PR_CHANGE

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • vlg1971
    Senior Member
    • feb
    • 195

    #1

    Problema con bapi BAPI_PR_CHANGE

    Hola...
    Os adjunto el codigo que utilizo y seguidamente os explico el problema:
    DATA: wa_pritem LIKE bapimereqitemimp,
    wa_pritemx LIKE bapimereqitemx,
    wa_praccount LIKE bapimereqaccount,
    wa_praccountx LIKE bapimereqaccountx.

    DATA: BEGIN OF it_pritemx OCCURS 0.
    INCLUDE STRUCTURE bapimereqitemx.
    DATA: END OF it_pritemx.

    DATA: BEGIN OF it_pritem OCCURS 0.
    INCLUDE STRUCTURE bapimereqitemimp.
    DATA: END OF it_pritem.

    DATA: BEGIN OF it_praccount OCCURS 0.
    INCLUDE STRUCTURE bapimereqaccount.
    DATA: END OF it_praccount.

    DATA: BEGIN OF it_praccountx OCCURS 0.
    INCLUDE STRUCTURE bapimereqaccountx.
    DATA: END OF it_praccountx.


    DATA: BEGIN OF it_change_return OCCURS 0.
    INCLUDE STRUCTURE bapiret2.
    DATA: END OF it_change_return.



    "Asignar nuevos datos a la posicion
    wa_pritem-preq_item = '00010'. "Item Number of Purchase Requisition
    wa_pritem-quantity = 14. "Purchase Requisition Quantity
    wa_pritem-PRICE_UNIT = 14.
    wa_pritem-rel_date = '20101212'.
    wa_pritem-short_text = 'TXT BAPI .NET 12'.
    wa_pritem-acctasscat = 'P'.
    wa_pritem-plant = '001'.
    wa_pritem-deliv_date = '20101212'.
    wa_pritem-pur_group = '01'.
    wa_pritem-unit = 'ST'.
    wa_pritem-matl_group = '01'.
    wa_pritem-preq_name = 'vlg 12'.
    wa_pritem-req_blocked = '1'.
    wa_pritem-reason_blocking = 'bloque 12'.

    "Indicar que cambios son los que se deben ejecutar
    wa_pritemx-preq_item = '00010'.
    wa_pritemx-quantity = 'X'.
    wa_pritemx-PRICE_UNIT = 'X'.
    wa_pritemx-short_text = 'X'.
    wa_pritemx-acctasscat = 'X'.
    wa_pritemx-plant = 'X'.
    wa_pritemx-deliv_date = 'X'.
    wa_pritemx-pur_group = 'X'.
    wa_pritemx-unit = 'X'.
    wa_pritemx-matl_group = 'X'.
    wa_pritemx-preq_name = 'X'.
    wa_pritemx-req_blocked = 'X'.
    wa_pritemx-reason_blocking = 'X'.
    "Asignar nuevos datos a la posicion de imputacion
    wa_praccount-preq_item = '00010'.
    wa_praccount-quantity = 14.
    wa_praccount-gl_account = '0000000000'.
    * wa_praccount-co_area = 'CTC'.
    wa_praccount-wbs_element = 'PARCEL'.
    * wa_praccount-HKONT = ''.
    "Indicar que cambios son los que se deben ejecutar
    wa_praccountx-preq_item = '00010'.
    wa_praccountx-quantity = 'X'.
    wa_praccountx-gl_account = 'X'.
    * wa_praccountx-co_area = 'X'.
    wa_praccountx-wbs_element = 'X'.


    APPEND wa_pritemx TO it_pritemx.
    APPEND wa_pritem TO it_pritem.
    APPEND wa_praccount TO it_praccount.
    APPEND wa_praccountx TO it_praccountx.


    data lv_banfn type bapimereqheader-preq_no value '0100000267'.
    CALL FUNCTION 'BAPI_PR_CHANGE'
    EXPORTING
    number = lv_banfn
    * PRHEADER =
    * PRHEADERX =
    * TESTRUN =
    * IMPORTING
    * PRHEADEREXP =
    TABLES
    return = it_change_return
    pritem = it_pritem
    pritemx = it_pritemx
    * PRITEMEXP =
    * PRITEMSOURCE =
    praccount = it_praccount
    * PRACCOUNTPROITSEGMENT =
    praccountx = it_praccountx
    * PRADDRDELIVERY =
    * PRITEMTEXT =
    * PRHEADERTEXT =
    * EXTENSIONIN =
    * EXTENSIONOUT =
    * PRVERSION =
    * PRVERSIONX =
    * ALLVERSIONS =
    .


    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
    * EXPORTING
    * WAIT =
    * IMPORTING
    * RETURN =
    .

    Si ejecuto este codigo me retorna un error que dice los siguiente:

    ** La suma de las cantidades >28.000< es mayor que la cantidad total

    Esto solo ocurre cuando le paso a la BADI las tabla interna de imputacion osea "it_praccount", si no le paso la tabla interna que os indico la modificaicon se hace correctamente, el problema es que debo de modificar la cuenta de mayor y el elemento pep y estos datos se deben de introducir en la estructura "it_praccount"


    Cualquier ayuda sera agradecida
    Gracias
  • vlg1971
    Senior Member
    • feb
    • 195

    #2
    He logrado que no retorne el error rellenando el campo

    wa_praccount-serial_no = '01'

    pero ahora no realiza la modificacion referente a los datos de imputacion

    ¿alguien me puede horientar al respecto?

    Gracias

    Comentario

    Trabajando...