User Exit Traspaso de cabecera de factura hacia el texto de cabecera de doc contable

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • yvrn
    Junior Member
    • nov
    • 17

    #1

    User Exit Traspaso de cabecera de factura hacia el texto de cabecera de doc contable

    Hola a todos,

    Estoy nueva en esto de ABAP Tengo un requerimiento que cuando se cree una factura a través de la transacción VF01 o VF04 y se active el user exit se deberá traspasar el texto de cabecera hacia el documento contable.

    Estoy realizandolo a través del EXIT_SAPLV60B_001, programa SAPLV60B. En el código estoy utilizando la función READ_TEXT, en el name le asigne el número de documento comercial, sin embargo, no entiendo cómo especificarle que la información que lea la debe guardar en el Texto Cabecera Documento: BKPF-BKTXT.

    Por favor, si alguien ha hecho algo parecido que me pueda iluminar, mil gracias!
  • DavidXD_XD
    Moderator
    • ago
    • 1255

    #2
    Hola ... tendrias que crear una exit de sustitucion y traer el texto de la factura usando el READ_TEXT ... las sustituciones la deberias de generar a nivel de cabecera dentro de la OBBH
    David Carballido Córdova

    Comentario

    • Mike
      Senior Member
      • mar
      • 144

      #3
      En el User exit EXIT_SAPLV60B_001 la estructura XACCHD (que se encuentra en el exporting) tiene el campo BKTXT, ese corresponde con el de la BKPF.

      Saludos

      Comentario

      • yvrn
        Junior Member
        • nov
        • 17

        #4
        Uhm, ok, gracias! por lo que he leido y entendido, la logica de mi include en el user exit es la siguiente:

        TABLES: VBDKR,
        ACCHD.

        DATA:
        znombre LIKE THEAD-TDNAME,
        zheader LIKE THEAD,
        zlines LIKE tline OCCURS 0 WITH HEADER LINE.

        * Asignando el numero de documento comercial
        znombre = VBDKR-VBELN.

        call function 'READ_TEXT'
        exporting
        id = '0001'
        language = 'S'
        name = znombre
        object = 'VBBK'
        importing
        header = zheader
        tables
        lines = zlines
        exceptions
        id = 1
        language = 2
        name = 3
        not_found = 4
        object = 5
        reference_check = 6
        wrong_access_to_archive = 7
        others = 8.

        *Deberia asignarle al campo texto de cabecera de documento contable, lo que lei
        ACCHD-BKTXT = zlines-tdline.

        Lo que veo es que no se esta copiando :s

        Disculpen las burradas

        Comentario

        • Mike
          Senior Member
          • mar
          • 144

          #5
          No tienes que declarar TABLES: VBDKR,
          ACCHD.

          En la estructura VBRK de la funcion estan los datos de cabecera de la factura y en XACCHD-BKTXT es a la que le vas a hacer la asignacion (esos son Parametros de entrada y salida de la funcion).

          Tambien Tienes que Leer la tabla interna zlines, para que los valores se situen en la cabecera y se te copian a la variable XACCHD-BKTXT

          Mas o menos asi

          DATA:
          znombre LIKE THEAD-TDNAME,
          zheader LIKE THEAD,
          zlines LIKE tline OCCURS 0 WITH HEADER LINE.

          * Asignando el numero de documento comercial
          znombre = VBRK-VBELN.

          call function 'READ_TEXT'
          exporting
          id = '0001'
          language = 'S'
          name = znombre
          object = 'VBBK'
          importing
          header = zheader
          tables
          lines = zlines
          exceptions
          id = 1
          language = 2
          name = 3
          not_found = 4
          object = 5
          reference_check = 6
          wrong_access_to_archive = 7
          others = 8.

          *Deberia asignarle al campo texto de cabecera de documento contable,
          READ TABLE zlines index 1. "Con esto solo obtendrias la 1ra posicion del texto
          "Si tiene varias haz un loop
          XACCHD-BKTXT = zlines-tdline.

          Comentario

          • yvrn
            Junior Member
            • nov
            • 17

            #6
            Graciaaaas, Mike! Ya lo corregi y esta listo!

            Comentario

            • yvrn
              Junior Member
              • nov
              • 17

              #7
              Yo otra vez

              Pense que estaba listo pero no... Al hacer un debugging las variables guardan los valores que deberian: de entrada, el numero de factura y de salida, el texto de cabecera (esto cuando creo la factura). Pero al visualizar la factura e irme al campo de documento contable, el texto de cabecera se encuentra vacio. He estado dandole vueltas todo el dia pero de verdad no veo que puede ser... Al final,mi codigo quedo asi:

              DATA:
              zfactura LIKE THEAD-TDNAME,
              zheader LIKE THEAD,
              zlines LIKE tline OCCURS 0 WITH HEADER LINE,
              wa_lines LIKE zlines.

              * Asignando el numero de factura
              zfactura = VBRK-VBELN.

              * Funcion para leer el texto de cabecera

              call function 'READ_TEXT'
              exporting
              id = '0001'
              language = 'S'
              name = zfactura
              object = 'VBBK'
              importing
              header = zheader
              tables
              lines = zlines
              exceptions
              id = 1
              language = 2
              name = 3
              not_found = 4
              object = 5
              reference_check = 6
              wrong_access_to_archive = 7
              others = 8.

              * Asignando el campo de texto de cabecera de la factura al campo de texto de cabecera del documento contable
              loop at zlines INTO wa_lines.
              CONCATENATE xacchd-bktxt wa_lines-tdline INTO xacchd-bktxt separated by space.
              endloop.

              Por favor, quien me pueda iluminar! Gracias de antemano!!!!

              Comentario

              • yvrn
                Junior Member
                • nov
                • 17

                #8
                Hola! Ya lo solucioné! Habia que Verificar la implementación de los métodos change_initial y change_after_check en la BADI AC_DOCUMENT y agregar esta línea:

                MOVE-CORRESPONDING im_document-header to ex_document-header.

                Si aún no funciona, Chequear las clases que comprende, sus métodos y las posibles BADIS que los contengan.

                Saludos!

                Comentario

                Trabajando...