Asientos Contables con BAPIS o Bach input

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • kelvin.acosta
    Member
    • ago
    • 37

    #16
    Asientos con BAPI

    Hola Bisonye,

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

    Saludos,
    kmeoi

    Comentario

    • marianoa
      Member
      • jun
      • 77

      #17
      Originalmente publicado por kelvin.acosta
      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

      Comentario

      • Garces
        Senior Member
        • ago
        • 321

        #18
        Originalmente publicado por kelvin.acosta
        Hola Bisonye,

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

        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...
        Miguel Ángel Garcés Ramírez

        Comentario

        • kelvin.acosta
          Member
          • ago
          • 37

          #19
          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
          kmeoi

          Comentario

          • Garces
            Senior Member
            • ago
            • 321

            #20
            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...
            Miguel Ángel Garcés Ramírez

            Comentario

            • kelvin.acosta
              Member
              • ago
              • 37

              #21
              Asientos Contables

              Muchas Gracias Gaces!

              Ese es el problema que tenia, ya esta solucionado.

              saludos,
              kmeoi

              Comentario

              • kelvin.acosta
                Member
                • ago
                • 37

                #22
                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.

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


                Saludos y gracias anticipadas,
                kmeoi

                Comentario

                • Garces
                  Senior Member
                  • ago
                  • 321

                  #23
                  Originalmente publicado por kelvin.acosta
                  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.

                  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...
                  Miguel Ángel Garcés Ramírez

                  Comentario

                  • kelvin.acosta
                    Member
                    • ago
                    • 37

                    #24
                    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
                    kmeoi

                    Comentario

                    • bisonye
                      Senior Member
                      • ago
                      • 635

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

                      Saludos
                      http://sapymas.blogspot.com/

                      Comentario

                      • Garces
                        Senior Member
                        • ago
                        • 321

                        #26
                        Originalmente publicado por kelvin.acosta
                        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
                        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...
                        Editado por última vez por Garces; 18/12/2008, 14:33:09.
                        Miguel Ángel Garcés Ramírez

                        Comentario

                        • ilo
                          Junior Member
                          • jun
                          • 3

                          #27
                          Otra función

                          También puedes usar la funcion AC_DOCUMENT_DIRECT_INPUT

                          Comentario

                          • adritobb
                            Junior Member
                            • oct
                            • 16

                            #28
                            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Ç!

                            Comentario

                            Trabajando...