sap: variables en abap
DESCRIPTION
Tutorial sobre los tipos de variables que existen en ABAPTRANSCRIPT
![Page 1: SAP: Variables en ABAP](https://reader036.vdocuments.co/reader036/viewer/2022081718/5571f3b849795947648e7cba/html5/thumbnails/1.jpg)
Variables en ABAP
Alejandro Torrijos Página 1
VARIABLES EN ABAP (DATA OBJECTS)
CONSIDERACIONES GENERALES:
Todos los datos con los que trabaja un programa en SAP deben estar
cargados en el área de la memoria RAM que el sistema operativo destina para ese programa.
Cada una de las variables (DATA OBJECTS) debe declararse al inicio del programa antes de poder operar con ella. La declaración de variables se
hace mediante la instrucción DATA.
Dependiendo del tipo y del número de variables declaradas el sistema
reserva un número determinado de bytes en memoria.
Los datos permanecen almacenados en memoria RAM (volátil) durante
el tiempo que dura la ejecución del programa. Si queremos usar un dato posteriormente debemos almacenarlo en la memoria secundaria
(permanente) del sistema, por ejemplo el disco duro.
![Page 2: SAP: Variables en ABAP](https://reader036.vdocuments.co/reader036/viewer/2022081718/5571f3b849795947648e7cba/html5/thumbnails/2.jpg)
Variables en ABAP
Alejandro Torrijos Página 2
La declaración de un tipo de variable se hace mediante la instrucción TYPE.
La inicialización de una variable se hace mediante la instrucción VALUE. Por ejemplo
DATA x TYPE i VALUE 5.
La asignación de un valor a una variable se hace mediante el signo =. Por ejemplo
x = 6.
El tipo de iinformación que puede almacenar una variable depende del tipo declarado.
TIPOS DE VARIABLES:
Existen dos tipos de variables:
a) Variables numéricas: Son variables cuya información almacenada (ceros y unos) se interpreta por su valor en sistema
binario y se usan para realizar cálculos.
b) Variables de tipo carácter: Son variables cuya información
almacenada (ceros y unos) se interpreta de acuerdo a un código (ASCII o Unicode). Este tipo de variables se usa para mostrar
valores (números o letras). Cada carácter (letra o número) se representa de forma independiente del resto. La longitud de este
tipo de variables puede ser determinada por el programador, aunque se establecen unos valores por defecto.
![Page 3: SAP: Variables en ABAP](https://reader036.vdocuments.co/reader036/viewer/2022081718/5571f3b849795947648e7cba/html5/thumbnails/3.jpg)
Variables en ABAP
Alejandro Torrijos Página 3
Cada operación exige un tipo de variable. Si es necesario, el sistema convierte un tipo de variable a otro, aunque con algunas excepciones
(por ejemplo no puede sumar dos letras pero sí puede sumar dos números que estén representados como caracteres).
VARIABLES PREDEFINIDAS:
Son variables elementales que no es necesario definir en el Diccionario del sistema, ya que existen en todos los programas ABAP. Dentro de
este tipo de variables podemos definir dos tipos:
1) Variables con longitud fija:
Entre estas variables se incluyen las siguientes:
1) Variables numéricas:
Tipo i (integer): Almacena números enteros en 4 bytes. Se usa sobre
todo para índices o contadores en un loop. Por ejemplo
DATA x TYPE i VALUE 5.
DO x TIMES ...
ENDDO
Tipo p (packed): Ocupan 8 bytes y almacena números con un número
fijo de decimales que se declaran mediante la instrucción DECIMALS. Por defecto el número de decimales es cero. Cada decimal ocupa 1/2 byte y
el signo ocupa el último 1/2 byte. Se usan sobre todo para almacenar unidades monetarias, de peso, volumen... Debemos señalar la casilla
![Page 4: SAP: Variables en ABAP](https://reader036.vdocuments.co/reader036/viewer/2022081718/5571f3b849795947648e7cba/html5/thumbnails/4.jpg)
Variables en ABAP
Alejandro Torrijos Página 4
Fixed Point Arithmetic en los atributos del programa antes de usar este tipo de variables. Por ejemplo
DATA x TYPE p DECIMALS 2 VALUE 5.25
Tipo f (float): Almacena números reales en 8 bytes. Utiliza el sistema complemento a dos y la notación científica (signo, mantisa y exponente)
para representar los números. Este tipo de variables es adecuado para realizar operaciones matemáticas complejas tipo raíz cuadrada, por
ejemplo
DATA x TYPE f VALUE sqrt ( 3 ).
2) Variables tipo carácter:
Tipo c (character): Almacena en 1 byte una letra o un caracter numérico. Por ejemplo, para indicar una variable llamada car que ocupa
4 caracteres escribimos
DATA car(3) TYPE c VALUE 'hola'.
El tipo c también hace las veces de tipo booleano (inexistente en
ABAP): una X se intepreta como verdadero y un espacio en blanco como falso. Para este último existe un tipo predefinido de
variable que se llama space y que se utiliza para instrucciones de control del tipo
IF variable <> space.
Tipo n (numeric): Ocupa 1 byte y almacena caracteres numéricos (que no números) y se usa para almacenar datos numéricos con los que no
se realizan operaciones aritméticas, por ejemplo un número de teléfono
o un código postal.
![Page 5: SAP: Variables en ABAP](https://reader036.vdocuments.co/reader036/viewer/2022081718/5571f3b849795947648e7cba/html5/thumbnails/5.jpg)
Variables en ABAP
Alejandro Torrijos Página 5
Tipo d (date): Ocupa 8 bytes y se usa para almacenar fechas. El formato es año(4 dígitos)/mes(2 dígitos)/día(dos dígitos).
Si el valor se introduce desde una pantalla el sistema comprueba que la fecha es válida.
La fecha del sistema se guarda en la variable sy-datum.
Se pueden realizar operaciones aritméticas del tipo sumar días, semanas, años, etc.
Para sumar 1 al mes actual hacemos los siguiente:
definimos una variable tipo d y la llamamos por ejemplo fecha y le asignamos la fecha del sistema:
DATA fecha TIPE d VALUE sy-datum
accedemos al cuarto dígito con fecha+4
accedemos a los dos siguientes con fecha+4(2)
sumamos 1 al mes y lo guardamos
fecha = fecha+4(2) + 1
Tipe t (time): Ocupa 6 bytes y se usa para almacenar la hora. El
formato es hora(2 dígitos)/minutos(2 dígitos)/segundos(2 dígitos). Se pueden realizar operaciones aritméticas del tipo sumar horas, o
segundos de forma similar a como lo hacemos con la fecha. La hora del sistema se guarda en la variable sy-uzeit.
Tipo x (hexadecimal): Ocupa 1 byte. Cada medio byte representa valores del 0 al 15 (o lo que es lo mismo del 0 al F en base
hexadecimal). El sistema almacena estos números como si fueran caracteres. Si necesitamos realizar operaciones aritméticas con ellos el
sistema puede convertirlos a numéricos previamente.
2) Variables con longitud indefinida:
El espacio que ocupan en memoria varía de forma dinámica en tiempo
de ejecución.
![Page 6: SAP: Variables en ABAP](https://reader036.vdocuments.co/reader036/viewer/2022081718/5571f3b849795947648e7cba/html5/thumbnails/6.jpg)
Variables en ABAP
Alejandro Torrijos Página 6
Tipo string: Contiene cadenas de caracteres de una longitud indefinida. El sistema reserva memoria para esta variable de forma dinámica
(durante la ejecución del programa) una vez que le asignamos contenido.
Tipo xstring: Es el equivalente hexadecimal del string. El sistema reserva memoria RAM de forma dinámica para esta variable a medida
que le asignamos contenido (valores del 0 al F en base hexadecimal).
VARIABLES DEFINIDAS POR EL PROGRAMADOR:
Además de los tipos de variables elementales que nos proporciona el lenguaje ABAP el sistema nos permite construir nuestros propios tipos
de variables (y darles un nombre) a través de la instrucción TYPES. Por ejemplo
TYPES texto(4) TYPE c. DATA a TYPE texto VALUE 'hola'
Son variables más complejas definidas a partir de varias variables elementales.
Podemos declarar tipos de variables y almacenarlas en una parte de la memoria secundaria del sistema (Diccionario), para poder usarlas en un
momento posterior por otro programa.
El Diccionario es accesible por todos los programas ABAP que se estén
ejecutando en el mismo sistema.
![Page 7: SAP: Variables en ABAP](https://reader036.vdocuments.co/reader036/viewer/2022081718/5571f3b849795947648e7cba/html5/thumbnails/7.jpg)
Variables en ABAP
Alejandro Torrijos Página 7
Si queremos pasar varibles externas como parámetos a un determinado programa o función, debemos asegurarnos que son del mismo tipo, o
tipos compatibles.
Las estructuras de las bases de datos almacenadas en el sistema son
consideradas como tipos de variables. De ahí que podamos procesar información almacenada en una base de datos como si fueran variables
complejas (por ejemplo asignándoles un puntero para luego acceder a su contenido).
TIPOS GENÉRICOS:
Typing significa especificar el tipo de datos que puede aceptar un
parámetro o un field symbol. El tipo real de los datos sólo se adopta cuando se ejecuta un programa y se asigna un valor a una variable. El
efecto del typing es que sólo podemos asignar valores de ese tipo definido a esa variable.
En ocasiones NO nos interesa definir un tipo para una variable, ya que en tiempo de ejecución puede tomar diversos tipos de valores. En otras
ocasiones sólo nos interesa definir un tipo parcial.
En ABAP tan sólo podemos definir tipos genéricos dentro de las
subrutinas (FORM), de los métodos (METHODS) y en los FIELD-SYMBOLS.
Las variables locales de un programa ABAP NO se pueden definir como de tipo genérico.