PDA

Ver la Versión Completa : Problema con creacion de documento contable


xinitta
28/01/09, 18:57:39
Hola a todos...

necesito de su ayuda nunca he trabajado con BAPI y tengo que modificar un programa que no realice yo, que como dice crea documentos contables.. el problema si no me equivoco es con la BAPI 'BAPI_ACC_DOCUMENT_POST' que manda un error (adjunto imagen)... por favor si me pudiesen ayudar se los agradeceria mucho, ya que tengo muy poco tiempo para poder dar con el error.

adjunto el programa (ZFI_DOCU_CONTABLE), el txt (prueba) y la imagen con el error..

de ante muchas gracias...

Saludos...

bisonye
29/01/09, 08:37:40
Pues tienes dos errores diferentes. El error de la moneda es que estás intentando relacionar la línea de moneda con una línea del documento que no existe. Parece que tu documento tiene dos líneas, pon número 1 y 2 a las líneas de moneda para que funcione.

El otro es por el número de deudor. Está bastante claro, no existe. Revisa el maestro de deudores para buscar el número correcto.

Saludos

xinitta
29/01/09, 15:16:01
ya lo solucione ahora si contabiliza :D ...
tan solo era que faltaba algunas cositas en el codigo...

FORM preparar_contabilizacion.
DATA : cont TYPE i,
zlin TYPE i,
w_kostl(10) TYPE n.

LOOP AT ti_posicion WHERE budat <> ' '.

CHECK ti_posicion-newko NE '0'.
* CHECK ti_posicion-wrbtr_4 = '0'.
cont = 1.

* Llena la estructura s_documentheader cabecera de documento
PERFORM set_document_header.

* Si es una cuenta deudor
IF ti_posicion-newbs > 0 AND ti_posicion-newbs < 20.
CLEAR ti_accountreceivable.
ti_accountreceivable-itemno_acc = cont.
ti_accountreceivable-customer = ti_posicion-newko.
* ti_accountreceivable-item_text = 'Factura'.
APPEND ti_accountreceivable.
ENDIF.
* Si es una cuenta Acreedor
IF ti_posicion-newbs > 20 AND ti_posicion-newbs < 40.
ENDIF.
* Si es una cuenta de mayor
IF ti_posicion-newbs3 >= 40 AND ti_posicion-newbs3 <= 50.
CLEAR ti_accountgl.
ADD 1 TO cont.
ti_accountgl-itemno_acc = cont.
ti_accountgl-gl_account = ti_posicion-newko3.
ti_accountgl-tax_code = ti_posicion-mwskz1.

IF NOT ti_posicion-kostl IS INITIAL.
IF ti_posicion-kostl CO '0123456789 '.
w_kostl = ti_posicion-kostl.
ti_accountgl-costcenter = w_kostl.
ELSE.
ti_accountgl-costcenter = ti_posicion-kostl.
ENDIF.
ENDIF.
APPEND ti_accountgl.

ENDIF.
IF ti_posicion-newbs4 >= 40 AND ti_posicion-newbs4 <= 50.
CLEAR ti_accountgl.
ADD 1 TO cont.
ti_accountgl-itemno_acc = cont.
ti_accountgl-gl_account = ti_posicion-newko4.
ti_accountgl-tax_code = ti_posicion-mwskz2.
APPEND ti_accountgl.
ENDIF.

* Ingresa cuenta indicador de impuesto
CLEAR ti_accounttax.
ADD 1 TO cont.
ti_accounttax-itemno_acc = cont.
ti_accounttax-gl_account = ti_posicion-newko2.
ti_accounttax-tax_code = ti_posicion-mwskz1.
APPEND ti_accounttax.

* Ingresar la posicion en su moneda respectiva
CLEAR ti_currencyamount.
ti_currencyamount-itemno_acc = '1'.
ti_currencyamount-currency = ti_posicion-waers.
IF ti_posicion-blart = 'DC' OR ti_posicion-blart = 'DY'. "Nota Credito
* Ingresar positivo o negativo el importe dependiendo de si pertenece al H o S
ti_currencyamount-amt_doccur = ti_posicion-wrbtr_d * -1.
ti_currencyamount-amt_base = ti_posicion-wrbtr_d * -1.
APPEND ti_currencyamount.

IF ti_posicion-wrbtr_3 IS NOT INITIAL.
ti_currencyamount-itemno_acc = '2'.
ti_currencyamount-currency = ti_posicion-waers.
ti_currencyamount-amt_doccur = ti_posicion-wrbtr_3.
ti_currencyamount-amt_base = ti_posicion-wrbtr_3.
APPEND ti_currencyamount.
ENDIF.
IF ti_posicion-wrbtr_h IS NOT INITIAL.
ti_currencyamount-itemno_acc = '3'.
ti_currencyamount-currency = ti_posicion-waers.
ti_currencyamount-amt_doccur = ti_posicion-wrbtr_h.
ti_currencyamount-amt_base = ti_posicion-wrbtr_3.
APPEND ti_currencyamount.
ENDIF.
IF ti_posicion-wrbtr_4 IS NOT INITIAL.
ti_currencyamount-itemno_acc = '4'.
ti_currencyamount-currency = ti_posicion-waers.
ti_currencyamount-amt_doccur = ti_posicion-wrbtr_4.
ti_currencyamount-amt_base = ti_posicion-wrbtr_3.
APPEND ti_currencyamount.
ENDIF.
ELSE.
ti_currencyamount-amt_doccur = ti_posicion-wrbtr_d.
ti_currencyamount-amt_base = ti_posicion-wrbtr_d.
APPEND ti_currencyamount.
IF ti_posicion-wrbtr_3 IS NOT INITIAL.
ti_currencyamount-itemno_acc = '2'.
ti_currencyamount-currency = ti_posicion-waers.
ti_currencyamount-amt_doccur = ti_posicion-wrbtr_3 * -1.
ti_currencyamount-amt_base = ti_posicion-wrbtr_3 * -1.
APPEND ti_currencyamount.
ENDIF.
IF ti_posicion-wrbtr_h IS NOT INITIAL.
ti_currencyamount-itemno_acc = '3'.
ti_currencyamount-currency = ti_posicion-waers.
ti_currencyamount-amt_doccur = ti_posicion-wrbtr_h * -1.
ti_currencyamount-amt_base = ti_posicion-wrbtr_3 * -1.
APPEND ti_currencyamount.
else.
ti_currencyamount-itemno_acc = '3'.
ti_currencyamount-currency = ti_posicion-waers.
ti_currencyamount-amt_doccur = ti_posicion-wrbtr_h * -1.
ti_currencyamount-amt_base = ti_posicion-wrbtr_3 * -1.
APPEND ti_currencyamount.
ENDIF.
IF ti_posicion-wrbtr_4 IS NOT INITIAL.
ti_currencyamount-itemno_acc = '4'.
ti_currencyamount-currency = ti_posicion-waers.
ti_currencyamount-amt_doccur = ti_posicion-wrbtr_4 * -1.
ti_currencyamount-amt_base = ti_posicion-wrbtr_3 * -1.
APPEND ti_currencyamount.
else.
ti_currencyamount-itemno_acc = '4'.
ti_currencyamount-currency = ti_posicion-waers.
ti_currencyamount-amt_doccur = ti_posicion-wrbtr_4 * -1.
ti_currencyamount-amt_base = ti_posicion-wrbtr_3 * -1.
APPEND ti_currencyamount.
ENDIF.
ENDIF.

PERFORM call_bapi.
CLEAR: s_documentheader, ti_accountreceivable, ti_accountgl, ti_accounttax, ti_currencyamount.
REFRESH: ti_accountreceivable, ti_accountgl, ti_accounttax, ti_currencyamount.
ENDLOOP.
ENDFORM. "preparar_contabilizacion


gracias...