Anuncio

Colapsar
No hay anuncio todavía.

Ayuda... Sobre field siymbol

Colapsar
X
 
  • Filtrar
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes

  • Ayuda... Sobre field siymbol

    Buenos dias Foro, estoy tratando de mejorar los tiempos de respuesta de algunos procesos que tengo y estoy intentando trabajar con FIELD-SYMBOL, estoy haciendo lo siguiente:

    CREATE DATA REF_ITAB TYPE STANDARD TABLE OF BKPF WITH NON-UNIQUE DEFAULT KEY.
    ASSIGN REF_ITAB->* TO < FS_ITAB >.
    SELECT * FROM BKPF
    INTO TABLE < FS_ITAB >
    WHERE BUKRS IN P_BUKRS AND
    BLART IN ('01','07','08') AND
    BLDAT IN P_BLDAT AND
    TCODE = 'MIRO'.

    CREATE DATA REF_WA LIKE LINE OF < FS_ITAB >.
    ASSIGN REF_WA->* TO < FS_WA >.

    Cuando yo declaro el < FS_ITAB > de la siguiente manera: FIELD-SYMBOLS: < FS_ITAB > TYPE ANY TABLE… no hay ningún problema, pero el tema es que yo quiero que este < FS_ITAB > tenga la misma estructura que este temporal:
    DATA: BEGIN OF TI_BKPF OCCURS 0,
    BUKRS LIKE BKPF-BUKRS, " Soceidad
    BELNR LIKE BKPF-BELNR, " Número de un documento contable
    GJAHR LIKE BKPF-GJAHR, " Ejercicio
    BLDAT LIKE BKPF-BLDAT, " Fecha de documento en documento
    BUDAT LIKE BKPF-BUDAT, " Fecha de contabilización en el documento
    BLART LIKE BKPF-BLART, " Clase de documento
    AUGBL LIKE BSEG-AUGBL, " Compensacion
    XBLNR LIKE BKPF-XBLNR, " Número de documento de referencia
    AWKEY LIKE BKPF-AWKEY, " Clave de referencia
    CPUDT LIKE BKPF-CPUDT, " Día del registro
    END OF TI_BKPF.

    Necesito que tenga la misma estructura ya que luego hare otro select a la BSEG donde me permita actualizar el campo AUGBL. Lo estoy haciendo asi:
    LOOP AT < FS_ITAB > INTO < FS_WA >.
    SELECT SINGLE AUGBL
    INTO < FS_WA >-AUGBL
    FROM BSEG
    WHERE BUKRS = < FS_WA >-BUKRS AND
    BELNR = < FS_WA >-BELNR AND
    GJAHR = < FS_WA >-GJAHR.
    Pero me sale que el campo AUGBL no existe…como podría hacerlo por favor. Muchas gracias
    Editado por última vez por CSALGADO; 20/09/2010, 21:19:40.

  • #2
    Hola.

    Te falla en el apartado INTO, hay que indicar el nombre de la variable (o la estructura-campo) donde se va a almacenar el dato que recuperes de la seleccion.
    Probablemente, te ocurra lo mismo con los campos BUKRS, BELNR y GJAHR.
    "SELECT SINGLE AUGBL
    INTO -AUGBL
    FROM BSEG
    WHERE BUKRS = -BUKRS AND
    BELNR = -BELNR AND
    GJAHR = -GJAHR. "

    Edito: Te marco en rojo donde se encuentra el error
    SAP solo es el medio a través del cual se expresa nuestra imaginación.

    Comentario


    • #3
      no encuentro salida

      Originalmente publicado por Loco-1 Ver Mensaje
      Hola.

      Te falla en el apartado INTO, hay que indicar el nombre de la variable (o la estructura-campo) donde se va a almacenar el dato que recuperes de la seleccion.
      Probablemente, te ocurra lo mismo con los campos BUKRS, BELNR y GJAHR.
      "SELECT SINGLE AUGBL
      INTO -AUGBL
      FROM BSEG
      WHERE BUKRS = -BUKRS AND
      BELNR = -BELNR AND
      GJAHR = -GJAHR. "

      Edito: Te marco en rojo donde se encuentra el error
      Si, gracias lo que pasa es que eso paso porque copie mal, pero el problema aun sigue, lo que quiero hacer es que mi < FS_ITAB > tenga la misma estructura que mi tabla interna:
      DATA: BEGIN OF TI_BKPF OCCURS 0,
      BUKRS LIKE BKPF-BUKRS, " Soceidad
      BELNR LIKE BKPF-BELNR, " Número de un documento contable
      GJAHR LIKE BKPF-GJAHR, " Ejercicio
      BLDAT LIKE BKPF-BLDAT, " Fecha de documento en documento
      BUDAT LIKE BKPF-BUDAT, " Fecha de contabilización en el documento
      BLART LIKE BKPF-BLART, " Clase de documento
      AUGBL LIKE BSEG-AUGBL, " Compensacion
      XBLNR LIKE BKPF-XBLNR, " Número de documento de referencia
      AWKEY LIKE BKPF-AWKEY, " Clave de referencia
      CPUDT LIKE BKPF-CPUDT, " Día del registro del documento contable FACTURA
      END OF TI_BKPF.

      para luego hacerle un:

      LOOP AT < FS_ITAB >
      SELECT SINGLE AUGBL
      INTO < FS_WA >-AUGBL
      FROM BSEG
      WHERE BUKRS = < FS_WA >-BUKRS AND
      BELNR = < FS_WA >-BELNR AND
      GJAHR = < FS_WA >-GJAHR.

      Gracias!!!!!!!!!!!
      Editado por última vez por CSALGADO; 20/09/2010, 21:17:03.

      Comentario


      • #4
        Hola.

        Para poder solucionar el problema, deberias indicarle a los dos field-symbols la estructura de tu tabla interna.

        <field-symbol> type table of ....
        SAP solo es el medio a través del cual se expresa nuestra imaginación.

        Comentario


        • #5
          Hola,

          Nunca he trabajado con field symbols como tabla, siempre los he utilizado como estructuras. ¿Realmente necesitas que el field symbol sea una tabla?. Creo que tu rendimiento puede mejorar simplemente usando el field-symbol como estructura y haciendo el loop así:

          Código:
          loop at itab assigning < field-symbol >
          Aún así la definición de la tabla sería como te indica Loco-1:
          Código:
          field-symbols: < fs_itab > like standar table of estructura_itab,
               < fs_estructura > like estructura_itab
          Saludos
          "Soy el señor Lobo, arreglo problemas"
          http://sapymas.blogspot.com/

          Comentario


          • #6
            Muchas Gracias!!!

            Muchas Gracias!!!

            Originalmente publicado por bisonye Ver Mensaje
            Hola,

            Nunca he trabajado con field symbols como tabla, siempre los he utilizado como estructuras. ¿Realmente necesitas que el field symbol sea una tabla?. Creo que tu rendimiento puede mejorar simplemente usando el field-symbol como estructura y haciendo el loop así:

            Código:
            loop at itab assigning < field-symbol >
            Aún así la definición de la tabla sería como te indica Loco-1:
            Código:
            field-symbols: < fs_itab > like standar table of estructura_itab,
                 < fs_estructura > like estructura_itab
            Saludos

            Comentario

            Trabajando...
            X