#1
|
|||
|
|||
Que son y para que se usan los field-simbos
Quisiera saber que son los field-simbols y para que se utilizan
|
#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 ^.^ |
#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. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|