✒️ABAP / La declaración de datos Por Gustavo Rondon Hernandez
ABAP La declaración de datos

La declaración de datos
1 | Los tipos de datos de ABAP
Tal como en otros lenguajes de programación, en ABAP existen diferentes tipos de datos que podemos declarar en nuestros programas.
Vamos a necesitar crear tipos de datos ya que los programas utilizan variables, constantes y otros objetos para almacenar los datos durante su ejecución.
ABAP forma parte de los lenguajes de programación tipados tal como son C o Java. Por otro lado, los lenguajes de tipado dinámico o no tipados no necesitan establecer un tipo y en una misma variable se puede almacenar cualquier tipo de dato durante la ejecución, como puede ser en PHP
Como lenguaje tipado, cada variable que utilizamos en ABAP tiene un tipo específico, es decir que una variable de tipo fecha sólo podrá contener valores numéricos en un formato correspondiente o para guardar un nombre se debe utilizar una variable de tipo cadena de caracteres.
El lenguaje de programación ABAP divide los tipos de datos en dos grupos:
Tipos completos
Tipos incompletos
La diferencia entre los dos grupos se debe a la longitud del dato. En los tipos completos los tipos de datos tienen una longitud fija establecida por el sistema estándar y cuando declaramos una variable de un tipo completo ya tenemos la longitud del dato.
En los tipos incompletos, la longitud del dato no viene fijada por el sistema estándar y será el programador el que tiene la obligación de especificar la longitud del dato en el momento de la declaración de la variable.
Dentro de los tipos de datos completos estándar tenemos a los siguientes 8 tipos:
- D — Es el tipo de datos para fechas, el cual tiene el formato AAAAMMDD con una longitud fija de 8 dígitos, donde AAAA representa el año, MM representa el mes y DD representa el día.
- T — Es el tipo de datos para la hora, el cual tiene el formato HHMMSS con una longitud fija de 6 dígitos, donde HH representa la hora, MM representa los minutos y SS representa los segundos.
- I — Es el tipo de datos para los números enteros, el cual tiene una longitud fija de 4 bytes.
- F — Es el tipo de datos para los números de punto flotante o decimales, el cual tiene una longitud fija de 8 bytes.
- DECFLOAT16 — Es el tipo de datos que se utiliza para los números decimales de punto flotante, el cual tiene una longitud fija de 8 bytes.
- DECFLOAT34 — Es el tipo de datos que se utiliza para los números decimales de punto flotante, el cual tiene una longitud fija de 16 bytes.
- STRING — Es el tipo de datos que se utiliza para las cadenas de caracteres, el cual tiene una longitud dinámica.
- XSTRING — Es el tipo de datos que se utiliza para las secuencias de bytes de longitud dinámica (cadena hexadecimal).
Dentro de los tipos de datos incompletos estándar tenemos a los siguientes 4 tipos:
- C — Es el tipo de datos que se utiliza para las cadenas de caracteres, para el que se debe especificar la longitud fija.
- N — Es el tipo de datos que se utiliza para las cadenas de caracteres numéricas, para el que se debe especificar la longitud fija.
- X — Es el tipo de datos que se utiliza para la secuencia de bytes (cadena hexadecimal), para el que se debe especificar la longitud fija.
- P — Es el tipo de datos que se utiliza para los números empaquetados, para el que se debe especificar la longitud fija. En la definición de un número empaquetado, es posible que también se especifique la cantidad de puntos decimales.
Sabias que: En base a IOS 12 tipos de datos estándar completos e incompletos, que también se llaman tipos primitivos, se pueden crear tipos de datos complejos, estructuras bidimensionales u Objetos del diccionario de datos.
Ahora bien, de todos los tipos de datos que acabamos de enumerar, los tipos de datos más utilizados son siempre los mismos. Por ello vamos a ver mediante ejemplos como declarar los tipos de datos que más vamos a utilizar en nuestro trabajo del día a día como programadores ABAP
Para declarar una variable en un programa ABAP vamos a utilizar dos palabras reservadas sumamente importantes dentro del mundo ABAP, tal como son DATA y TYPE
Si deseamos declarar en un programa ABAP una variable de tipo fecha haríamos lo siguiente:
DATA: v_fecha TYPE d.
Si deseamos asignar un valor determinado a la variable al mismo tiempo que la declaramos entonces vamos a utilizar el agregado VALUE de la siguiente forma.
DATA: v_fecha TYPE d VALUE '20210726'.
Si deseamos declarar una variable de tipo hora haríamos lo siguiente:
DATA: v_hora TYPE t.
Si deseamos asignar un valor determinado a la variable al mismo tiempo que la declaramos entonces vamos a utilizar el agregado VALUE de la siguiente forma:
DATA: v_hora TYPE t VALUE '14:55:00'.
Si deseamos declarar una variable de tipo entero y asignarle un valor determinado haríamos lo siguiente:
DATA: V_cantidad TYPE i VALUE '1000'
Si deseamos declarar una variable de tipo string y asignarle un valor determinado haríamos lo siguiente:
DATA: v_texto TYPE string VALUE 'ABAP es un lenguaje de programación'.
Si deseamos declarar una variable de tipo c o caracter y asignarle un contenido determinado haríamos lo siguiente:
DATA: v_nombreyape (40) TYPE c VALUE 'Julian Alvarez'.
Importante: Cuando declaramos variables de tipo c o caracter TYPE c debemos especificar la longitud de la cadena de caracteres.
De lo contrario el sistema asumirá que su longitud es de 1 caracter.
Si deseamos declarar una variable de tipo n y asignarle un contenido determinado haríamos lo siguiente:
DATA: v_telefono (13) TYPE n VALUE '5491156859687'.
Si deseamos declarar una variable de tipo p o empaquetado y asignarle un contenido determinado haríamos lo siguiente:
DATA: v_pi TYPE p DECIMALES 11 VALUE '3.14159265359'.
Si visualizamos en un programa ABAP de prueba todas las declaraciones de datos que acabamos de mostrar veríamos lo siguiente:
REPORT zcest programa.
DATA: v_fecha TYPE d VALUE '20210726' .
DATA : v_hoza TYPE t VALUE '14:55:00' .
DATA: v_cantidad TYPE VALUE '1000' .
DATA: v_texto TYPE strIng VALUE 'ABAP es un lenguaje de programación' .
DATA: v_nombreyape (40) TYPE c VALUE 'Julian Alvarez' .
DATA : v_telefono (13) TYPE n VALUE '5491156859687'.
DATA: v_pi TYPE p DECIMALS 11 VALUE '3.14159265359'.
Por cada declaración de datos estamos utilizando una sentencia DATA diferente, por lo que al momento de ejecutarse el programa se van a ejecutar 7 sentencias diferentes. Podemos optimizar ampliamente esta forma de declarar variables de modo de especificar todas las declaraciones en una sola sentencia DATA de la siguiente manera:
REPORT ztest_programa.
DATA: v_fecha TYPE d VALUE '20210726' .
DATA: v_hora TYPE t VALUE '14:55:00' .
DATA: v_cantidad TYPE VALUE '1000' .
DATA: v_texto TYPE string VALUE 'ABAP Es un lenguaje de programación' .
DATA: v_nombreyape (40) TYPE c VALUE ' Julian Alvarez' .
DATA: v_telefono (13) TYPE n VALUE '5491156859687' .
DATA: v_pi TYPE p DECIMALS 11 VALUE '3.14159265359' .
Por cada declaración de datos estamos utilizando una sentencia DATA diferente, por lo que al momento de ejecutarse el programa se van a ejecutar 7 sentencias diferentes. Podemos optimizar ampliamente esta forma de declarar variables de modo de especificar todas las declaraciones en una sola sentencia DATA de la siguiente manera:
Otra forma de declarar variables utilizando TYPE consiste en asignarle a la variable un tipo de datos ya existente en el Diccionario de datos, es decir que ya existe en SAP.
DATA: v_nro_cliente TYPE kunnr . "Nº de cliente
Si hacemos doble clic sobre el tipo KUNNR vamos a visualizar su definición en el Diccionario de datos. Más adelante en la carrera ABAP vamos a ver en detalle todo lo relacionado con el Diccionario de datos.
Por último, también podemos declarar variables que sean de igual tipo de datos que otras variables ya creadas en el sistema. Para esto utilizamos la sentencia LIKE
En el siguiente ejemplo, declaramos la variable V_CARRID que es del mismo tipo de datos que el campo CARRID de la tabla base de datos SFLIGHT de vuelos de SAP.
DATA: v_carrid LIKE sflight - carrid. "Denominación breve compañía aérea
Tabla SFLIGHT
La tabla base de datos SFLIGHT es una tabla estándar del sistema SAP que contiene información sobre vuelos y que generalmente es utilizada para realizar programas de prueba o demo en el sistema.
"Tal como vimos tenemos la posibilidad de crear variables en nuestros programas ABAP utilizando las sentencias TYPE y LIKE para especificar el tipo de dato de la variable, ahora debemos tener claro cual es exactamente la diferencia entre declarar una variable utilizando TYPE o LIKE, con TYPE: podemos declarar una variable tal como vimos de dos formas una de ellas es utilizando los tipos de datos estándar del sistema ya sean los completos y los incompletos la otra forma de declarar una variable con TYPE: es utilizando un tipo de dato ya existente en el diccionario de datos está última forma de declarar con TYPE tiene una gran ventaja por un lado y una gran ventaja por el otro lo bueno es que estamos reeutilizando tipos de datos ya existentes lo cual es positivo ya que esto ayuda a mejorar la performance del sistema lo malo o negativo es que si alguien modifica ese tipo de datos SAP esto va a impactar en nuestro programa donde utilizamos ese tipo de datos por lo cual va a dejar de funcionar tal y como lo deseamos algo muy similar ocurre cuando utilizamos LIKE: para declarar variables en nuestros programas ya que por un lado reeutilizamos los tipos de datos lo cual es muy positivo pero, por otro lado esto es muy peligroso ya que si alguien modifica a futuro ese tipo de datos en el sistema entonces ese cambio va a impactar en todos los programas en donde se utilice e tipo de dato"
2 | Las estructuras de datos
Hasta ahora declaramos tipos de datos simples, pero también existe la posibilidad de declarar tipos de datos que están compuestos por varios tipos de datos diferentes, tal como es el caso de las Estructuras
Estructura
Es un tipo de dato compuesto que está formado por un conjunto de campos relacionados, cuyos componentes pueden ser simples campos, otras estructuras o inclusive tablas.
Tal como sucede con las variables, vamos a declarar una estructura en el programa ABAP donde deseamos utilizarla y la misma existirá en memoria mientras dura la ejecución del programa.
Las estructuras se utilizan principalmente cuando trabajamos con tablas internas, concepto que veremos en detalle más adelante en el curso.
Existen cuatro formas de declarar una estructura en un programa ABAP:
La primera es utilizando la palabra clave DATA En el siguiente ejemplo declaramos una estructura de vuelos que tendrá los mismos campos que tiene la tabla base de datos de vuelos SFLIGHT.
* Estructura vuelos
DATA: wa_vuelos TYPE sflight.
En la segunda forma también utilizamos la palabra clave DATA pero vamos a declarar una estructura de vuelos solo con ciertos campos. Para declarar cada uno de los campos de la estructura utilizamos tipos de datos ya existentes en SAP.
También podemos declarar la estructura tal como hicimos en el ejemplo anterior pero utilizando los tipos de datos completos o incompletos estándar de SAP.
Finalmente la cuarta forma de declarar una estructura es utilizando TIPOS, que son formatos de estructuras que pueden ser utilizados por cualquier otra estructura sin necesidad de reescribir el código. Para esto se utiliza la palabra reservada TYPES.
"Tal como acabamos de ver existen 4 formas diferentes de declarar una estructura en un programa ABAP esta misma situación de tener varias opciones para declarar lo mismo también se da cuando declaramos variables en los programas te preguntaras cual es la forma recomendada de todas y la respuesta es depende del caso, según la situación va a recomendar utilizar una forma de declaración u otra pero, si tenemos que generalizar podemos llegar a la conclusión que una de las más recomendadas desde el punto de vista de la reutilización es la declaración de las estructuras con tipos es decir la cuarta forma de declaración que explicamos"
3 | Las constantes
Constante
Es una variable que se declara dentro de un programa y cuyo valor permanecerá tal como lo indica su nombre constante a lo largo de la ejecución del programa.
Para su declaración se utiliza la palabra reservada CONSTANTS, debemos especificar el tipo de datos de la constante y también el valor que tendrá la constante a lo largo de la ejecución del programa.
Si declaramos una constante de un tipo de datos incompleto además deberemos especificar su longitud tal como vemos en la siguiente imagen entre paréntesis:
CONSTANTS: TYPE c_x (1) TYPE c VALUE 'x'.
Si declaramos una constante de un tipo de datos completo entonces no será necesario especificar su longitud tal como vemos en la siguiente imagen:
CONSTANTS: c_nombre TYPE string VALUE 'Ezequiel' .
Ideas: La utilización de constantes ayuda a que el mantenimiento de las programas ABAP sea más sencillo, porlo tanto utilizar constantes en lugar de textos entre comillas simples es considerada una buena práctica de programación.
4 | Los include de datos y de subrutinas
Hasta ahora vimos que dentro de un programa ABAP las declaraciones de datos se ubican al comienzo del programa, es decir luego de la sentencia REPORT y antes de la declaración de cada uno de los eventos del programa.
Esta situación en un programa ABAP que tiene pocas líneas de código y de baja complejidad no genera ningún tipo de complicaciones, en cuanto a la comprensión del objetivo del programa, ya que simplemente visualizando rápidamente el código ABAP del programa vamos a comprender de qué se trata el mismo.
Pero pensemos lo que sucede en un programa ABAP con muchas líneas de código: por ejemplo más de 1000 líneas, de cierta complejidad. En este caso posiblemente tengamos más de 100 líneas de código de declaraciones de datos, por lo que visualizar el programa con el objetivo de comprender su funcionalidad se vuelve más complejo.
Existe un tipo de programa ABAP que nos ayuda mucho en esta tarea de hacer que los programas sean fáciles de comprender y por lo tanto fáciles de modificar o mantener. Estamos hablando de los Includes.
Include
Es un tipo de programa u objeto ABAP que se utiliza para modularizar los programas de manera que estos resulten más legibles y mantenibles.
Existen dos tipos de INCLUDES. Ellos son:
- INCLUDE de datos: se utiliza para agrupar las declaraciones de datos.
- INCLUDE de subrutinas: se utiliza para agrupar las declaraciones de subrutinas, concepto que veremos en detalle más adelante.
En este momento nos concentraremos en los Include de datos. Para crear un include de datos lo que debemos hacer es escribir, luego de la sentencia REPORT, la palabra reservada INCLUDE seguida del nombre del include de datos.
Al hacer doble clic sobre el nombre del include ZTEST_PROGRAMA_DATOS veremos la siguiente ventana de diálogo donde se nos consulta si deseamos crear el objeto, por lo que hacemos clic en el botón Sí.
Luego veremos la siguiente ventana de diálogo que nos muestra el objeto que será creado. Aquí podemos modificar el título por defecto que propone el sistema. En Tipo verificamos que estamos creando un programa de tipo Include. Finalmente hacemos clic en el botón Grabar.
A continuación, asignamos un paquete al include de datos y grabamos.
Creamos una nueva orden de transporte y la asociamos al include de datos.
Y finalmente habremos creado el include Z TEST_PROGRAMA_DATOS
Ahora lo que vamos a hacer es copiar todas las declaraciones de datos que se encuentran en el programa principal ZTEST PROGRAMA y las vamos a pegar en el include de datos Una vez hecho esto lo que hacemos es borrar todas las declaraciones de datos del programa principal y activamos tanto el include como el programa principal.
El programa principal ZTEST PROGRAMA queda reducido a únicamente dos líneas de código, lo cual facilita ampliamente su comprensión y modificación.
Ahora que ya sabemos cómo crear un include de datos entonces la próxima vez que creemos un programa ABAP nuevo, inmediatamente luego de la creación del programa vamos a declarar y crear un include de datos, de modo que todas las declaraciones de datos que vayamos haciendo las vamos a ir declarando en el include.
Sabias que: La utilización de INCLUDES es considerada una buena práctica de programación.
5 | Las variables del sistema
A parte de las variables que define el programador ABAP en el programa, existen otras variables que han sido definidas por el sistema y que son de gran utilidad dentro de los programas ABAP
Estas variables se encuentran en la tabla base de datos SYST y contienen información que va desde la hora del sistema: a saber, si se ejecutó correctamente una sentencia ABAP o una actualización a una tabla base de datos. Su contenido no puede ser modificado en los programas, sino que cambia simplemente con la ejecución de los mismos.
Tablas útiles: Tabla SYST
La tabla base de datos SYST almacena a las variables del sistema de un programa ABAP
Analicemos a continuación las variables del sistema más comúnmente utilizadas:
- SY-SUBRC: es sin dudas la más importante de todas las variables del sistema. Se la utiliza para chequear posteriormente a la ejecución de un sentencia ABAR si el resultado de la ejecución fue exitoso o no.
Si luego de ejecutarse una sentencia ABAP el resultado de la ejecución fue exitoso; entonces la variable SY-SUBRC tendrá el valor cero y si no es exitoso entonces la variable SY-SUBRC tendrá un valor distinto de cero.
- SY-DATUM: esta variable del sistema contiene la fecha del sistema en el formato AAAAMMDD. Es una variable sumamente útil en nuestro trabajo del día a día como programadores ABAP.
- SY-UZEIT: esta variable del sistema contiene la hora del sistema en el formato HHMMSS.
"Como vimos anteriormente la variable del sistema SY-UZEIT nos proporciona la hora actual del sistema al ejecutar un programa si realizamos un debug a un programa veremos siempre que el contenido del SY-UZEIT será el mismo a lo largo de todo el debug, supongamos que se nos solicita realizar un programa y se nos pide que imprimamos en pantalla el tiempo que tarda el programa en ejecutar para resolver este requerimiento sabemos que la hora de inicio de la ejecución del programa la podemos obtener de la variable del sistema SY-UZEIT y para obtener la hora del fin del programa es decir justo antes de que finalice el mismo debemos actualizar el contenido de la variable del sistema SY-UZEIT esto lo hacemos ejecutando la sentencia GET TIME la cual actualizara la hora actual del sistema".
- SY-TABIX: esta variable del sistema contiene el índice de una tabla interna. Más adelante veremos en detalle todo lo relativo a tablas internas.
 
 
 
Sobre el autor
Publicación académica de Gustavo Jose Rondon Hernandez, en su ámbito de estudios para la Carrera Consultor ABAP Nivel Inicial.
Gustavo Jose Rondon Hernandez
Profesión: Becario - España - Legajo: WF47H
✒️Autor de: 33 Publicaciones Académicas
🎓Egresado del módulo:
Disponibilidad Laboral: FullTime
Presentación:
Soy informático con 10 años de experiencia en el área de tecnología, tengo un master en sap business intelligence sap bw & sap bi-bo en la salle barcelona.
Certificación Académica de Gustavo Rondon
























