✒️ABAP Los Field Symbols
ABAP Los Field Symbols
FIELD SYMBOLS
QUE SON LOS FIELD SYMBOLS.
NOTA: FIELD SYMBOL: 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 los que sucede con el acceso estatico 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 cuyos nombres y atributos no conocemos hasta el momento de la ejecución.
Se puede considerar a los FIELD SYMBOL como nombres simbolicos de los datos, ya que cuando se utilizan, el sistema trabaja 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 procesar partes de campos, nos permite especificar el OFFSET y el desplazamiento de un campo en forma dinámica.
- Se puede forzar a un FIELD SYMBOL para que tome diferentes 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 SYMBOLS, los detectamos recién en tiempo de ejecución. Esto hace que sean bastante mas difíciles de detectar.
Por lo tanto, solo debemos utilizar FIELD SYMBOL si no podemos llegar al mismo resultado con las sentencias ABAP convencionales.
DECLARACIÓN DE UN FIELD SYMBOL:
Para declarar un FIELD SYMBOL utilizamos la sintaxis:
FIELD-SYMBOLS <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 a un FIELD SYMBOL, este hereda los atributos técnicos del dato.
Los tipos de datos genéricos posibles para un FIELD SYMBOL son:
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 adopta 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.
AUDIO: ¿??????
Tipos de tablas internas:
ANY TABLE: se usa para definir el tipo de un parámetro de tabla genérico, las operaciones permitidas para tablas de tipo ANY TABLE son todas las operaciones permitidas para estandar, sorted y hashed table, no es posible la utilización de índices para acceder a las tablas definidas con este tipo.
INDEX TABLE: los tipos estandar y sorted pertenecen a este tipo de tablas. Una tabla indexada es aquella a la que 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 o en una FUNCTION, el tipo HASHED no pertenece al tipo global INDEX.
ESTANDARD TABLE: el acceso a este tipo de tabla es mediante una búsqueda lineal, esto significa que el tiempo requerido para la búsqueda está relacionado linealmente al numero de registro de la tabla.
SORTED TABLE: al definir una tabla de este tipo, esta tabla siempre se guarda con el orden correcto. El acceso es mediante una BYNARY SEARCH, si la clave no es única el sistema obtiene una entrada con el índice mas bajo. El tiempo requerido para el acceso está logaritmicamente relacionado al número de registros de la tabla. También es posible acceder a este tipo de tablas mediante operaciones de índices.
HASHED TABLE: es un grupo a cuyos elementos se pueden acceder usando su clave única, a diferencia de los tipos estandard y sorted NO podemos acceder a esas tablas mediante índices. Todos los registros deben tener una clave única, el tiempo de acceso es constante, sin tener en cuenta el número de registros de la tabla. Solo es posible acceder a este tipo de tablas usando las operaciones genéricas de clave u otras operaciones genéricas tales como SORT o LOOP.
Veamos un ejemplo de la utilización de un FIELD SYMBOL:
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
Para asignar datos a un FIELD SYMBOL utilizamos la sentencia ASSING.
La asignación que utilizamos es estática, ya que sabemos el nombre del campo que queremos asignar al FIELD SYMBOL.
La sintaxis es:
ASSING <F> TO <FS>.
Vemos un ejemplo:
REPORT zprueba_abap_6_7.
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 Alexander Castellanos, en su ámbito de estudios para la Carrera Consultor ABAP.
Alexander Castellanos
Profesión: Ingeniero de Sistemas - Colombia - Legajo: JS42A
✒️Autor de: 67 Publicaciones Académicas
🎓Egresado del módulo:
Certificación Académica de Alexander Castellanos