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) |
Usá la BAPI DOCUMENTPOST
|
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 |
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 |
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. |
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. |
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 |
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, |
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 |
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 |
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 |
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 |
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 |
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, |
Hola me imagino que en el ejemplo has utilizado la tabla accountgl. Tienes que utilizar las tablas accountreceivable accountpayable. Saludos |
Asientos con BAPI
Hola Bisonye,
No estoy muy claro a que se rerfiere la tabla accountreceivable , me podrias decir por favor. Saludos, |
hola, como estas en esa tabla se indica la posicion del cliente asocioado, el cliente asociado, y datos del mismo. saludos |
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... |
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 |
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... |
Asientos Contables
Muchas Gracias Gaces!
Ese es el problema que tenia, ya esta solucionado. saludos,;) |
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, |
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... |
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 |
No le cambies el signo. Comprueba que en las líneas del documento (las tablas account) tienes los mismos importes.
Saludos |
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... |
Otra función
También puedes usar la funcion AC_DOCUMENT_DIRECT_INPUT
|
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