MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   Asientos Contables con BAPIS o Bach input (foro/showthread.php?t=26505)

kelvin.acosta 01/12/08 17:18:55

Asientos Contables con BAPIS o Bach input
 
Hola a Todos;

Mi problema es el siguiente, necesito hacer unos asientos contables en SAP, pero no tengo ni XXXX idea de como debo comenzar hacer esto, soy nuevo como ABAP y necestio que alguno de ustedes me oriente,:confused:

muchas gracias companeros anticipadamente,


saludos,

PD: Favor moderar el vocabulario (Tonijua-Moderador)

nachortizv 01/12/08 20:51:52

Usá la BAPI DOCUMENTPOST

bisonye 02/12/08 07:58:09

Yo creo que la mejor opción es usar la BAPI_ACC_DOCUMENT_POST para crear documentos contables.

Prueba la bapi por la se37 hasta que haga lo que necesitas y luego lo replicas en tu código.

Saludos

kelvin.acosta 02/12/08 19:22:58

Asientos Contables
 
Hola bisonye,

Me podrias dar un ejemplo practico de la realizacion de un asiento en ABAP, es que no soy muy diestro en este tema:confused: . agradecere tu generosidad!! :D

saludos,

Kelvin

nachortizv 02/12/08 23:38:42

Mandame un mail a y te paso un modelo de excel para subir por corrida masiva del excel.
En el archivo vas a tener todos los datos qeu aparecen en la bapi, como si hicieras una prueba con datos directamente desde la bapi, pero ya no como prueba, sino como CARGA REAL.

Slds.

nachortizv 02/12/08 23:40:49

Bisonye y Kevin.Cosa:
En mi primer post sobre este tema, al hablar de BAPI DOCUMENT POST es la misma que te dice Bisonye, pero me da fiaca escribir toda, (BAPI_ACC_DOCUMENT_POST) y, sumado a que en ntro mundillo se la conoce como la BAPI DOCUMENT POST.

Slds.

bisonye 03/12/08 06:51:01

Hola Nacho,

Ten en cuenta que esto puede dar lugar a confusiones, sobre todo en gente con poca experiencia.

Kelvin, Los datos a pasar a la bapi dependen de si vas a crear un documento de mayor de cliente o de proveedor. Los datos básicos son la cuenta(de los tres tipos anteriores) el importe y alguna fecha. Estos van en una de las tres tablas para las líneas (ACCOUNTGL, ACCOUNTRECEIVABLE, ACCOUNTPAYABLE) los importes en CURRENCYAMOUNT y los datos de cabecera con el tipo de doc, fecha de contabilización y creación en DOCUMENTHEADER. Dependiendo del sistema en que trabajes tendrás que rellenar OBJ_TYPE con blanco en 7.0 o con BKPFF.

Lo mejor que puedes hacer es pedir a un funcional o usuario que te de un asiento de prueba y revisas las tablas y rellenas los mismos datos en la Bapi.

Pregunta todas las dudas que te salgan.

Saludos

kelvin.acosta 03/12/08 19:03:00

Asientos Contable con BAPI
 
Hola Bisonye,

ya le he solicitado al funcional que me envie un ejemplo de como debe ser el asiento. ahora bien, con relacion al BAPI me gustaria que me expliques que debo colocar en cada caso. miera he puesto esto en mi programa y no lo entiendo tanto.:confused:

perdona mi desconocimiento o innorancia.:(

Ejemplo :
call function 'BAPI_ACC_DOCUMENT_POST'
exporting
documentheader =
* CUSTOMERCPD =
* CONTRACTHEADER =
* IMPORTING
* OBJ_TYPE =
* OBJ_KEY =
* OBJ_SYS =
tables
* ACCOUNTGL =
* ACCOUNTRECEIVABLE =
* ACCOUNTPAYABLE =
* ACCOUNTTAX =
currencyamount =
* CRITERIA =
* VALUEFIELD =
* EXTENSION1 =
return =
* PAYMENTCARD =
* CONTRACTITEM =
* EXTENSION2 =
* REALESTATE =


Se que debo llenar los parametros que no estan comentados, pero que debo poner en cada caso. te agradezco tu ayuda.

saludos,

bisonye 04/12/08 06:43:43

Como tienes el asiento es relativamente sencillo.

En document header pon los datos que coincidan con la BKPF. En ACCOUNTGL pones los datos que tengas en la BSIS o BSAS. En ACCOUNTRECEIVABLE los datos que tengas en la BSID o BSAD y en ACCOUNTPAYABLE los que tengas en la BSIK o BSAK. Los importes los tienes que poner en ACCOUNTPAYABLE y si tienes datos de impuestos los tienes que poner en ACCOUNTTAX.

Te surgirán problemas ve haciendo pruebas y preguntando dudas más concretas.

Saludos

kelvin.acosta 04/12/08 12:43:39

Asiento
 
Hola bisonye,


Perdona mi insistencia, si tienes un ejemplo llenando estos datos del BAPIS te agradeceria que me lo envies y me expliques que es cada parametro que le estoy enviando.

perdona nuevamente mi falta de conocimiento, soy nuevo en ABAP y desconosco muchas cosas.

un abrazo, Gracias!!

Kelvin

bisonye 04/12/08 13:23:18

Kelvin no puedo explicarte lo que es cada parámetro que vas a enviar a la bapi ya que necesitaríamos horas sentados los dos comentando los campo.

Eso se lo tienes que consultar a tu funcional.

Haz un esfuerzo revisa los campos en el documento y en la tabla y en las estructuras de la bapi.

Aqui estamos para ayudarnos pero no para hacer el trabajo de los demás.

Saludos

Garces 04/12/08 14:13:45

Acá hay un ejemplo
 
1 Adjunto(s)
Mira este código....
Es el ejemplo más simple que pude preparar para las bapis BAPI_ACC_DOCUMENT_POST y BAPI_ACC_DOCUMENT_REV_POST...
Espero te sirva
Saludos

kelvin.acosta 04/12/08 18:18:41

Asientos Contables
 
Excelente!!!! :D

Muchas gracias, es lo que necesitaba para tener idea de como estructurar mi BAPIS y hacer los asientos contables.

Muchas gracias amigos,
:)

Kelvin Acosta

kelvin.acosta 11/12/08 20:53:46

Asiento Modulo de Inversion
 
Hola Amigos,

lo que me envio Graces, esta super bien. pero ahora tengo que hacer unos asientos para el modulo de inversion. osea que ellos registran una operacion llamese, compra o venta de una (accion,bonos,cupon) esto deber ser contabilizado, quiero saber, es el mismo BAPIS para hacer la contabilizacion de estos temas. porque en este caso no se como se manejaria el tema de si es un cliente o proveedor.

saludos,

bisonye 12/12/08 06:07:05


Hola me imagino que en el ejemplo has utilizado la tabla accountgl. Tienes que utilizar las tablas accountreceivable accountpayable.

Saludos

kelvin.acosta 12/12/08 12:49:35

Asientos con BAPI
 
Hola Bisonye,

No estoy muy claro a que se rerfiere la tabla accountreceivable , me podrias decir por favor.

Saludos,

marianoa 12/12/08 13:03:12


hola, como estas en esa tabla se indica la posicion del cliente asocioado, el cliente asociado, y datos del mismo.
saludos

Garces 12/12/08 18:28:00



Te explico....
La tabla AccountGL se usa para posiciones que afectan cuentas de mayor (es de tipo LIKE BAPIACGL09)
La tabla AccountPayable se usa para posiciones que afectan cuentas de proveedor (es de tipo LIKE BAPIACAP09)
La tabla AccountRecceivable se usa para posiciones que afectan cuentas de cliente (es de tipo LIKE BAPIACAR09)
La tabla AccountTax se usa para posiciones correspondientes a impuestos (es de tipo LIKE BAPIACTX09)
La tabla CurrencyAmount se usa para ingresar los importes de cada posición (es de tipo LIKE BAPIACCR09)

Todas estas son parámetros opcionales de la BAPI_ACC_DOCUMENT_POST, es decir, puedes ponerlas o no...

La bapi tiene otros parámetros que te recomiendo que revises en la transacción SE37, así como las estructuras que te indico líneas arriba con la SE11...

Espero haberte ayudado...
Saludos...

kelvin.acosta 12/12/08 20:02:20

Asientos contables
 
Hola,

he puesto en marcha el programa, pero me da el siguiente error. me podrias ayudar a saber cual es el error. aqui abajo colocolo el codigo del programa que estoy utilizando, el cual fue el que me enviaste Garces. donde he colocado xxxxx tengo datos reales. pero me da un error :

E RW 609
Error en el documento: IDOC 1 0
E RW 014
Interfaz: Múltiple pos. de documento




*&---------------------------------------------------------------------*
*& Report ZFI_ASIENTO_OPINVE
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

report zfi_asiento_opinve.

constants: gc_awtyp like bkpf-awtyp value 'IDOC'. "Tipo de Documento que genera el asiento (Te recomiendo el valor IDOC)


constants: gc_awkey like bkpf-awkey value '1'. "Código del documento que genera el asiento a crear
constants: gc_awkey_r like bkpf-awkey value ''. "Codigo del documento que generó el asiento a reversar (para la BAPI_ACC_DOCUMENT_REV_POST)
constants: gc_awsys like bkpf-awsys value '0'. "Sistema que genera el asiento (Te recomiendo que lo dejes vacío si lo vas a generar desde SAP)
constants: gc_bukrs like bkpf-bukrs value 'xxxx'. "Sociedad
constants: gc_busact like bkpf-glvor value 'RFBU'. "Operación empresarial (Te recomiendo el valor RFBU)

start-of-selection.

perform ejecutar_bapi.

* PERFORM reversar_bapi.

************************************************************************
form ejecutar_bapi.

data: w_header like bapiache09.
data: w_accoun like bapiacgl09.
data: w_payabl like bapiacap09.
data: w_custom like bapiacar09.
data: w_taxes like bapiactx09.
data: w_curren like bapiaccr09.
data: w_return like bapiret2.

data: t_accoun like bapiacgl09 occurs 0.
data: t_payabl like bapiacap09 occurs 0.
data: t_custom like bapiacar09 occurs 0.
data: t_taxes like bapiactx09 occurs 0.
data: t_curren like bapiaccr09 occurs 0.
data: t_return like bapiret2 occurs 0.

* Cabecera del documento contable
w_header-obj_type = gc_awtyp.
w_header-obj_key = gc_awkey.
w_header-obj_sys = gc_awsys.
w_header-bus_act = gc_busact.
w_header-ac_doc_no = 'xxxxxxxxxx'.
w_header-username = sy-uname. "Usuario
w_header-comp_code = gc_bukrs.
w_header-doc_date = sy-datum. "Fecha del Documento
w_header-pstng_date = sy-datum. "Fecha de contabilización
w_header-trans_date = sy-datum. "Fecha de Conversión
w_header-fisc_year = sy-datum+0(4). "Ejercicio
w_header-fis_period = sy-datum+4(2). "Período Contable
w_header-doc_type = 'SA'. "Tipo de Documento Contable (Te recomiendo 'SA')

* Posición G/L
clear w_accoun.
w_accoun-itemno_acc = 1. "Primera posición en el documento contable
w_accoun-gl_account = 'xxxxxxxxxx'. "Cuenta de Mayor - Ingresos/Inversiones
append w_accoun to t_accoun.

* Posicion Deudor
clear w_custom.
w_custom-itemno_acc = 1.
w_custom-customer = 'xxxxxxxxxx'.
append w_custom to t_custom.

* Valores
clear w_curren.
w_curren-itemno_acc = 1. "Asocio con la primera posición del doc. contable
w_curren-currency = 'DOP'. "Moneda
w_curren-amt_doccur = 1000. "Monto
append w_curren to t_curren.

* Valores 2
clear w_curren.
w_curren-itemno_acc = 2. "Asocio con la primera posición del doc. contable
w_curren-currency = 'DOP'. "Moneda
w_curren-amt_doccur = -1000. "Monto (opuesto para que cuadre es debe/haber)
append w_curren to t_curren.


* Llamada a la BAPI
call function 'BAPI_ACC_DOCUMENT_POST'
exporting
documentheader = w_header
tables
accountgl = t_accoun
accountreceivable = t_custom
currencyamount = t_curren
return = t_return.

call function 'BAPI_TRANSACTION_COMMIT'.

loop at t_return into w_return.

write:/ w_return-type,
w_return-id,
w_return-number,
w_return-message.

endloop.

endform. "ejecutar_bapi

************************************************************************
form reversar_bapi.

data: w_reversal like bapiacrev.
data: w_return like bapiret2.
data: t_return like bapiret2 occurs 1.

w_reversal-obj_type = gc_awtyp.
w_reversal-obj_key = gc_awkey_r.
w_reversal-obj_sys = gc_awsys.
w_reversal-obj_key_r = gc_awkey.
w_reversal-pstng_date = sy-datum.
w_reversal-comp_code = gc_bukrs.

call function 'BAPI_ACC_DOCUMENT_REV_POST'
exporting
reversal = w_reversal
bus_act = gc_busact
tables
return = t_return.

call function 'BAPI_TRANSACTION_COMMIT'.

loop at t_return into w_return.

write:/ w_return-type,
w_return-id,
w_return-number,
w_return-message.

endloop.

endform. "reversar_bapi

Garces 14/12/08 19:58:56

Hola Kelvin...

Tu error está en que estás ingresando dos posiciones del documento contable con el mismo numero de item....
Se supone que la primera posicion de tu documento contable corresponde a la posición de cuenta de mayor, entonces es correcto que pongas...

w_accoun-itemno_acc = 1.

Sin embargo, la segunda posición de tu documento corresponde a una posición deudor, por lo tanto, deberías utilizar para ello la sentencia...

w_custom-itemno_acc = 2. (actualmente le estás asignando el valor 1)

Por esta razón el sistema te dice que tienes posiciones múltiples, estás ingresando en dos posiciones distintas el mismo valor 1...

Luego likeas en la tabla t_curren con cada posición y debería reesolverse tu problema...

Espero te haa ayudado...
Saludos...

kelvin.acosta 16/12/08 20:30:52

Asientos Contables
 
Muchas Gracias Gaces!

Ese es el problema que tenia, ya esta solucionado.

saludos,;)

kelvin.acosta 17/12/08 18:11:32

Asiento Contable
 
Garces,

realmente ya no me da el error que te comente, pero ahora resulta que me da un error distinto. y no es que no he intendado ver que sera, pero es que no logro saber. el error es el siguiente :

perdona la falta de conocimeinto.:confused:

E RW 609
Error en el documento: IDOC TEST000001BAPICALL APD
E F5 702
Saldo en la moneda de transacción


Saludos y gracias anticipadas,

Garces 17/12/08 20:25:36


Ese error te aparece cuando la suma de los valores que ingresas en la tabla del parámetro CURRENCY_AMOUNT no es igual a cero...

Recuerda que debe cuadrar el debe con el haber en el documento contable...

En el campo 'amt_doccur' de la tabla guarda hasta 4 decimales (fíjate al hacer debug si es que cuadra la suma hasta este nivel).
Basta que no cuadre la cifra menos signifcativa de dicho campo para que no cuadre tu documento y te aparezca dicho mensaje...

Saludos...

kelvin.acosta 18/12/08 13:24:59

Error Saldo de Moneda
 
Hola Garces,

te voy a colocar el bloque de codigo que estoy usando para hacer el asiento.

* Valores
clear t_curren.
t_curren-itemno_acc = 1. "Asocio con la primera posición del doc. contable
t_curren-curr_type = '00'.
t_curren-currency = 'DOP'. "Moneda
t_curren-amt_doccur = 100. "Monto
append t_curren.

* Valores
clear t_curren.
t_curren-itemno_acc = 2. "Asocio con la primera posición del doc. contable
t_curren-curr_type = '00'.
t_curren-currency = 'DOP'. "Moneda
t_curren-amt_doccur = -100. "Monto (opuesto para que cuadre es debe/haber)
append t_curren.

como podras ver, estoy colocando el mismo monto, solo con la diferencia de que uno es positivo y el otro negativo. no se si esta mal, tu me diras.

gracias otra vez Garces,

Saludos

bisonye 18/12/08 13:37:19

No le cambies el signo. Comprueba que en las líneas del documento (las tablas account) tienes los mismos importes.

Saludos

Garces 18/12/08 14:31:08


Probando lo que estás haciendo, me sucedió lo mismo que a ti y acabo de dar con la respuesta. Presumo que es lo mismo que te pasó a ti, puesto que me apareció el mismo mensaje que a ti....

Mira.... Si mal no recuerdo, lo que deseas es un documento contable con una posición de mayor y una posición cliente.
Para eso usas los parámetros ACCOUNTGL y ACCOUNTRECEIVABLE....

En el código original que te pasé, lo que ingresaba era una posicón de mayor y una posición de acreedor.
Entonces usaba los parámetros ACCOUNTGL y ACCOUNTPAYABLE...

Ahora bien, fíjate en la llamada a la bapi cuáles son los parámetros que estás pasándole (lo más probable es que te hayas olvidado que debes agregar el parámetro ACCOUNTRECEIVABLE para indicar que le estás pasando posiciones de cliente y quitarle el parámetro ACCOUNTPAYABLE para indicarle que ya no vas a pasar posiciones de acreedor).

Por más correcto que hayas llenado el parámetro CURRENCYAMOUNT a través de la tabla t_curren, si las otras dos tablas que le pasas con t_accoun en el parámetro ACCOUNTGL y t_payabl en el parámetro ACCOUNTPAYABLE, la única entrada válida que tomará la bapi será la primera correspondiente a la tabla t_accoun...

Por lo tanto, faltaría una segunda posición para compensar el saldo del documento contable....

Revisa y me avisas para ver si tu error es ese o si es que estoy hablando de más...

Saludos...

ilo 23/12/08 11:49:27

Otra función
 
También puedes usar la funcion AC_DOCUMENT_DIRECT_INPUT

adritobb 16/03/09 19:47:05

buenas muchachos...
andaba con un problemita de ese estilo. Ahora, lo que tengo que hacer es con esa BAPI emular a un abono, o sea, a una nota de credito. En verdad me pidieron que lo haga con la FB65, pero si es lo mismo y anda, mejor. Q datos debo cambiar?

GraciasÇ!


Husos Horarios son GMT. La hora en este momento es 06:18:05.

www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web