PDA

Ver la Versión Completa : Problema con bapi BAPI_PR_CHANGE


vlg1971
20/10/10, 11:26:01
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
21/10/10, 10:16:15
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