You are on page 1of 6

Manejo de datos en ABAP

DATA OBJECTS
Cuando ejecutamos una aplicación de ABAP el servidor solicita al
sistema operativo que asigne un espacio en memoria para almacenar
tanto el código como los datos a procesar.

Una vez terminada la ejecución del programa este espacio de


memoria queda libre para que el sistema operativo lo asigne a otra
aplicación.

La aplicación solo puede buscar datos en este espacio de


memoria asignado, por lo que si necesita más datos en tiempo de
ejecución (por ejemplo datos suministrados por el usuario) el
sistema debe tener un mecanismo para transportar estos datos a la
memoria (por ejemplo mediante el uso de pantallas con campos
definidos para cada tipo de dato).

Cada objeto de datos (por ejemplo una variable) debe ser


declarado en el programa para poder usarlo. Para declarar datos
ejecutamos la instrucción DATA. Por ejemplo

DATA x TYPE i VALUE 3.

Mediante esta instrucción hacemos tres cosas:

1. Informamos a sistema de que necesitamos un espacio para


almacenar datos y le decimos el nombre que vamos a utilizar
para referirnos a ese espacio, en este caso x.
2. Informamos a sistema del tipo de datos que vamos a guardar.
De este modo el sistema sabe cuánto espacio reservar. Por
ejemplo, si le indicamos que vamos a almacenar números
enteros (i) el sistema reservará cuatro bytes de memoria.
3. Informamos al sistema de que vamos a almacenar un
determinado valor. Por ejemplo, si le asignamos el valor 3 el
sistema fijará los 32 bits de memoria asignados a esa variable
de la siguiente manera

Alejandro Torrijos Página 1


Manejo de datos en ABAP

00000000 00000000 00000000 000000011

Si, por poner otro ejemplo, definimos el objeto como tipo carácter
(c) cada carácter se almacena en memoria de forma independiente
de acuerdo a un código (ASCII o Unicode). Tradicionalmente un
carácter ocupa un byte de memoria cada, aunque puede ocupar más
si usamos el código Unicode.

Pongamos por ejemplo que queremos almacenar la letra A


mayúscula. Puesto que el código ASCII le asigna un valor de 65, el
sistema almacenará en un byte de memoria la siguiente información:

01000001

Si indicamos al sistema que la información almacenada es de tipo


carácter mostrará la letra “A”. Si indicáramos al sistema que la
información almacenada es de tipo numérico mostraría el número
65.

Si queremos operar con esta información (digamos sumar valores)


debemos indicar al sistema que estamos operando con números y no
con letras, ya que en caso contrario nos dará un error en tiempo de
ejecución.

En ocasiones el sistema admite cierta flexibilidad, permitiendo


convertir unos tipos en otros. Pongamos por ejemplo que definimos
una variable como tipo carácter pero almacenamos un número, por
ejemplo un 1.

DATA x TYPE c VALUE ‘1’.

Según el código ASCII el sistema almacenaría en un byte la siguiente


información:

00110001

Digamos que queremos sumar 1 a esta variable.

x = x + 1.

Alejandro Torrijos Página 2


Manejo de datos en ABAP

En principio NO se puede sumar nada a un carácter, pero coincide


que este carácter es también un número. Por lo tanto el sistema
convierte la información almacenada en x (declarada como tipo c) a
un tipo que sí nos permite realizar operaciones matemáticas, por
ejemplo i. En este caso la información almacenada se transforma en
lo siguiente

0000000 0000000 0000000 00000001

Ahora sí que podemos realizar la operación aritmética. Finalmente la


información que quedará almacenada en x será el número 2, es decir

0000000 0000000 0000000 00000010

Todos los datos en ABAP se organizan de forma jerárquica, de


forma que los datos complejos (por ejemplo las estructuras) se
subdividen en datos más simples (números enteros, caracteres,
etcétera).

ABAP también permite construir nuestros propios tipos de datos


y usarlos para declarar variables (data objects) mediante la
instrucción TYPES. Mediante esta instrucción podemos guardar en el
sistema los atributos que deberán tener este tipo de datos, tales
como el tipo de información a almacenar, por ejemplo si se trata de
números o letras (o ambos), la longitud, el número de decimales,
etcétera. A modo de ejemplo vamos a declarar un tipo de datos que
se componga de una cadena de quince caracteres. Podemos llamar a
este tipo de datos como queramos, digamos a.

TYPES a(15) TYPE c.

Puesto que hemos definido el tipo de datos a de tipo carácter con


una longitud de 15, cada vez que declaremos una variable de este
tipo el sistema reservará espacio para 15 caracteres en la memoria
interna. En los sistemas con arquitectura tradicional se reservan 15
bytes de memoria. Para declarar variables de tipo a escribimos la
siguiente instrucción

DATA b TYPE a VALUE ‘hola amigos’.

Alejandro Torrijos Página 3


Manejo de datos en ABAP

Mediante esta instrucción le indicamos al sistema que necesitamos


espacio suficiente para almacenar datos de tipo a (15 caracteres) y
que vamos a llamar a ese espacio por el nombre de “b”. También le
decimos al sistema que queremos guardar en ese espacio el código
ASCII (o Unicode) equivalente a la expresión ‘hola amigos’.

En un programa ABAP lo primero es declarar todos los tipos de


variables que vamos a usar a lo largo del programa (incluido las
subrutinas).

También podemos declarar tipos de variables en el diccionario de


ABAP. El diccionario es un archivo (también llamado repositorio)
visible para todo el sistema que sirve para almacenar tipos de
datos.

Para crear un nuevo tipo de datos en el diccionario usamos el menú.


Una vez creado podemos declarar variables en cualquier programa
de ABAP definiéndolas del tipo creado.

Esto nos permite transferir datos de un programa a otro, algo que


es muy necesario al llamar (ejecutar) subrutinas o métodos externos
a un programa.

La estructura de cualquier tabla de una base de datos de SAP se


almacena en el diccionario como un tipo de datos. Esto nos va a
permitir crear nuevas tablas del mismo tipo que la tabla almacenada
con una simple instrucción.

Supongamos que el sistema tiene almacenada una tabla llamada


ejemplo con un número de campos n del tipo x (la estructura real de
la tabla no importa en este momento). Podemos crear en nuestra
aplicación una variable (data object) que tenga la misma estructura
que esa tabla mediante una instrucción

DATA t TYPE ejemplo.

La variable t en realidad es una estructura con los mismos campos (y


del mismo tipo) que la tabla ejemplo. Mediante otra instrucción

Alejandro Torrijos Página 4


Manejo de datos en ABAP

podemos copiar todos los registros almacenados en la tabla ejemplo


a la memoria interna del sistema mediante la instrucción

SELECT * FROM ejemplo.

Los tipos de datos NO ocupan espacio en la memoria interna del


ordenador. Son tan sólo un marco para determinar los atributos de
las variables, es decir, cómo va a interpretar el sistema la
información almacenada en éstas.

Cuando se declara una variable ésta hereda todos los atributos del
tipo definido. También podemos crear una variable sin definir el tipo
(podríamos decir que se crea una variable genérica).

DATA x TYPE ANY.

Las reglas para poner nombre a un tipo de variable son

• No más de treinta caracteres.


• El nombre debe empezar por una letra.
• No se pueden usar nombres reservados tales como los tipos
predefinidos por el sistema.
• No se pueden usar nombres reservados a instrucciones de
ABAP.
• Se pueden usar todas las letras, números y el guión bajo.

Los tipos de datos p, c, n y x son incompletos y necesitan que se


indique la longitud de la variable entre paréntesis.

DATA x(10) TYPE n.

Si no se indica nada el sistema le indica la longitud por defecto (un


byte).

El tipo p debe también indicar el número de decimales mediante la


instrucción DECIMALS. Por ejemplo

DATA x TYPE p DECIMALS 2.

Si queremos indicar un valor inicial (que no sea el que el sistema le


asigna por defecto) a una variable usamos la instrucción VALUE

Alejandro Torrijos Página 5


Manejo de datos en ABAP

DATA x TYPE p DECIMALS 2 VALUE 10.35.

La instrucción VALUE no se puede utilizar con las variables tipo


string.

Podemos declarar un tipo de datos haciendo referencia a otro tipo de


datos ya existente, bien en el programa o en el diccionario, mediante
la instrucción LIKE. Por ejemplo

TYPES x LIKE y.

En este caso el tipo de datos x heredaría los atributos del tipo y.

Lo más normal es declarar una variable que herede todos los


atributos de un tipo definido anteriormente

DATA x LIKE y.

También podemos usar la instrucción LIKE para definir tablas con


una estructura igual que otra tabla almacenada en el sistema,
cuya estructura, por lo tanto, está almacenada en el diccionario.

DATA t LIKE tbl.

En este caso hemos declarado una tabla llamada t que tiene la


misma estructura que la tabla llamada tbl.

Alejandro Torrijos Página 6

You might also like