Ver la Versión Completa : Que son y para que se usan los field-simbos
Leonel Espitia Torres
25/10/10, 15:53:56
Quisiera saber que son los field-simbols y para que se utilizan
Crismol
25/10/10, 19:40:06
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 ^.^
mitosap
26/10/10, 14:36:16
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
http://atejada.blogspot.com/2008/01/workarea-vs-field-symbols.html
Saludos.
www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web