Introducing ABAP Syntax

Objectives

After completing this lesson, you will be able to:
  • Explicar los conceptos básicos de la sintaxis ABAP
  • Definir tipos de datos, variables, constantes y literales, y sentencias encadenadas

Aspectos básicos de la sintaxis ABAP

Resumen

Al final de este módulo, el programador principiante trabajará con los conceptos básicos de la sintaxis ABAP, como tipos de datos, variables, constantes y literales, sentencias encadenadas, añadiendo comentarios al código fuente, realizando cálculos aritméticos, utilizando información del sistema, depurando un programa, creando una lista ABAP y procesando cadenas de caracteres utilizando el lenguaje ABAP.

Características básicas del lenguaje ABAP

El lenguaje ABAP comprende frases individuales (sentencias). Las cosas importantes que se deben recordar sobre las sentencias ABAP son las siguientes:

  • El código ABAP consta de sentencias individuales
  • La primera palabra de una sentencia se denomina palabra clave ABAP
  • Cada extracto finaliza con un período
  • Un espacio debe separar dos palabras
  • Las sentencias se pueden sangrar para mejorar la legibilidad del código
  • Puede contener adiciones y operandos (según la palabra clave utilizada)
  • Puede abarcar varias líneas
  • Las palabras clave, las adiciones y los operandos pueden utilizar mayúsculas o minúsculas
  • El sistema de tiempo de ejecución ABAP no distingue entre casos. Es habitual escribir palabras clave y sus adiciones en mayúsculas y operandos en minúsculas.

Objetos de datos en ABAP

Variables, constantes y literales

ABAP conoce tres tipos de objetos de datos: variables, constantes y literales

Un objeto de datos en código ABAP representa una sección reservada de la memoria del programa. ABAP conoce tres tipos de objetos de datos: variables, constantes y literales.

Variables
Una variable es un objeto de datos con contenido que puede cambiar durante el tiempo de ejecución. Una variable se identifica con un nombre. El nombre también se utiliza para dirigirse al objeto de datos en tiempo de ejecución. El valor inicial de una variable ABAP está bien definido.
Constantes
Las constantes son como variables. Pero, a diferencia de las variables, el valor está codificado de forma fija en el código fuente y no debe modificarse durante el tiempo de ejecución. Al igual que las variables, las constantes tienen un nombre con el que se pueden reutilizar.
Literales

El valor de los literales también está codificado de forma fija en el código fuente. A diferencia de las constantes, los literales no tienen un nombre. Debido a eso, no se puede reutilizar un literal. Utilice solo literales para especificar los valores para las constantes y los valores iniciales para las variables.

Los objetos de datos ABAP siempre se tipifican: cada objeto de datos se basa en un tipo de datos que determina la información que puede contener. El tipo de datos de un objeto de datos ABAP permanece igual durante la ejecución de un programa.

Declaración de variables

Las variables se declaran utilizando DATA, TYPE y, opcionalmente, la palabra clave VALUE

Se declara una variable en el código ABAP con la palabra clave DATA.

Una sentencia DATA consta de las siguientes partes:

DATA

La palabra clave DATA va seguida del nombre de la variable. El nombre de la variable puede tener hasta 30 caracteres de longitud. Puede contener los caracteres A-Z, los dígitos del 0 al 9 y el carácter de subrayado. El nombre debe comenzar con una letra o un guion bajo.

TIPO
El tipo de variable se especifica después del suplemento TYPE. En el ejemplo, se utilizan los tipos integrados I (para números enteros) y cadena (cadena de caracteres con longitud variable).
VALUE
El suplemento VALUE es opcional y puede utilizarlo para especificar un valor de inicio para la variable. Si falta VALUE, la variable se crea con un valor inicial que depende del tipo técnico de la variable.

Utilizar tipos de datos

ABAP admite 13 tipos integrados o tipos definidos por el usuario utilizando la palabra clave TYPES o el Dictionary ABAP

ABAP ofrece las siguientes fuentes de tipos de datos:

ABAP integrado (tipos ABAP predefinidos)

ABAP tiene un conjunto de 13 tipos de datos predefinidos para objetos de datos simples numéricos, alfanuméricos y binarios.

Sentencias TYPES

La sentencia TYPES le permite definir tipos de datos predefinidos y reutilizarlos en diferentes lugares, dependiendo de la ubicación de la definición.

Dictionary ABAP
El Dictionary ABAP forma parte del Repository ABAP. Entre otras cosas, gestiona tipos de datos globales disponibles en todo el sistema. Los tipos de Dictionary ABAP no solo definen propiedades técnicas, sino que también añaden información semántica, por ejemplo, etiquetas. Los tipos de Dictionary ABAP son especialmente útiles al implementar interfaces de usuario.

ABAP integrado (tipos ABAP predefinidos)

Ejemplos de tipos integrados

Algunos tipos ABAP estándar importantes (tipos de datos integrados) se enumeran en la figura. Los tipos ABAP se clasifican como tipos de datos completos o incompletos. Los tipos de datos completos ya contienen especificaciones de longitud fija específicas del tipo. Los tipos de datos incompletos tienen una longitud predeterminada, pero permiten que se especifique una longitud diferente. En el caso del tipo P, también puede especificar una cantidad de decimales. 

Tipos ABAP completos

TIPO CADENA

Un campo del tipo cadena es un campo alfanumérico de longitud variable. El sistema de tiempo de ejecución ABAP asigna y libera memoria para optimizar la gestión de variables de cadena. No puede influir en este comportamiento directamente. La longitud máxima de una cadena está sujeta a las opciones que configure el administrador del sistema. Sin embargo, en la práctica, hablamos sobre cadenas de longitud ilimitada.

TYPE I

Un campo del tipo I es un campo numérico que contiene un número entero. El sistema asigna 4 bytes (32 bits) para un campo de este tipo que permite valores entre -2^31 y +2^31.

TIPO D

Un campo del tipo D representa una fecha. En ABAP, la fecha siempre tiene el formato AAAMMDD (sin separadores). El sistema convierte este formato según la configuración regional actual antes de que el valor aparezca en la interfaz de usuario. Del mismo modo, cuando el usuario introduce una fecha, el sistema la convierte al formato ABAP antes de empezar a procesarla.

TIPO T

Un campo del tipo T representa una hora. En ABAP, tiene el formato HHMMSS (sin separadores en formato de 24 horas). Si la configuración regional actual utiliza un formato de 12 horas, el sistema convierte los valores automáticamente.

Tipos ABAP incompletos

TIPO C
Un campo del tipo C es un campo alfanumérico de longitud específica. Especifique la longitud en caracteres; el sistema de tiempo de ejecución asigna el doble de bytes para acomodar el campo. Este tipo se utiliza cuando es importante una longitud fija.
TIPO N

Un campo del tipo N es un campo de caracteres de una longitud específica que solo contiene dígitos. Este campo debe contener una secuencia de dígitos que no desea considerar como un número y realizar cálculos con; por ejemplo, podría ser un número de personal o un centro de coste.

TIPO P

Un campo del tipo P (P para "número empaquetado") es un campo que contiene un valor numérico con un número especificado de dígitos y una posición decimal. Utilice este tipo para números con decimales o cuando el tipo de rango de valores I no sea suficiente.

Uso de tipos locales

Los tipos definidos por el usuario se definen mediante la palabra clave TYPES

Ejemplo

Code Snippet
12
TYPES my_type TYPE p LENGTH 3 DECIMALS 2. DATA my_var TYPE my_type.

En lugar de utilizar tipos integrados en la sentencia DATA directamente, puede utilizar la sentencia TYPES para definir primero el tipo. A continuación, puede utilizar el tipo en una sentencia DATA después del suplemento TYPE.

Uso de tipos globales: Dictionary ABAP

Ejemplo de un tipo definido por el usuario en el Dictionary ABAP

En un sistema SAP, existen miles de entidades empresariales, como códigos de país, centros, números de material, ejercicios, centros de coste, etc. La definición de estas entidades en cada programa sería técnicamente posible utilizando los tipos ABAP integrados que acaba de ver. Sin embargo, esto podría ser muy complejo y proclive a producir errores. En su lugar, SAP proporciona el Dictionary ABAP, el archivo central para tipos de datos importantes y la herramienta que utiliza para crear tablas de base de datos.

En el Dictionary ABAP, las entidades empresariales individuales están descritas por elementos de datos. En la variable de ejemplo, la variable aeropuerto se tipifica con el elemento de datos /DMO/AIRPORT_ID.

Al pulsar la tecla F2 para visualizar los detalles del tipo de datos, puede ver que, técnicamente, este tipo es un carácter de longitud 3. Además, el elemento de datos proporciona la descripción "Escenario de referencia de vuelo: ID de aeropuerto" y las cuatro etiquetas de campo de diferente longitud.

Al pulsar la tecla F3 para navegar a la definición del tipo, se abre una nueva vista con el editor para los elementos de datos.

Constantes y literales

Declaración de constantes

Las constantes se pueden definir mediante la palabra clave CONSTANTS

Constantes

Una constante es un objeto de datos con un valor de codificación fija que no se debe modificar durante el tiempo de ejecución. Cualquier acceso de escritura a una constante provocará un error de sintaxis.

En ABAP, declare una constante utilizando la palabra clave CONSTANTS. Una sentencia CONSTANT consta de las mismas partes que una sentencia DATA. La única diferencia es que el suplemento VALUE es obligatorio.

Puede utilizar el suplemento VALUE en la forma especial VALUE IS INITIAL, si el valor de la constante debe ser el valor inicial específico del tipo. Los valores iniciales suelen ser cero para los tipos numéricos y un espacio para los tipos de caracteres. No hay valores nulos en ABAP.

Declaración de literales

ABAP admite literales numéricos, de texto y de string

Literales

Los literales son objetos de datos anónimos con un valor de codificación fija. Los literales a menudo se utilizan para definir valores no iniciales para constantes y valores iniciales no iniciales para variables.

Técnicamente, puede utilizar literales en cualquier lugar de su código. Para dar soporte a la legibilidad y mantenimiento, se recomienda definir y utilizar constantes.

ABAP tiene tres tipos de literales:

  • Los literales numéricos son números enteros con o sin signos. Los literales numéricos suelen tener el tipo de datos I. Si el valor es demasiado grande para el tipo de datos I, se utiliza el tipo p con una longitud suficiente y sin decimales.
  • Los literales de texto son tipos de caracteres en un par de comillas simples ( ‘ ).
  • Los literales de string son del tipo STRING y están entre comillas invertidas ( ` ). Deben utilizarse para proporcionar valores para objetos de datos de tipo string.

Sentencias encadenadas

Ejemplo de una sentencia TYPES encadenada

También puede definir tipos estructurados en el código ABAP mediante la sentencia TYPES. La definición de estructura comienza con la sentencia TYPES BEGIN OF <structure type name>.y termina con TYPES END OF <structure type name>. Entre, se nombra cada componente y se especifica su tipo en una sentencia TYPES adicional.

Un formulario compacto utiliza la palabra clave TYPES solo una vez, seguido de dos puntos ( : ). El suplemento BEGIN OF, el suplemento END OF y las definiciones de componente entre ellos se separan con comas.

Esto se conoce como una declaración de cadena.

Nota

En el pasado, las sentencias de cadena se utilizaban mucho en ABAP. En estos días, solo se recomiendan combinar sentencias que estén estrechamente relacionadas.

Comentarios en ABAP

Ejemplo de un comentario utilizando el símbolo de estrella

Un comentario es una explicación que se añade a un programa para ayudar a los demás a entender el código. Los comentarios son un fragmento de código fuente que es ignorado por el compilador o intérprete.

En ABAP, existen dos formas diferentes de definir un fragmento de código fuente como comentario:

  • El signo de estrella (*) en la primera columna identifica toda la línea como un comentario
  • El signo de comillas dobles (") identifica el resto de la línea, es decir, el código a la derecha como comentario