✒️ABAP Los Field Symbols
ABAP Los Field Symbols
FIELD SIMBOL: 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 Symbols 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 Symbols como nombres simbólicos 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 Symbols.
Los Field Symbols no reservan espacio físicamente para un campo, sino que “apuntan” a su contenido.
Un Field Symbols puede apuntar a cualquier objeto de datos.
Los Field Symbols nos proveen de gran flexibilidad debido a que:
- Si queremos procesar partes de campos, nos permiten especificar el offset y el desplazamiento de un campo en forma dinámica.
- Se puede forzar a un Field Symbols para que tome diferentes atributos técnicos del campo asignado a él.
La mayoría de los errores que cometes en la utilización de los Field Symbols los detectaremos recién en tiempo de ejecución. Esto hace que sean bastante más difíciles de detectar. Por lo tanto, solo debemos utilizar Field Symbols si no podemos llegar al mismo resultado con las sentencias ABAP convencionales.
LA DECLARACIÓN DE UN FIELD SYMBOL: para poder utilizar un Field Symbols en un programa ABAP debemos realizar dos simples pasos:
- Declarar el Field Symbols, sintaxis:
FIELD-SYMBOLS <FS>[<type>|STRUCTURE<s>DEFAULT<wa>].
- Asignar al Field Symbols el objeto de datos.
Nota: Si no especificamos un tipo a un Field Symbols, este puede contener cualquier dato, es decir el Field Symbols asume todos los atributos técnicos del campo.
Si se especifica un tipo, el sistema controla la compatibilidad del Field Symbols y el campo al que se está asociando en el momento de la ejecución de la sentencia de asignación.
LA ASIGNACIÓN DE DATOS A UN FIELD SYMBOLS: en un programa ABAP se pueden asignar objetos de datos a Field Symbols en cualquier momento, como también asignar una serie de diferentes objetos de datos a un Field Symbols. Para asignar datos a un Field Symbols utilizamos la sentencia ASSIGN. La asignación que utilizamos es estática ya que sabemos el nombre del campo que deseamos asignar al Field Symbols, la sintaxis de la sentencia ASSIGN es: ASSIGN <F> TO <FS> ---siendo F el campo asignado al Field Symbols y FS el nombre del Field Symbols.
Nota: después de asignar un objeto de datos a un Field Symbols, si realizamos cambios en el valor del Field Symbols entonces también se actualiza el valor del objeto de datos correspondiente.
LA UTILIZACIÓN DEL FIELD SYMBOLS CUANDO TRABAJAMOS CON ESTRUCTURAS: podemos leer un registro de una tabla interna utilizando un Field Symbols en lugar de utilizar una estructura o área de trabajo. También podemos declarar un Field Symbols para recorrer una tabla interna en lugar de declarar una estructura o área de trabajo y utilizarla para recorrer la tabla interna. A su vez el mismo Field Symbols lo podemos utilizar para actualizar la tabla interna.
Debemos tener en cuenta los siguientes puntos:
- Si modificamos cualquier campo de la estructura en el Field Symbols, el campo correspondiente en la tabla interna se actualizará.
- No necesitamos escribir la sentencia MODIFY que habríamos escrito si hubiéramos usado el área de trabajo o estructura. Esto se debe a que el área de trabajo almacena una copia de la fila de la tabla interna, mientras que el Field Symbols hace referencia directamente a la fila de la tabla interna. Por lo tanto, el procesamiento de la tabla interna con el Field Symbols es más rápido que el procesamiento de la tabla interna con el área de trabajo o estructura.
LA UTILIZACIÓN DEL FIELD SYMBOLS PARA REALIZAR SELECT DINÁMICOS: Los Field Symbols se puede utilizar para realizar SELECT dinámicos a tablas de la base de datos de SAP, es decir podríamos crear un programa ABABP que cuente que un parámetro en la pantalla de selección en donde se introduzca el nombre de la tabla base de datos que se desea seleccionar y que luego dentro del programa, dependiendo de lo que desee, se realice el download de los registros de la tabla base de datos a un archivo o que se realice el upload de los registros de la tabla base de datos a memoria para ser procesados.
El código ABAP sería así: primero en la pantalla de selección declaramos el parámetro P_TABLA para introducir el nombre de la tabla base de datos, el parámetro P_FNAME para introducir el directorio y nombre del archivo de salida, el parámetro P_DOWN para seleccionar en caso que deseemos realizar la descarga de los registros de la tabla base de datos al archivo de salida y el parámetro P_UP para subir a memoria los registros de la tabla base de datos a la cual le realizamos el SELECT.
Luego declaramos dos Field Symbols, FS_TABLA para la tabla interna dinámica y FS_CAB para la estructura o cabecera dinámica, se procede a crear el tipo de dato y asignamos los Field Symbols. Dentro del evento START-OF-SELECTION, si seleccionamos el parámetro download entonces realizamos el SELECT dinámico a la tabla base de datos introducida por parámetro y luego ejecutamos el método GUI_DOWNLOAD de la clase CL_GUI_FRONTEND_SERVICES para descargar los registros de la tabla base de datos al archivo de salida. Y si seleccionamos el parámetro de upload entonces ejecutamos el método GUI_UPLOAD de la clase CL_GUI_FRONTEND_SERVICES paras subir a memoria los registros de la tabla base de datos.
 
 
 
Sobre el autor
Publicación académica de Jean Carlos Lopez, en su ámbito de estudios para la Carrera Consultor ABAP.
Jean Carlos Lopez
Profesión: Ingeniero en Infomática - Venezuela - Legajo: AG33O
✒️Autor de: 74 Publicaciones Académicas
🎓Cursando Actualmente: Consultor ABAP Nivel Inicial
Disponibilidad Laboral: FullTime
Certificación Académica de Jean Lopez