TIPOS DE DATOS EN ABAP

TIPOS DE DATOS EN
ABAP
En ABAP existen los diferentes tipos de datos:
Declaración de Campos
Para declarar variables en un programa ABAP, debemos utilizar la sentencia DATA.
Ejemplo:
DATA var.
Esta sentencia, (ejemplo de arriba), crea una variable llamada <var> del tipo C tamaño 1, que es la
definición por defecto.
NOTA: Todas las líneas de instrucciones que escribimos en ABAP deben estar terminadas en un
punto ‘.’; de lo contrario, el programa producirá errores de sintaxis.
Si queremos que la variable sea de tamaño 4, debemos escribirlo de la siguiente manera:
DATA var(4).
Tipos de Datos en ABAP – RichardRey.com - 2
Ahora, si lo que queremos es declarar una variable que no sea tipo C, por ejemplo, queremos
declarar una variable tipo entero, utilizaremos la sentencia TYPE para indicar el tipo de dato que
queremos:
DATA var TYPE i.
Con el parámetro LIKE podemos declarar una variable con los mismos atributos de longitud y tipo
que una variable de base de datos:
DATA
var LIKE mara-matnr.
MARA-MATNR hace referencia al campo MATNR de la tabla MARA; y la instrucción esta
declarando una variable del mismo tipo de datos de dicho campo. (Luego veremos todo lo
relacionado con las tablas y campos de la Base de Datos).
La instrucción de arriba también puede escribirse como:
DATA
var TYPE mara-matnr.
Con el parámetro VALUE podemos inicializar la variable con un valor distinto al que tiene por
defecto:
DATA
var TYPE i VALUE 1.
Esta instrucción declara una variable tipo entero con valor inicial de 1.
Si queremos declarar dos o más variables a la vez, lo podemos hacer de dos formas, la primera es
escribiendo una línea debajo de otra de la manera como lo hemos venido viendo hasta ahora:
DATA var1 TYPE i VALUE 1.
DATA var2 TYPE mara-matnr.
DATA var3 LIKE mara-matnr.
La segunda opción es escribiendo la sentencia DATA una sola vez seguida de dos puntos (: ) y
terminando cada línea con coma ( , ) en vez de punto, colocando el punto al final de la última línea
de declaración; veamos el ejemplo anterior escrito bajo esta forma:
Tipos de Datos en ABAP – RichardRey.com - 3
DATA: var1 TYPE i VALUE 1,
var2 TYPE mara-matnr,
var3 LIKE mara-matnr.
También podemos crear una estructura de datos, esto es, un conjunto de datos relacionados
lógicamente en una estructura. Luego de la sentencia DATA; utilizamos las sentencias BEGIN OF y
END OF para determinar el inicio y final de la estructura. Ejemplo:
DATA: BEGIN OF nombre_estructura,
var1 TYPE i,
var2 TYPE i,
END OF nombre_estructura.
Posteriormente, el acceso a los campos de la estructura será con la instrucción:
<nombre_estructura> - <campo_estructura>.
Ejemplos:
nombre_estructura-var1.
nombre_estructura-var2.
Tablas Internas.
El tema de las tablas internas se tocará a fondo en un capítulo posterior, por ahora quédate con
que, en ABAP existe una variante de las tablas tradicionales de Bases de Datos (BD), que son
llamadas las “tablas internas”; éstas, a diferencia de las tablas de BD se guardarán en memoria y
solo serán accesibles desde el programa que las creó, y no son tablas guardadas en la BD general
consumiendo recursos del sistema.
En SAP, las tablas “normales” se les conoce como tablas transparentes, mientras que a estas
secciones de memoria que permiten almacenar una serie de registros dentro de un programa, con
una estructura de datos determinada, se les conoce como tablas internas.
Quédate con esto por ahora y si no se entendió muy bien, no te preocupes que le dedicaremos un
capítulo entero a esto más adelante.
Tipos de Datos en ABAP – RichardRey.com - 4
Las tablas en SAP, tanto las internas como las transparentes, están formadas por estructuras de
datos, por lo que hay dos maneras de declarar una tabla interna en un programa ABAP:
a) Declarando la estructura de datos y la tabla en una misma sentencia, utilizando OCCURS.
DATA: BEGIN OF
nombre
ciudad
ventas
itab
LIKE
LIKE
LIKE
OCCURS 100,
LFA1-NAME1,
LFA1-ORT1,
LFC3-SOLLL,
END OF itab.
b) Declarando por un lado la estructura de datos, y luego declarando la tabla interna
indicando la sentencia TYPE TABLE OF.
DATA: BEGIN OF ed,
nombre LIKE LFA1-NAME1,
ciudad LIKE LFA1-ORT1,
ventas LIKE LFC3-SOLLL,
END OF ed.
DATA: itab TYPE TABLE OF ed.
Las dos sentencias crean una tabla interna llamada ITAB, con 3 campos (nombre, ciudad y ventas),
la diferencia es que la primera tabla tiene un espacio reservado de 100 líneas en memoria
principal.
Esto no significa que el tamaño máximo de la tabla sea el indicado, ya que si este se desborda los
datos se guardan en un fichero de paginación, bajando lógicamente el tiempo de proceso de las
tablas internas, pero evitando que el área global de almacenamiento destinado por SAP para
tablas internas se agote.
Las tablas internas se declaran, inicializan y referencian como una estructura de datos.
También podemos utilizar la misma estructura que una tabla de base de datos. Para ello
utilizaremos la instrucción INCLUDE STRUCTURE.
DATA BEGIN OF sociedad OCCURS 10.
INCLUDE STRUCTURE T001.
DATA END OF sociedad.
Tipos de Datos en ABAP – RichardRey.com - 5
T001 es una estructura del diccionario de datos de SAP, esto lo veremos en el siguiente capítulo.
Variables del sistema
El sistema SAP tiene algunas variables internas que se van actualizando automáticamente y que
pueden ser utilizadas en los programas.
Todas ellas empiezan por el prefijo SY- y entre las más utilizadas tenemos <SY-SUBRC>; que nos
da el código de retorno de una instrucción, o <SY-TABIX>; que contiene la línea de proceso de una
tabla interna.
Todas las variables del sistema se encuentran en la estructura de datos llamada SYS.
En el siguiente artículo enumero las variables del sistema más utilizadas en el entorno de
programación ABAP:
http://richardrey.com/index.php/abap-tips/campos-del-sistema-sap-mas-utilizados-en-abap/
Asignando valores
Existen diversas formas de asignar valores a una variable en ABAP/4.
Una asignación directa, como resultado de una operación aritmética o como resultado de una
conversión automática entre campos con valores de diferente tipo de datos.
La instrucción MOVE realiza un transporte del contenido del <var1> al campo <var2>.
MOVE
<var1>
TO
<var2>.
Esta última instrucción también se puede escribir de la siguiente manera:
<var2> = <var1>.
Ejemplos:
MOVE var1 TO var2.
var2 = var1.
Tipos de Datos en ABAP – RichardRey.com - 6
Si deseamos, por algún motivo, inicializar las variables que estamos utilizando, (borrarles el valor
que tienen y dejarlas en blanco), aplicaríamos la sentencia CLEAR como se muestra en el ejemplo:
CLEAR var.
CLEAR inicializa al valor que tiene asignado como valor inicial (ver Tabla 1) sin tener en cuenta las
cláusulas VALUE que haya.
La asignación e inicialización de las estructuras de datos funciona de la misma forma que en las
variables normales. Un CLEAR inicializa todos los campos del registro.
Con respecto a las tablas internas, hay una diferencia, la instrucción CLEAR solo inicializa la línea
de cabecera (más adelante se verá que es esto); para inicializar una tabla interna completa
requerimos la sentencia REFRESH.
REFRESH itab.
Existen otras consideraciones para las tablas internas, pero las abordaremos más adelante.
Podremos conseguir una asignación más potente con MOVE-CORRESPONDING.
MOVE-CORRESPONDING <var1> TO <var2>.
Esta instrucción mueve de <var1> a <var2> aquellos campos que tengan idéntico nombre.
Operaciones Aritméticas en ABAP/4
En ABAP/4 las operaciones aritméticas básicas se pueden implementar de dos formas:
Con la instrucción COMPUTE y los símbolos +, -, /, *.
COMPUTE var1 = <Expresión Aritmética>.
Donde la sentencia COMPUTE es opcional; es decir, se puede omitir de la sentencia, veamos un
ejemplo:
Tipos de Datos en ABAP – RichardRey.com - 7
COMPUTE var1 = var2 + var3.
var1 = var2 + var3.
Ambas instrucciones suma las variables <var2> con <var3> y guarda el resultado en <var1>.
Si se trata de una operación compleja donde necesitemos paréntesis, dejaremos un espacio en
blanco precediendo y siguiendo al paréntesis. Ejemplo:
var1 = var1 + ( var2 + var3 ).
También existe una serie de instrucciones para realizar operaciones matemáticas, como las
siguientes:












ADD TO.
SUBSTRACT FROM.
MULTIPLY BY.
DIVIDE BY.
EXP.
LOG.
SIN.
COS.
SQRT.
DIV.
MOD.
STRLEN.
Procesando campos de tipo texto
El lenguaje ABAP ofrece una cantidad de instrucciones para el procesamiento de cadenas de texto,
veamos algunas de ellas:
SHIFT <campo>. Realiza un desplazamiento de un carácter hacia la izquierda.
SHIFT <campo> BY <n> PLACES (RIGHT) .Realiza un desplazamiento de N caracteres hacia
la Izquierda o si se especifica hacia la derecha, introduciendo blancos por el lado opuesto.
SHIFT <campo> BY 2 PLACES CIRCULAR (RIGHT). Realiza un desplazamiento cíclico hacia
la izquierda o si se especifica hacia la derecha.
Tipos de Datos en ABAP – RichardRey.com - 8
REPLACE
<cadena1>
WITH
<cadena2>
INTO
<campo>.
Reemplaza <cadena1> por
<cadena2> dentro de la variable campo. Si la variable del sistema SY-SUBRC es diferente de 0; es
que <cadena1> no existe dentro de la variable <campo>.
Existe otra instrucción de sustitución, TRANSLATE.
TRANSLATE <campo> TO UPPER CASE .Pasa el contenido de <campo> a Mayúsculas.
TO LOWER CASE .Como la anterior, pero pasando el contenido a minúsculas.
La instrucción SEARCH busca una cadena dentro de un campo o una tabla.
SEARCH <campo>/<tabla> FOR <cadena>. Si el Resultado es positivo, SY-SUBRC es igual a 0.
En caso de que sea una tabla, SY-TABIX contiene la línea de la tabla donde se ha encontrado.
Para borrar los blancos de una cadena utilizaremos CONDENSE.
CONDENSE <campo> (NO-GAPS).
Esta instrucción borra todos los blancos que se encuentren comenzando la cadena por la izquierda
y en caso de encontrar series de blancos intermedios dejará únicamente uno por serie.
La cláusula NO-GAPS borra todos los blancos estén donde estén.
Tipos de Datos en ABAP – RichardRey.com - 9