✒️ABAP Los Field Symbols
ABAP Los Field Symbols
Los Field Symbols
¿Que es un 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 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 usan, el sistema trabaja con el contenido de los datos asignados y no con el contenido del Field Symbol.
Los Fiedl Symbols no reservan espacio físicamente para un campo sino que apuntan a su contenido.
Un Field Symbol puede apuntar a cualquier objeto de datos.
Los Field Symbols ns 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.
Si puede forzar a un Field Symbol para que tome diferentes atributos del campo asignado a él.
La mayoría de los errores que cometemos en la utilización de Field Symbols los detectaremos recién en tiempo de ejecución. Esto hace que sean mas difíciles de detectar.
Por lo tanto, solo debemos usar Field Symbols si no podemos llegar al mismo resultado con las sentencias ABAP convencionales.
La declaración de un Field Symbol
Para poder usar un Field Symbol en un programa ABAP debemos realizar 2 simples pasos:
Declarar el Field Symbol
Asignar al Field Symbol el objeto de datos.
Analicemos a continuación cada uno de estos pasos:
Para declarar un Field Symbol vamos a usar la siguiente sentencia:
Si no especificamos un tipo a un Field Symbol, este puede contener cualquier dato, es decir el Field Symbol asume los atributos técnicos del campo.
Si se especifica un tipo, el sistema controla la compatibilidad del Field Symbol y el campo al que se está asociando en el momento de la ejecución de la sentencia de asignación.
Ejemplo:
Ejemplo donde se especifica el tipo:
Los tipos de datos genéricos posibles para un Field Symbol son los siguientes:
La asignación de datos a un Field Symbol
En un programa ABAP se pueden asignar objetos de datos a Field Symbol en cualquier momento, como también asignar una serie de diferentes objetos de datos a un Field Symbol.
Para asignar datos a un Field Symbol usamos la sentencia ASSIGN.
La asignación que usamos es estática ya que sabemos el nombre del campo que deseamos asignar al Field Symbol.
La sintaxis de la sentencia ASSIGN es la siguiente:
Siendo F el campo asignado al Field Symbol y FS el nombre del Dield Symbol.
Ejemplo:
Ahora vemos un ejemplo de la declaración y la asignación de un Field Symbol en donde sí se especifica el tipo:
Después de asignar un objeto de datos a un Field Symbol, si realizamos cambios en el valor del Field Symbol entonces también se actualiza el valor del objeto de datos correspondiente.
La utilización de Field Symbols cuando trabajamos con estructuras
También podemos declarar un Field Symbol para recorrer un atabla interna, en lugar de declarar una estructura o área de trabajo y usarla para recorrer la tabla interna. A su vez el mismo Field SYmbol lo podemos usar para actualizar la tabla interna.
Ejemplo:
Debemos tener en cuenta los siguientes puntos:
Si modificamos cualquier campo de la estructura en el Field Symbol, el campo corresponde 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 Symbol hace referencia directamente a la fila de la tabla interna. Por lo tanto el procesamiento de la tabla interna con el Field Symbol es mas rápido que el procesamiento de la tabla interna con el área de trabajo o estructura.
La utilización de Field Symbols para realizar SELECT dinámicos.
Podemos usar Field Symbols para realizar SELECT dinámicos a tablas de BD de SAP, es decir podríamos crear un programa ABAP que cuente que un parámetro en la pantalla de selección en donde se introduzca el nombre de la tabla BD 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 BD a un archivo o que se realice el upload de los registros de la tabla BD a memoria para ser procesados.
El código ABAP corresponde a esta lógica que acabamos de mencionar sería así:
Ahora se declaran 2 Field Symbols, FS_TABLA para la tabla interna dinámica y FS_CAB para la estructura o cabecera dinámica.
A continuación creamos el tipo de dato y asignamos los Field Symbols.
Dentro del evento STAR-OF-SELECTION, si seleccionamos el parámetro download entonces realizamos el SELECT dinámico a la tabla BD introducida por parámetro y luego ejecutamos el método GUI_DONWLOAD de la clase CL_GUI_FRONTEND_SERVICES para descargar los registros de la tabla BD al archivo de salida.
Y si seleccionamos el parámetro upload entonces ejecutamos el método GUI_UPLOAD de la clase CL_GUI_FRONTEND_SERVICES para subir a memoria los registros de la tabla BD.
Si ejecutamos el programa y completamos la pantalla con la tabla BD MARA
 
 
 
Sobre el autor
Publicación académica de Lisimaco Prieto Herrera, en su ámbito de estudios para la Carrera Consultor ABAP.
Lisimaco Prieto Herrera
Profesión: Ingeniero de Sistemas - Colombia - Legajo: DV67X
✒️Autor de: 96 Publicaciones Académicas
🎓Egresado de los módulos:
Presentación:
Ingeniero de sistemas con amplia experiencia en el desarrollo de software para el sistema sap r/3 en lenguaje de programación abap.
Certificación Académica de Lisimaco Prieto