Sunteți pe pagina 1din 10

Data Objects

DATA OBJECTS EN ABAP


Los objetos que sirven para almacenar datos en un sistema SAP
pueden ser elementales (variables, constantes, parameters , text
symbols, literales, etcétera), o complejos, por ejemplo tablas
internas, estructuras, tablas físicas, áreas de trabajo, select-options,
ranges, vistas.

Variables:
Si bien los tipos de variables en ABAP (integer, float, character,…)
pueden ser utilizadas por cualquier programa, las variables se
declaran en el propio programa, se crean durante el tiempo de
ejecución en la memoria interna del sistema, y desaparecen en el
momento en que se termina de ejecutar el programa.

En realidad una variable no es más que un espacio en la memoria


interna del sistema que se reserva para almacenar datos.

En ABAP existen distintos tipos de variables. El primer tipo de


variables son las variables que se definen por su nombre.

Este tipo de variables se declaran con la instrucción DATA.

DATA x TYPE i.

En este caso hemos reservado un espacio en la memoria interna de


cuatro bytes y le hemos asignado un nombre, en este caso x. La
información (ceros y unos) que se almacene en estos cuatro bytes se
va a interpretar por el sistema como un número entero en base 2,
aunque el sistema lo va a convertir y nos va a mostrar el equivalente
en base 10.

A este tipo de variables se les puede asignar un valor en tiempo de


ejecución mediante el operador de asignación =.

x = 5.

Alejandro Torrijos Página 1


Data Objects

Para resetear el valor asignado a una variable, asignar el valor que el


sistema le asigna por defecto, usamos la instrucción CLEAR

CLEAR x.

En este caso el valor de la variable x pasa de ser 5 a ser 0, puesto


que este es el valor que por defecto (valor inicial) le asigna el sistema
a las variables de tipo entero.

Si queremos saber el tipo de variable en tiempo de ejecución


podemos usar la instrucción DESCRIBE FIELD.

Esta instrucción puede incluir numerosos modificadores para saber


por ejemplo el tipo, decimales, longitud, componentes, etc.

DESCRIBE FIELDS x TYPE t LENGTH l DECIMALS d COMPONENTS c.

WRITE / `tipo`t,

/ `longitud’ l,

/ `decimales’ d,

/ ‘componentes’ c.

Actualmente en ABAP, para estructuras complejas, existen una serie


de métodos que son globales (es decir, que cualquier clase los
hereda), por ejemplo el método describe_by_data( ).

Constantes:
Las constantes son espacios reservados en memoria para almacenar
información que NO cambia durante la ejecución del programa.

Para declarar una constante usamos la instrucción CONSTANTS

CONSTANTS y TYPE i VALUE 5.

En el caso de las constantes es imprescindible asignarles un valor


cuando se crea mediante la instrucción VALUE.

Podemos declarar una estructura constante de la siguiente manera:

Alejandro Torrijos Página 2


Data Objects

CONSTANTS BEGIN OF dirección,

calle TYPE string VALUE ‘Calle Real’,

numero TYPE n VALUE ‘78’,

END OF dirección.

Si deseamos asignar a una constante el valor que el sistema le asigna


por defecto

CONSTANTS x TYPE i VALUE IS INITIAL.

En este caso el sistema asigna a la constante x una valor de cero,


puesto que este es el valor que se le asigna por defecto a las
variables de tipo entero.

Parameters:
Mediante la instrucción PARAMETERS se crea un espacio en memoria
donde se almacena información (es decir una variable) pero al mismo
tiempo aparece en la pantalla un campo donde el usuario puede
asignar el valor que desee a esa variable (siempre que sea
compatible con el tipo asignado para esa variable).

PARAMETERS x TYPE i.

Table work area:


Un área de trabajo para tablas es un espacio en memoria donde se
almacena la estructura de una tabla ya existente en el sistema
(llamada, por ejemplo, t). Para ello usamos la instrucción

TABLES t.

Esta instrucción tiene el mismo efecto que

DATA t TYPE t.

Siendo t una tabla que ya existe en el sistema y cuyo tipo está


almacenado en el diccionario.

Una vez declarada la tabla en el programa podemos cargar los datos


desde la tabla original a la memoria interna del sistema mediante la
instrucción

SELECT * FROM t.

Alejandro Torrijos Página 3


Data Objects

Actualmente ya no se necesita un área de trabajo para cargar los


datos de una base de datos. Por lo tanto están en desuso y tan sólo
se requieren en dos casos:

 Si traemos los datos de una base de datos lógica (logical


database).

 Si definimos campos en una pantalla usando tipos almacenados


en el sistema (diccionario).

Text symbols:
Los text symbols son textos almacenados en el sistema a los que se
les asigna un nombre para poder identificarlos y poder usarlos luego
en programación.

Los text symbols no se pueden crear mediante instrucciones ABAP


sino que hay que crearlos mediante el menú del escritorio (Goto –
Text elements – Text symbols)

Supongamos que hemos creado un text symbol llamado text-001 que


guarda las palabras ‘Hola amigos’.

Podemos asignar este text symbol de la siguiente manera

 DATA s TYPE c.
 s = text-001.

Si hacemos clic dos veces sobre un texto el sistema crea un text


symbol con ese contenido. Para asignarle una etiqueta ponemos
entre paréntesis el número que lo identifique de la siguiente manera

….’hola’(001)…

El sistema crea un text symbol con el contenido ‘hola’ y lo llamará


text-001.

Literales:
Los literales son información almacenada en la memoria del sistema
pero que no tienen un nombre asignado (son datos anónimos).

Los literales se leen por el sistema en tiempo de ejecución en el


punto exacto en que aparecen en el programa. Una vez leído no se
puede cambiar el valor, por ejemplo veamos el caso de un literal de
tipo texto, ya que estos son los más frecuentes

WRITE / ‘Hola amigos’.

Alejandro Torrijos Página 4


Data Objects

En este caso el sistema lee el texto y lo muestra inmediatamente por


pantalla.

El máximo de caracteres que puede almacenar un literal es de 255 y


debe ir dentro de comillas simples.

Podemos enlazar varios literales con el operador &.

WRITE / ‘Hola’ & ‘amigos’.

Para mostrar el carácter comilla simple ( ‘) debemos poner otra


comilla delante

WRITE / ‘El pub se llama John’’s’

También podemos usar literales numéricos con o sin signo. Si


representan números enteros no necesitamos comas, por ejemplo

12345

+12345

-12345

12345-

Para representar números con decimales necesitamos comas para


que el sistema no tome el punto tomo el final de una instrucción. El
signo puede aparecer al principio o al final.

‘0.12345’

‘-0.12345’

‘0.12345-‘

También podemos representar literales numéricos con su mantisa y


su exponente (notación científica).

‘1234-02’

‘-1234-02’

‘1234E2’

‘+1234E+02’

‘12345E-2’

‘123.4E+2’
Alejandro Torrijos Página 5
Data Objects

Puesto que los literales numéricos no son números, sino caracteres,


el sistema debe convertirlos primero a números antes de poder
operar con ellos. Por ejemplo

 DATA x TYPE f.
 x = ‘4E-2’.

En este caso la variable x de tipo float almacena el valor de 2.

 DATA x TYPE p DECIMALS 1.


 x = ‘2.26’

En este caso la variable x almacena el valor de 2.3.

Select-Options:
Sirve para declarar una tabla interna que está ligada a unos campos
de una pantalla.

Ranges:
Para declarar una tabla interna con la misma estructura que en una
select-options pero sin estar ligada a unos campos de una pantalla.

Objetos predefinidos:
Estos objetos no hay que declararlos ya que están siempre presentes
en cualquier programa ABAP:

 La constante ‘space’: Es una constante de tipo c, que ocupa un


byte y contiene un carácter (un espacio en blanco). No puede
ser modificada ya que es una constante predefinida por el
sistema.
 La auto-referencia ‘me’: Es una referencia que está presente en
todos métodos como un objeto local predefinido y muestra la
instancia en la que se está ejecutando el método. El tipo del
objeto me es la clase en la que está implementado el instance
method.
 La estructura ‘screen’: Es la estructura cuyos componentes
corresponden con los atributos de la pantalla que se está
procesando.

Variables de sistema (System fields):


SAP incluye una serie de espacios en memoria predefinidos donde
guarda información de forma dinámica (en tiempo de ejecución), por
ejemplo la fecha y la hora, el nombre del usuario, errores en tiempo
de ejecución, etc.

Alejandro Torrijos Página 6


Data Objects

A esta información se accede en modo sólo lectura, es decir no se


puede modificar ni por el programador ni por el usuario.

Estas variables o campos están definidos en el sistema (diccionario)


en una estructura llamada SYST.

Cada vez que se ejecuta un programa se crea en la memoria interna


una estructura llamada SY (réplica de la estructura SYST) en la que
se almacena información de forma dinámica correspondiente a estos
campos.

Para acceder al valor almacenado en estos campos escribimos


primero sy- seguido del nombre del campo, por ejemplo para acceder
a la fecha del sistema escribimos sy-datum.

La variable de sistema más importante es la variable SY-SUBRC. Esta


variable almacena un código al final de la ejecución de ciertos
procesos. Generalmente almacena un 0 si el proceso se ha ejecutado
con éxito, por lo que es muy fácil comprobar que no ha habido
errores de ejecución comprobando el valor que almacena esta
variable.

Data elements:

a) Tipos elementales:
Son las unidades más pequeñas en que puede dividirse un tipo de
datos complejos y se usan para especificar el tipo de datos que puede
contener una tabla de una base de datos.

Para asignar un tipo de datos podemos asignar directamente el tipo


de datos del Dictionary ABAP. EL Dictionary tiene muchos más tipos
de datos que el lenguaje ABAP, y esto es así porque deben de ser
compatibles con los distintos tipos de datos que existen en la bases
de datos con las que puede trabajar un sistema SAP. La mayoría de
estos tipos de datos del Dictionary tiene un equivalente en el
lenguaje ABAP:

 DEC (decimal) p((n+1)/2)


 INT1 (entero – 1 byte) sin equivalente
 INT2 (entero – 2 bytes) sin equivalente
 INT4 (entero – 4 bytes) i
 CURR (campo moneda) p((n+1)/2)
 CUKY (campo moneda –clave) c(5)
 QUAN (cantidad) p((n+1)/2)

Alejandro Torrijos Página 7


Data Objects

 UNIT (unidades) c(n)


 PREC (precisión) sin equivalente
 FLTP (coma flotante) f(8)
 NUMC (texto numérico) n(n)
 CHAR (carácter) c(n)
 LCHAR (carácter largo) c(n)
 STRING (cadena de caracteres) string
 RAWSTRING (secuencia de bytes) xstring
 DATS (fecha) d
 ACCP (periodo contable) n(6)
 TIMS (hora) t
 RAW (secuencia de bytes) x(n)
 CLNT (Cliente) c(3)
 LANG (lengua) c(1)

Para asignar un tipo de datos también podemos asignar un dominio


(Domain). Un dominio es un objeto del Repository que guarda los
atributos técnicos de un elemento de datos. Un dominio puede ser
usado por numerosos elementos de datos. Cuando creamos un
dominio hay que especificar el tipo de datos del Dictionary y el
número de caracteres.

b) Tipos ‘Reference’.
Describen campos individuales que contienen referencias a clases
globales y a interfaces de la librería de clases ABAP.

Las tablas y las vistas:


El Dictionary de ABAP contiene descripciones de las tablas de una
base de datos. Estas descripciones permiten crear las tablas físicas.

Una vista no es más que una tabla ‘virtual’ que contiene campos de
varias tablas.

La línea de una tabla es la descripción de cada una de sus columnas o


campos. Cada columna debe tener asignado un tipo elemental de
datos, es decir son estructuras planas. Los tipos de datos son uno de
los atributos de una tabla.

Para declarar una tabla o una vista de un tipo igual a una tabla ya
guardada en el Dictionary (llamada por ejemplo tabla1) se usa la
instrucción TYPE:

DATA t TYPE tabla1.

Alejandro Torrijos Página 8


Data Objects

Si queremos declarar una variable del mismo tipo que un componente


de una tabla:

DATA x TYPE tabla1-componente1.

Para declarar un tipo de datos complejo, digamos igual que el tipo de


una tabla del Dictionary:

TYPES tipo TYPE tabla1.

Los componentes de este tipo de datos complejo heredan los


nombres de los componentes de la tabla. Podemos acceder al
contenido mediante la expresión tipo-componente.

Definiendo las variables de un programa ABAP de esta manera nos


aseguramos que siempre van a ser compatibles con los componentes
de una tabla de una base de datos almacenada en el Dictionary.

Para leer un campo de una tabla podemos usar la siguiente


expresión:

 TYPES tipo1 TYPE tabla1-campo1.


 DATA x TYPE tipo1.
 SELECT SINGLE campo1 FROM tabla1 INTO x.

donde x es un campo de una tabla interna definido del mismo tipo


que el campo1 de la tabla1.

Para leer toda una tabla:

 TYPES tipo2 TYPE tabla1.


 DATA tabla TYPE tipo2.
 SELECT * FROM tabla1 INTO TABLE tabla.

Visibilidad de los tipos de datos:


Los tipos predefinidos (c, d, f, i, n, p, t, x) siempre son visibles, es
decir se pueden declarar sin más en cualquier programa ABAP.

Si se declaran dos tipos con el mismo nombre, uno en la declaración


global del programa ABAP y otro en un procedimiento, este último
oculta al primero. Es decir, es como si dentro de ese procedimiento
no existiera el tipo global. Lo mismo ocurre entre los tipos declarados
localmente en un programa y los declarados en el Dictionary con el
mismo nombre.

Alejandro Torrijos Página 9


Data Objects

Dentro del diccionario, los tipos de datos definidos dentro de un


grupo ocultan los tipos definidos en solitario. El sistema avisa si se
produce esta circunstancia.

En resumen, el sistema busca desde dentro hacia afuera. Primero


busca una definición del tipo declarado en el procedimiento, luego en
el programa, y por último acude al Dictionary.

Compatibilidad:
Dos tipos de datos son compatibles si todos sus atributos técnicos
son iguales (longitud, número de decimales, tipo). No se debe
confundir entre tipos compatibles y tipos convertibles. Si asignamos
un valor de un tipo a otro tipo, el primero se convierte al segundo de
acuerdo a unas reglas preestablecidas.

Alejandro Torrijos Página 10

S-ar putea să vă placă și