Documentos de Académico
Documentos de Profesional
Documentos de Cultura
SAP Field Symbols en ABAP
SAP Field Symbols en ABAP
FIELD SYMBOLS
Introduccin:
ABAP permite acceder a los objetos (data object) que hayan sido declarados bien de forma esttica (por el nombre que les hayamos dado), o bien de forma indirecta, a travs de un field symbol. El field symbol es un nombre simblico que nos permite operar con los distintos campos (fields). En realidad se trata de un puntero cuyo contenido es la direccin de un objeto (data object), es decir, el field symbol apunta a un objeto (cualquier tipo de objeto). El sistema no reserva espacio en memoria para un field symbol. Para el sistema no hay diferencia entre operar con el objeto o con el field symbol, sin embargo, resulta ms eficiente operar con punteros que con los objetos, ya que los punteros ocupan mucho menos espacio en memoria (a efectos prcticos podemos decir que no ocupan espacio en memoria, aunque en realidad ocupan el espacio justo para guardar una direccin de memoria, es decir, cuatro bytes). Para aquellos que conocen el lenguaje C, un field symbol es lo mismo que un puntero de-referenciado (es decir, un puntero al que se le ha aplicado el operador * para acceder a su contenido). Cuando accedemos a un field symbol en realidad accedemos al contenido de la variable u objeto al que apunta.
Caractersticas:
Todas las instrucciones con field symbols se ejecutan en los campos asignados. As, una sentencia MOVE (copiar) de un field symbol a otro se ejecuta haciendo que el segundo field symbol apunte al mismo objeto Alejandro Torrijos Pgina 1
Declaracin:
Para declarar un field-symbol usamos la instruccin FIELD-SYMBOLS y le damos un nombre que debe estar entre dos signos <> (angle brackets). Si no aadimos nada ms el field-symbol puede ser asignado a cualquier tipo de objeto. As el field symbol heredar los atributos tcnicos del objeto al que apunte. Para declarar un field symbol genrico, que puede apuntar a cualquier tipo de objeto: FIELD-SYMBOLS <f> TYPE ANY En este caso el field symbol NO puede incluirse en ninguna instruccin propia de una tabla, ya que dara un error sintctico, por ejemplo no podramos hacer esto: READ TABLE <f>. Para declarar un field symbol genrico que apunte a cualquer tipo de tabla: FIELD-SIMBOLS <f> TYPE ANY TABLE. En este caso S podramos realizar instrucciones propias de una tabla, pero NO de una tabla especfica, por ejemplo NO podramos hacer esto: Alejandro Torrijos Pgina 2
Asignacin:
Para que el field symbol apunte a una variable primero declaramos la variable y luego asignamos al field symbol la direccin de esa variable: DATA x TYPE i. ASSIGN x TO <f>. Ahora podemos asignar un valor a la variable x mediante el field symbol: <f> = 5. Para leer el contenido de la variable x podemos hacer dos cosas: WRITE: / x. WRITE: / <f>.
Alejandro Torrijos
Pgina 3
Acceso dinmico:
El field symbol permite acceder dinmicamente (en tiempo de ejecucin) a los distintos objetos que existen en SAP. De esta forma podemos acceder a objetos cuyo nombre no se conoce hasta el momento en que se ejecuta el programa: DATA nombre TYPE string VALUE 'hola'. DATA a(10) TYPE c VALUE 'nombre'. FIELD-SYMBOLS <f> TYPE c. ASSIGN (a) TO <f>. En este caso el field symbol apunta a la variable nombre, ya que este es el contenido de la variable a.
Comprobacin de asignacin:
Para comprobar si un field symbol ha sido asignado correctamente podemos usar la expresin lgica <f> IS ASSIGNED. Si el field symbol apunta hacia algn objeto el resultado de esta espresin es verdadero, por ejempo: IF <f> IS ASSIGNED, WRITE 'El field symbol se ha asignado correctamente', ENDIF.
Asignacin dinmica:
Podemos asignar los componentes de una estructura a un field symbol de forma dinmica: FIELD-SYMBOLS <f> TYPE c. ASSIGN COMPONENT numero OF STRUCTURE domicilio TO <f>. WRITE. / <f>.
Alejandro Torrijos
Pgina 6
Supongamos que declaramos una variable y un field symbol: DATA a(20) TYPE c. FIELD-SYMBOLS <f>.
Alejandro Torrijos
Pgina 7
Alejandro Torrijos
Pgina 8