✒️ABAP La declaración de datos
ABAP La declaración de datos
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.
ABAP forma parate de los lenguajes de progamación tipados tal como son C o JAVA por otro lado, 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. en ABAP tiene un tipo especifico, es desir que una variable de tipo fecha solo podrá contener valores numéricos en un formato correspondiente o para guardar un nombre se debe utilizar una variable de tipo cadena de caracteres.
- Tipos completos
- Tipo incompletos
La diferencias entre los dos grupor se debe, en los tipos completos los tipos de datos tienen una longitud fija establecida por el sistema estándar y cuando declaramos una varible de un tipo completo ya tenemos la longituddel 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 espesificar la longitud del dato en el momento de la declaracion de la variable.
Dentro de los tipos de datos completos estándar tenemos a los siguentes 8 tipos:
- D - es el tipo de datos para fechas, el formato AAAMMDD,donde AAAA representa el año, MM representa el mes y DD representa el diá.
- T - es el tipo de dato para la hora, el formato HHMMSS, 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 tipó de datos que se utiliza para los númros 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 lomgitud 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 dato 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 pocible que también se especifique la tantidad de puntos decimales.
EN base alos 12 tipo 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 para declararuna bariable un programa ABAP vamos a utilizat dos palabras reservadas sumamente importante dentro del mundo ABAP, tal como son DATA y TYPE.
Si deseamos declarar una variable tipo fecha seria:
DATA: v_fecha TYPE d.
Si deseamos utilizar un valor determinado a la variable al mismo tiempo que la declaramos entonces vamos a utilizar el agregado VALUE y se seria
DATA: v_fecha TYPE d VALUE '20240412'.
Si desiamos declarar un valor de tipo hora ariamos lo siguiete:
DATA: v_hora TYPE t.
Si deseamos asignarle un valor determinado a la variable al mismo tiempo que la declaramos entonces vamos a utilizar el agregado VALUE :
DATA: v_hora TYPE t VALUE '10:09:00'.
Si deseamos declarar una variable de tipo entero y asignarle un valor determinado hariamos lo siguiente:
DATA: v_cantidad TYPE i VALUE ' 100'.
Si deseamos declarar una variable de tipo STRINg y asignarle un valor determinado hariamos lo siguiente:
DATA: v_texto TYPE string VALUE 'ABAP es un lenguaje de programación'.
Si deseamos declarar una varieble de tipo C o caracter y asignarle un contenido hariamos lo siguiente:
DATA: v_nombreyape (40) TYPE c VALUE ' Julian Avarez'.
Cuando declaramos variable de tipo C o caracter TYPE C devemos espesificar la longitud de la cadena de caracteres. De lo contrario el sistema asumirá su longitud es de 1 varacter.
Si deseamos declarar una variable de tipo N y asignamos un contenido determinado hariamos 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 hariamos lo siguiente:
DATA: v_pi TYPE p decimales 11 VALUE '3.1416925659'.
Por cada declaracion de datos estamos utilizando una sentencia DATA diferente. pero podemos optimizar ampliamente todos las declaraciones en una sola sentencia DATA de la siguiente forma:
DATA: v_fecha TYPE d VALUE '20240412'.
v_hora TYPE t VALUE '10:09:00'.
v_cantidad TYPE i VALUE ' 100'.
v_texto TYPE string VALUE 'ABAP es un lenguaje de programación'.
v_nombreyape (40) TYPE c VALUE ' Julian Avarez'.
v_telefono (13) TYPE n VALUE '5491156859687'.
v_pi TYPE p decimales 11 VALUE '3.1416925659'.
Otra forma de declarar variables utilizando TYPE consiste en asignarle a la variable un tipo de dato ya existente en el diccionario de datos, es desir que ya existe en SAP.
DATA: v_nro_cliente TYPE kunnr. "N° de cliente
Por último, tambien podemos declarar variables que sean de igual tipo de datos que otras variable ya creadas en el sistema. para esto utilizamos LIKE.
SI queremos declarar 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 de la campañia aérera
Las estructuras de datos: existe la posibilidad de declarar tipos de datos de que estan compuestos pór varios tipos de datos diferentes,
ESTRUCTURA es un tipo de dato compuestoque esta formado por un conjunto de campos relacionados, cuyos camponentes pueden ser simple campos, otras estructuras o inclusive tablas.
Existen cuatro formas de declarar una estructura en un programa ABAP:
- La primera es utilizando la palabra clave DATA declaramos una estructura de vuelos que tendrá los mismos campo que tiene la tabla base de datos de vuelos SFLIGHT
DATA: wa_vuelos TYPE sflight.
- En la segunda forma también utilizamos la palabra clave DATA para vamos a declarar una estructura de vuelo solo conciertos campos. para declarar cada uno de los campos de la estructura utilizamos tipo de dato ya existentes en SAP.
*estructura de vuelos
DATA: BEGIN OF wa_vuelos 2,
carrid TYPE s_carr_id, "denominacion breve dela compañia aérea
connid TYPE s_conn_id, "código de conexión de vuelo directo
fldate TYPE s_date, "fecha del vuelo
price TYPE s_price, "precio del vuelo
currency TYPE s_currcode, "moneda local de la compañia aérea
planetype TYPE s_planetye, "tipo de avión
END OF wa_vuelos2.
- También podemos declarar la estructura tal como hicimos en el ejemplo anterior pare utilizando los tipos de datos completos o incompletos estándar de SAP tal como vemos
*estructura de vuelos
DATA: BEGIN OF wa_vuelos 3,
carrid (3) TYPE c, "denominacion breve dela compañia aérea
connid (4) TYPE n, "código de conexión de vuelo directo
fldate TYPE d, "fecha del vuelo
price TYPE p, DECIMALES 2, "precio del vuelo
currency (5) TYPE c, "moneda local de la compañia aérea
planetype (10) TYPE c, "tipo de avión
END OF wa_vuelos3.
- Finalmente cuarta forma de declarar una estructura es utilisando TIPOS, que son formatos de estructuras que pueden ser utilizados por cualquier otra estructura sin necesidad reescribir el codigo. para esto se utiliza la palabra reservada TYPES.
*estructura de vuelos
TYPES: BEGIN OF ty_vuelos ,
carrid TYPE s_carr_id, "denominacion breve dela compañia aérea
connid TYPE s_conn_id, "código de conexión de vuelo directo
fldate TYPE s_date, "fecha del vuelo
price TYPE s_price, "precio del vuelo
currency TYPE s_currcode, "moneda local de la compañia aérea
planetype TYPE s_planetye, "tipo de avión
DATA: wa_vuelos4 TYPE ty_vuelos.
Costante: es una variable que de se declara dentro de un programa y cuyo permanecerá tal como lo indica su nombre costante a lo largo de la ejecución del programa. para su declaracion se utiliza la palabra reservada CONSTANTS.
Si declaramos una constante de un tipo de dato incompleto además debemos especificar su longitud.
CONSTANTS:c_x (1) TYPE c VALUE 'x'.
Si deceamo una costante de un tipo de datos completo entonces será necesario especificar su longitud.
COSTANTS: c_nombre TYPE VALUE 'Ezequiel'.
La utilizacion de contantes ayuda a que el mantenimiento de los programas ABAP sea mas sencillo, por lo tanto utilizar contantes en lugar de textos entre comillas simple es considerada una buena practica de programación.
Los include de datos y de subrutinas: en un programa ABAP con muchas lineas de codigo,declaraciones de datos. visualizar el progra con el objetivi de comprender su funcionalidad se vuelve mas complejo. existe un tipo de programa ABAP que nos ayuda mucho en esta tarea de hacer que los programas sean faciles de comprender y por lo tanto fáciles de modificar o mantener. Estamos hablando de los INCLUDES.
INCLUDES: es un tipo de programa u objeto ABAP que se utiliza para modularizar los programas que estos resulten más legibles y mantenibles.
Existen dos tipos de INCLUDES:
- INCLUDE de datos: se utiliza para agrupar las declaraciones de datos.
- INCLUDE de subrutinas: se utilisa para agrupar la declaraciones de subrutinas,
Para crear un include de datos lo que debemos hacer es escribir, luego de la sentencia REPOR, la palabra reservada INCLUDE seguido del nombre de incluce de datos.
REPORT ztest_prueba.
INCLUDE ztest_programa_datos.
DATA: v_facha TYPE d VALUE '20240413'.
Al hacer clic sobre el nombre del include ZTEST_PROGRAMA_DATOS veremos donde se nos consulta si deseamos crear el objeto, por lo que hacemos clic en el boton si.
Luego nos muestra el objetosque será creado. Aqui podemos modificar el titulo por defecto que propone el sistema. (verificamos que estamos creando un programa de tipo include) y final mente hacemos clic en el boton grabar. A continuacion, asignamos un paquete al iclude de datos y grabamos. Creamos una nueva orden transporte y la asociamos al include de datos. Finalmente habremos creado el include ZTEST_PROGRAMA_DATOS.
Ahora lo que hacemos es copiar todas las declaraciones de datos que se encuentra en el programa principal ZTEST_PROGRAMA y las vamos a pegar en el iclude de datos ZTEST_PROGRAMA_DATOS. luego borramos todas las declaraciones de datos del programa principal y activamos tanto el include como el programa principa.
el programa principal ZTEST_PROGRAMA queda reducido a unicamente dos lineas de codig, lo que facilita ampliamente su comprención y modificación.
La variables del sistema:
A parte de la variable que difine el programa 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 contiene información que va desde la hora del sistema , 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.
Tabla SYST: la tabla base de datos SYST almacena a las variables del sistema de un programa ABAP.
- SY-SUBRC: es sin duda el mas importante de todas las variables del sistema. se la utiliza para chequear posteriormente a la ejecución de una sentencia ABAP, si el resultado de la ejecución fue exitoso,entonces la variable tendra el valor cero y si no es exitoso entoses la variable tendra un valor distinto a cero.
- SY-DATUM: esta variable de sistema contiene la fecha del sistema en el formato AAAAMMDD.es una variable sumamenre util en nuestro trabajo del dia a dia como programadores ABAP.
- SY-UZEIT: esta variable del sistema contiene la hora del sistema en el formato HHMMSS.
- SY-TABIX: esta variable del sistema contiene el icono de una tabla interna.
 
 
 
Sobre el autor
Publicación académica de Javier Miguel Angel Barcelo, en su ámbito de estudios para la Carrera Consultor ABAP.
Javier Miguel Angel Barcelo
Profesión: Militar - Argentina - Legajo: DQ34X
✒️Autor de: 107 Publicaciones Académicas
🎓Egresado del módulo:
Disponibilidad Laboral: PartTime
Certificación Académica de Javier Angel