✒️ABAP Los Field Symbols
ABAP Los Field Symbols
FIELD SYMBOL
Es un tipo de sentencia ABAP que nos permite trabajar con los datos delos programas de forma dinámica en tiempo de ejecución. Comúnmente es necesario especificar el nombre de un objeto para poder procesarlo, sin embargo con los field symbols.
Pueden ser considerados como nombres simbólicos de los datos ya que cuando se trabaja con ellos el sistema trabaja con los datos asignados.
Proveen una gran flexibilidad si lo que se quiere procesar partes de los campos, permiten especificar el offset y el desplazamiento de un campo en forma dinámica. También es posible forzar un Field Symbol para que tome diferentes atributos técnicos.
Importante: Es difícil detectar los errores en los Field Symbols ya que estos aparecen en tiempo de ejecución, por ello es recomendable utilizarlos solo en caso de que no podamos obtener los resultados deseados con las sentencias ABAP más comunes.
Se declaran de la siguiente forma:
FIELD-SYMBOLS <FS>[<type>|STRUCTURE<s>DEFAULT>WA>]
En caso de no especificar un tipo a un Field Symbol este puede contener cualquier dato.
Tipos de datos genéricos para un Field Symbol:
TYPE ANY o sin especificación |
Todos los tipos de objetos de datos son aceptados. El field symbol adopta los atributos del dato. |
TYPE C, N, P o X |
Solo los tipos de datos C, N, P y X son aceptados. El field symbol adpta la longitud y decimales del dato. |
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 todos los atributos de la tabla. |
TYPE STANDARD TABLE |
El sistema chequea si el campo es una tabla estándar. El field symbol hereda todos los atributos de la tabla. |
TYPE SORTED TABLE |
El sistema chequea si el campo es una tabla sorted. El field symbol 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 una de estas para definir el tipo de un parámetro de tablas genérico, las operaciones permitidas para tablas de tipo any table son todas las operaciones permitidas para stándard, sorted y hashed tables. Hay que tener en cuenta que no es posible usar índices para acceder a las tablas definidas con este tipo.
Otro tipio de tabla interna es la INDEX TABLE los tipos estándar y sorted pertenecen al tipo de tabla genérico INDEX TABLE, una tabla indexada es aquella a la que podemos acceder mediante un índice. Es posible utilizar un index tabla para especificar el tipo de UN parámetro genérico en una form o en una FUNCTION. El tipo hashed no pertenece al tipo global INDEX por lo que no puede ser pasado a un parámetro definido INDEX TABLE.
Otro tipo de tablas internas son las estándar table,el acceso a una de estas tablas es mediante una búsqueda lineal lo que quiere decir que el tiempo requerido para la búsqueda está relacionado linealmente a los registros de la tabla.
Otro tipo de tabla interna es la sorted table que al definir una tabla de estas siempre se guarda con el orden correcto. El acceso se hace mediante una búsqueda binaria o BINARY SEARCH. Si la búsqueda no es la única entrada el sistema obtiene la entrada con el índice más bajo. El tiempo para el acceso está relacionado logarítmicamente al número de registros de la tabla.
Las hashed table se pueden entender como un grupo a cuyos elementos se pueden acceder usando su clave única. No se accede mediante índices, todos los registros deben tener una clave única y no toma en cuenta el número de registros de la tabla. Solo es posible acceder a ella usando las operaciones genéricas de clave u otras operaciones genéricas tales como sort o loop.
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.
ASIGNACION DE DATOS A UN FIELD SYMBOL
Se utiliza la sentencia ASSIGN y se hace de la siguiente manera:
ASSIGN <f> TO <FS>.
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.
 
 
 
Agradecimiento:
Ha agradecido este aporte: Cristina Fraile Del Rio
Sobre el autor
Publicación académica de Jose Alberto Rivera Gonzalez, en su ámbito de estudios para la Carrera Consultor ABAP.
Jose Alberto Rivera Gonzalez
Profesión: Técnico Informático - Mexico - Legajo: LG32F
✒️Autor de: 102 Publicaciones Académicas
🎓Egresado de los módulos:
Certificación Académica de Jose Rivera