Que son y para que se usan los field-simbos

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • Leonel Espitia Torres
    Member
    • ago
    • 78

    #1

    Que son y para que se usan los field-simbos

    Quisiera saber que son los field-simbols y para que se utilizan
  • Crismol
    Junior Member
    • jul
    • 19

    #2
    Hola, bueno yo los Field-symbols los asocio a punteros, es decir, para mi son un puntero que apunta a una tabla interna y te sirven para acceder a ella, leer e insertar registros.

    Espero t sirva ^.^

    Comentario

    • mitosap
      Member
      • sep
      • 57

      #3
      Hola Leonel.

      Complementando a Crismol, con un workarea (WA) tienes que hacer un modify a la tabla si quieres cambiar datos, con un field-symbols (FS) es directo porque es un "puntero" a ese registro.
      Fijate en este ejm. que ubique en este foro, el cual explica lo anterior.

      EJEMPLO 1.

      REPORT ZRFI_PRUEBA_VARIAS_JOA.

      DATA: BEGIN OF LINE,
      COL1 TYPE I,
      COL2 TYPE I,
      END OF LINE.

      DATA ITAB LIKE SORTED TABLE OF LINE WITH UNIQUE KEY COL1.

      FIELD-SYMBOLS <FS> LIKE LINE OF ITAB.
      * Elevamos al cuadrado
      DO 4 TIMES.
      LINE-COL1 = SY-INDEX.
      LINE-COL2 = SY-INDEX ** 2.
      APPEND LINE TO ITAB.
      ENDDO.

      WRITE: 'Tabla Inicial'.
      LOOP AT ITAB ASSIGNING <FS>.
      WRITE: / <FS>-COL1, <FS>-COL2.
      ENDLOOP.

      * Ahora usaremos los FS (punteros de registro) para asignar a 2 el valor de
      * 100
      READ TABLE ITAB WITH TABLE KEY COL1 = 2 ASSIGNING <FS>.
      <FS>-COL2 = 100.

      * Ahora usaremos los FS (punteros de registro) para eliminar la fila 3
      READ TABLE ITAB WITH TABLE KEY COL1 = 3 ASSIGNING <FS>.
      DELETE ITAB INDEX 3.

      * Aqui volvemos a escribir la tabla ya modificada.
      SKIP.
      WRITE: 'Tabla Alterada'.
      LOOP AT ITAB ASSIGNING <FS>.
      WRITE: / <FS>-COL1, <FS>-COL2.
      ENDLOOP.



      Otra ventaja de los field-symbols es el performance, para ello hay otro ejm. posteado en algun foro que se explica por si solo. Se compara la velocidad usando WA y FS.

      EJEMPLO 2.

      REPORT ZRFI_PRUEBA_VARIAS_JOA.

      TYPES: BEGIN OF ty_data,
      value TYPE string,
      END OF ty_data.

      DATA: t_data TYPE STANDARD TABLE OF ty_data,
      w_data TYPE ty_data.

      FIELD-SYMBOLS: <fs_data> LIKE LINE OF t_data.

      DATA: rt_str TYPE i,
      rt_end TYPE i,
      run_time1 TYPE p DECIMALS 2,
      run_time2 TYPE p DECIMALS 2.

      DO 500000 TIMES.
      w_data-value = sy-index.
      APPEND w_data TO t_data.
      ENDDO.

      GET RUN TIME FIELD rt_str.
      LOOP AT t_data INTO w_data.

      ENDLOOP.

      GET RUN TIME FIELD rt_end.
      run_time1 = ( rt_end - rt_str ) / 1000000 .

      WRITE: 'Runtime WORKAREA', run_time1.

      *------------------------------------------------

      GET RUN TIME FIELD rt_str.
      LOOP AT t_data ASSIGNING <fs_data>.

      ENDLOOP.
      GET RUN TIME FIELD rt_end.
      run_time2 = ( rt_end - rt_str ) / 1000000 .

      WRITE: 'Runtime FIELD-SYMBOL', run_time2.

      Este último ejemplo esta en este link



      Saludos.

      Comentario

      Trabajando...