abap types y data objects

8
ABAP Types y Data Objects Los programas en cualquier lenguaje de programación necesitan trabajar con datos localmente y guardalos en variables. Las variables tienen nombres y tipos de atributos que pueden ser numéricos, caracteres o cadenas de caracteres dependiento de los tipos de datos soportados por el lenguaje. En ABAP a la variable se la llama DATA OBJECT y es definida por un DATA TYPE, de tipo local, global o de tipo objeto. Data Types El data type es sólo la descripción y no ocupa espacio en memoria; se pueden definir en cualquier programa, utilizando data types predefinidos o globales. Los data type globales se definen en el diccionario de datos, usando data elements, type pools o type groups, table types, estructuras o tablas. Para definir data types localmente se utiliza la sentencia TYPES, y sólo se pueden utilizar en el programa que los define, mientras que los globales son visibles en cualquier programa SAP. Los data types se usan en la definición de DATA OBJECTS y definen sus atributos técnicos, cómo se almacenan en memoria, y que operaciones son posibles en el data object. Los data types se usan también en la definición de INTERFACE PAREMETERS, determinando qué valores se pueden transfereir cuando la unidad modular es llamada. (subrutinas, módulos de función y métodos) Otro uso es para la definición de los campos de entrada/salida en un programa ABAP. Se usan para declarar PARAMETERS y SELECT-OPTIONS para los campos creados en el screen painter (selection screens y dynpros). Data Types Predefined Data Types Local Data Types Global Data Types ABAP Dictionary Object ABAP Dictionary Type Group

Upload: kasiopeia30

Post on 23-Jul-2015

492 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: ABAP Types y Data Objects

ABAP Types y Data ObjectsLos programas en cualquier lenguaje de programación necesitan trabajar con datos localmente y guardalos en variables. Las variables tienen nombres y tipos de atributos que pueden ser numéricos, caracteres o cadenas de caracteres dependiento de los tipos de datos soportados por el lenguaje.

En ABAP a la variable se la llama DATA OBJECT y es definida por un DATA TYPE, de tipo local, global o de tipo objeto.

Data TypesEl data type es sólo la descripción y no ocupa espacio en memoria; se pueden definir en cualquier programa, utilizando data types predefinidos o globales. Los data type globales se definen en el diccionario de datos, usando data elements, type pools o type groups, table types, estructuras o tablas. Para definir data types localmente se utiliza la sentencia TYPES, y sólo se pueden utilizar en el programa que los define, mientras que los globales son visibles en cualquier programa SAP.

Los data types se usan en la definición de DATA OBJECTS y definen sus atributos técnicos, cómo se almacenan en memoria, y que operaciones son posibles en el data object.

Los data types se usan también en la definición de INTERFACE PAREMETERS, determinando qué valores se pueden transfereir cuando la unidad modular es llamada. (subrutinas, módulos de función y métodos)

Otro uso es para la definición de los campos de entrada/salida en un programa ABAP. Se usan para declarar PARAMETERS y SELECT-OPTIONS para los campos creados en el screen painter (selection screens y dynpros).

Data Types

Predefined Data Types

Local Data Types Global Data Types

ABAP Dictionary Object

ABAP Dictionary Type Group

Page 2: ABAP Types y Data Objects

Data ObjectsLos data object se almacenan temporalmente en el programa y ocupan memoria para guardar los datos. Contienen información para el programa, y existen mientras se esté ejecutando. Los atributos técnicos son el tipo, la longitud, el número de decimales. Se pueden declarar estática o dinámicamente en tiempo de ejecución, utilizando data types locales, globales o predefinidos por SAP. Para hacerlo se usa la sentencia DATA, y se le puede asignar un valor usando VALUE. ABAP contiene los siguientes tipos de data objects: Literales, constantes, text symbols, data objects predefinidos y variables.

LiteralsLos 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. Los literales pueden aparecer en cualquier parte de un programa, y se definen simplemente escribiéndolos cuando es necesario y su tipo es definido por su valor.

WRITE / ‘Hola amigos’.

Hay tres tipos de literales:

Numeric LiteralsConsiste en una secuencia contiua de números (0-9), y puede llevar el signo + o -. No pueden tener más de 31 dígitos. No se admiten decimales. Si fuera el caso, habría que definirlo entre comillas.

Text field literalsEs una secuencia de carácteres dentro de comillas simples ('). Su longitud es de un máximo de 255 caracteres y se corresponde con el data type c. Los espacios a la derecha no se tienen en cuenta.

String literalsEs una secuencia de carácteres dentro de comillas (`). Su longitud es de un máximo de 255 caracteres y se corresponde con el data type string. Los espacios a la derecha se tienen en cuenta.

ConstantsLas constantes son data objects para almacenar información que NO cambia durante la ejecución del programa. Si se intenta cambiar su valor da un error de ejecución. Para declarar una constante usamos la instrucción CONSTANTS. En el caso de las constantes es imprescindible asignarles un valor cuando se crea mediante la instrucción VALUE.

Text symbolsLos 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

Page 3: ABAP Types y Data Objects

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

Predefined data objectsEstos objetos no hay que declararlos ya que están siempre disponibles 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.

SAP incluye una serie de espacios en memoria predefinidos donde guarda información de forma dinámica (en tiempo de ejecución), con los valores que proporcionan información sobre el estado actual del sistema por ejemplo la fecha y la hora, el nombre del usuario, errores en tiempo de ejecución, etc. Los guarda en una estructura del Diccionario ABAP (SY) con el data type SYST.

Variables

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.

DATA: Se usa esta instrucción para declarar variables cuya vida y visibilidad dependerán del contexto de la declaración. Se usa la instrucción VALUE para darle un valor inicial a la variable.

STATICS: Las variables que se declaran con la instrucción DATA “viven” durante tanto tiempo como el contexto en el que se definen. Así variables en un programa principal ABAP existen para la ejecución completa del programa, y las variables locales en los procedimientos sólo existen durante el tiempo que se ejecuta el procedimiento. Para conservar el valor de una variable local más allá del tiempo de ejecución del procedimiento, se puede declarar mediante la sentencia STATICS. Esto declara una

Page 4: ABAP Types y Data Objects

variable con el tiempo de vida del contexto del programa principal, pero que sólo es visible en el procedimiento.

CLASS-DATA: Se usa para declarar atributos estáticos de una clase y son válidos para todas las instancias de la clase dentro del programa.

PARAMETERS: Declara un data object elemental que se visualiza como un campo de entrada en las selection screen

SELECT-OPTIONS: Declara una tabla interna que se visualiza como un campo de entrada en las selection screen.

ABAP Data TypesSon data types predefinidos por SAP y que pueden usarse en todos los programas para definir data types locales y data objects.

Hay 10 tipos. 8 son de longitud fija:

Character types: Numeric text (N), character text (C), date type (D) y time type (T). En Unicode cada carácter ocupa 2 ó 4 bytes.

Numeric types: Integer (i), floating point number (f), packed number (p).

Hexadecimal types (X) es un data type para definir un byte en memoria. Un byte se representa por dos dígitos en hexadecimal.

y 2 son de longitud variable:

STRING: Una string puede contener una logitud variable de caracteres alfanuméricos. No se asigna memoria a la cadena, hasta que no se le asigna un valor, porque no sabemos cuánta vamos a necesitar. Técnicamente no hay un máximo de caracteres para este tipo. Pero hay un máximo de memoria que se le puede asignar, que está guardado el el parámetro del sistema: ztta/max_memreq_MB.

XSTRING: es una secuencia hexadecimal de bytes de longitud variable.

Tipo Descripción Tamaño por defecto Valor inicial

C Character 1 Space

N Numeric text 1 '00...0'

D Date YYYYMMDD 8 '00000000'

T Time HHMMSS 6 '000000'

X Byte (heXadecimal) 1 X'00'

I Integer 4 0

P Packed número 8 0

F Floating point número 8 '0.0'

Page 5: ABAP Types y Data Objects

STRING String variable string vacío

XSTRING Byte sequence (X string) variable X string vacío

Local Data TypesSon data types definidos en un programa SAP y sólo son visibles en ese programa. Se pueden usar data types predefinidos o global types, para definirlos. Se utiliza la instrucción TYPES para hacerlo.

TYPES: <type-name> …. [TYPE <ABAP – Type> | LIKE <obj>].

El nombre no puede tener más de 30 caracteres y se pueden usar letras, números, y guión bajo. <ABAP – Type> puede ser uno de los predefinidos o cualquier otro tipo local o del diccionario.

Los tipos compejos tienen como componentes una secuencia de data types elementales, data types complejos o reference types. También se pueden usar objetos del diccionario de datos como data elements, estructuras y tablas, y componentes de estructuras o tablas para definir un componente individual de un tipo complejo.

Los data type complejos son structure types y table types. El structure data type es un secuencia de data types elementales, complejos o referenced. Dependiendo del tipo de componentes el structure type puede ser de tipo flat, nested o deep.

Una estructura es plana (flat) si contiene sólo variables elementales del tipo i, p, f, c, n, d, t, x. Una estructura es anidada (nested) si contiene a una estructura como tipo. Una estructura el profunda (deep) si contiene entre sus componentes variables de tipo string, punteros o tablas. Una estructura puede tener otras estructuras entre sus componentes. Varias estructuras anidadas componen una estructura plana si todos sus componentes son variables elementales. Se pueden anidar hasta un máximo de 9 estructuras. Para evitar este tipo de estructuras jerárquicas podemos incluir una estructura en otra estructura a través de la instrucción INCLUDE. En este caso todos los componentes de la estructura resultante estarían al mismo nivel.

Global Data TypesConstan de data elements, structures y table types.

Data element: Son las unidades más pequeñas en que puede dividirse un tipo de datos complejo 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 Diccionario ABAP. EL Diccionario 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

Page 6: ABAP Types y Data Objects

datos que existen en la basesde datos con las que puede trabajar un sistema SAP. La mayoría deestos tipos de datos del Dictionary tiene un equivalente en el lenguaje ABAP.

Structures: es una secuencia de data elements o incluso otro data type de tipo estructura como uno de sus componentes.

Table types: son tablas internas definidas en el Diccionario. Se especifica su line type, access type y key durante la creación del table type en el Diccionario.

Se puede usar cualquier data type existente en el Diccionario para crear nuevos data types en el Diccionario.

Page 7: ABAP Types y Data Objects