✒️ABAP Los Field Symbols
ABAP Los Field Symbols
1. ¿Que son los Field Symbols? Es un tipo de sentencia ABAP que nos permite trabajar con los datos de los programas en forma dinámica en tiempo de ejecución.
Al contrario de lo que sucede con el acceso estático de los datos, donde necesitamos especificar el nombre de un objeto para poder hacer algo con él, los field symbol nos permiten acceder y pasar datos cuyo nombres y atributos no conocemos hasta el momento de la ejecución.
Se puede considerar a los Field Symbol como nombre simbólico de los datos, ya que cuando se utilizan, el sistema trabajo con el contenido de los datos asignados y no con el contenido del field symbol.
Los Field Symbol nos proveen de gran flexibilidad debido a que:
Si queremos proceder parte de los campos, nos permite especificar el OFSET y el desplazamiento de un campo en forma dinámica,
Se puede forzar a un Field Symbol para que tome diferente atributos técnicos que los del campo asignado a él.
Nota: la mayoría de los errores que cometamos en la utilización de Field Symbol los detectaremos recién en tiempo de ejecución. Esto hace que sea más bastante más difícil de detectar.
Por lo tanto, solo debemos utilizar Field Symbol si no podemos llegar al mismo resultado con las sentencias ABAP convencionales.
2. Declaración de Field Symbol
Para declarar un Field Symbol vamos a utilizar la siguiente sintaxis:
FIELD-SYMBOL <FS> [<type>STRUCTURE <s> DEFAULT <wa>].
Nota: Si no especificamos un tipo a un Field Symbol, este puede contener cualquier dato. Cuando asignamos un dato al Fiel Symbol, este hereda los atributos técnicos del dato.
Los tipos de datos genéricos posible para un Field Symbol son:
Tipos de especificación Objetos de datos
TYPE ANY o sin especificación Todos los tipos de objetos de datos son aceptados. El field simbol adopta los atributos de dato.
TYPE C, N, P o X Solo los tipos de datos C, N, P, X son aceptados.
TYPE TABLE El sistema chequea si la tabla es estándar.
TYPE ANY TABLE El sistema chequea si el campo es una tabla interna. El field symbol hereda todos los atributos de la tabla.
TYPE INDEX TABLE El sistema chequea si el campo es una tabla indexada. El field symbol hereda todo los atributos de la tabla.
TYPE STANTDARD TABLE El sistema chequea si es una tabla estandar. El Field Symbol hereda todos el atributo de las tablas.
TYPE SORTED TABLE EL sistema chequea si el campo es una tabla sorted. EL fiel Simbol hereda todos los atributos de la tabla.
TYPE HASHED TABLE El sistema chequea si el campo es una tabla hashed. El field Symbol hereda todos los atributos de la tabla.
Existen distintos tipos de tablas internas por ejemplo ANY TABLE, es posible usar ANY TABLE para definir el tipo de un parámetro de tabla genérico, las operaciones permitidas para tablas ANY TABLE son todas las operaciones permitidas para STANDART, SORTED y HASHED TABLE. Hay que tener en cuenta que no es posible usar índices para hacer las tablas definidas con ese tipo.
Otro tipo de tabla interna es la INDEX TABLE los tipos STANDARD y SORTED pertenecen al tipo de tablas genérico indexadas, una tabla indexada son la cual podemos acceder mediante un índice. Es posible usar el tipo INDEX TABLA para especificar el tipo de un parámetro genérico en un form en una funsion. El tipo HASHED no pertenece al tipo global index por lo que no se puede pasar un parámetro definido INDEX TABLA.
Otro tipo de tablas internas son las STANDARD TABLE el acceso a una Standard Table es mediante una búsqueda lineal, esto significa que el tiempo requerido para la búsqueda está relacionado linealmente al número de registro de la TABLA
Otro tipo de Tabla Interna es la SORTED TABLE al definir una tabla como Sorted Table siempre se guarda con el orden correcto el acceso a una Sorted Table es mediante una búsqueda binaria o binarizar. Si la clave no es única el sistema obtiene la entrada con el índice más bajo, el tiempo requerido para el acceso, está logarítmicamente relacionado al número de registros de la tabla. También es posible acceder a Sorted Table mediante operaciones de índice.
Por último tenemos la HASHED TABLE podemos entender una Hashed Table como un grupo a cuyos elementos se pueden acceder usando su clave única a diferencia de los tipos de standar y sorted, no podemos hacer estas tablas mediante índices. Todos los registros deben tener una clave única, y el tiempo de acceso constante sin tener en cuenta el número de registros de la tabla. Solo es posible acceder a esta tabla tipo Hashed usando las operaciones genéricas de clave u otras operaciones genéricas tales como Sort o Loop.
Veamos un ejemplo
REPORT zprueba_abap_6_5.
DATA: v_valor(3) VALUE 'ABC'.
FIELD-SYMBOLS <f> TYPE any.
ASSIGN v_valor TO <f>.
WRITE: / 'Contenido de v_valor:', <f>.
<f> = 'XYZ'.
WRITE: / 'Variable v_valor:', v_valor.
3. Asignacion de datos a un Field Symbols: Para asignar datos a un Field Symbol utilizamos la sentencia ASSIGN.
La asignacion que utilizamos es estatica, ya que sabemos el nombre del campo que queremos asignar al FIeld Symbol.
La sintaxis utilizada será la siguiente: ASSIGN <f> to <FS>.
Un ejemplo
DATA: BEGIN OF st_line,
col1(1) TYPE c,
col2 VALUE 'X',
END OF st_line.
FIELD-SYMBOLS <fs> LIKE st_line.
ASSIGN st_line TO <fs>.
MOVE <fs>-col2 TO <fs>-col1.
 
 
 
Sobre el autor
Publicación académica de Edward Henry Rosario Piezal, en su ámbito de estudios para la Carrera Consultor ABAP.
Edward Henry Rosario Piezal
Profesión: Ingeniero en Sistema - Republica Dominicana - Legajo: FM99R
✒️Autor de: 68 Publicaciones Académicas
🎓Egresado de los módulos:
Disponibilidad Laboral: FullTime
Certificación Académica de Edward Rosario