SAP: Manejo de Datos en ABAP

7
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. Alejandro Torrijos Página 1

description

Tutorial sobre el manejo de los datos, la declaración de variables y tipos de variables en ABAP

Transcript of SAP: Manejo de Datos en ABAP

Page 1: SAP: Manejo de Datos en ABAP

Manejo de datos en ABAP

DATA OBJECTSCuando 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

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

Alejandro Torrijos Página 1

Page 2: SAP: Manejo de Datos en ABAP

Manejo de datos en ABAP

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.

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

Alejandro Torrijos Página 2

Page 3: SAP: Manejo de Datos en ABAP

Manejo de datos en ABAP

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’.

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.

Alejandro Torrijos Página 3

Page 4: SAP: Manejo de Datos en ABAP

Manejo de datos en ABAP

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 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.

Alejandro Torrijos Página 4

Page 5: SAP: Manejo de Datos en ABAP

Manejo de datos en ABAP

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

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 5