Introducción
Aplicación de técnicas y conceptos básicos
Trabajar con clases locales
Lectura de datos de la base de datos
Trabajar con objetos de datos estructurados
Trabajar con tablas internas complejas
Implementación de actualizaciones de base de datos mediante business objects
Descripción del modelo de programación de aplicaciones ABAP RESTful

Trabajar con objetos de datos básicos y tipos de datos

Objectives

After completing this lesson, you will be able to:
  • Declarar objetos de datos.
  • Asigne valores.

Objetos de datos en ABAP

Un objeto de datos en un programa 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 modificarse durante el tiempo de ejecución. Una variable se identifica con un nombre. El nombre también se utiliza para direccionar el objeto de datos en tiempo de ejecución. El valor inicial de una variable ABAP siempre está bien definido.

Constantes

Las constantes son similares a las 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. Por eso no se puede reutilizar un literal. Utilice solo literales para especificar los valores de las constantes y los valores iniciales de las variables.

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

Declaración de variables

Una variable en un programa ABAP se declara con la palabra clave DATA.

Una sentencia DATA consta de tres partes. Veamos cada parte con más detalle.

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, las cifras 0-9, y el guion bajo. El nombre debe comenzar con una letra o con un guion bajo.
TIPO
El tipo de la 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
La adición VALUE es opcional y puede utilizarla 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.

Fuentes de tipos de datos ABAP

ABAP ofrece las siguientes fuentes de tipos de datos:

ABAP integrado
ABAP tiene un conjunto de 14 tipos de datos predefinidos para objetos de datos numéricos simples, similares a caracteres y binarios.
Sentencia TYPES
La sentencia TYPES le permite definir tipos de datos 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 que están disponibles en todo el sistema. Los tipos de Dictionary ABAP no solo definen propiedades técnicas, sino que añaden información semántica, por ejemplo, etiquetas. Los tipos de Dictionary ABAP son especialmente útiles al implementar interfaces de usuario.

Pruébelo: TIPOS ABAP predefinidos

  1. Como en el primer ejercicio de este curso, cree una nueva clase global que implemente la interfaz IF_OO_ADT_CLASSRUN.
  2. Copie el siguiente fragmento de código en la parte de implementación del método if_oo_adt_classrun~main( ):
    Code Snippet
    12345678910111213141516171819202122232425
    * Data Objects with Built-in Types ********************************************************************** " comment/uncomment the following declarations and check the output DATA variable TYPE string. * DATA variable TYPE i. * DATA variable TYPE d. * DATA variable TYPE c LENGTH 10. * DATA variable TYPE n LENGTH 10. * DATA variable TYPE p LENGTH 8 DECIMALS 2. * Output ********************************************************************** out->write( 'Result with Initial Value)' ). out->write( variable ). out->write( '---------' ). variable = '19891109'. out->write( 'Result with Value 19891109' ). out->write( variable ). out->write( '---------' ).
  3. Pulse CTRL + F3 para activar la clase y F9 para ejecutarla como una aplicación de consola.
  4. Analice la salida de la consola. Anule el comentario de diferentes declaraciones de variable. Pruebe sus propias declaraciones para familiarizarse con los conceptos.

Constantes y literales

Declaración de constantes

Una constante es un objeto de datos con un valor de codificación fija que no debe modificarse durante el tiempo de ejecución. Cualquier acceso de escritura a una constante provoca 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 de tipo.

Literales en ABAP

Los literales son objetos de datos anónimos con un valor de codificación fija. Los literales se utilizan a menudo 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 admitir la legibilidad y la capacidad de mantenimiento, se recomienda definir y utilizar constantes en su lugar.

ABAP conoce tres tipos de literales:

  • Los literales numéricos son números enteros con o sin signo. Los literales numéricos suelen tener el tipo de datos I. Solo 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 cadenas de caracteres entre comillas simples. Los literales de texto tienen el tipo C. La longitud se deriva del contenido entre comillas. Los espacios en blanco a la derecha se ignoran.
  • Los literales de cadena son cadenas de caracteres en un par de comillas traseras (`). Los literales de string son del tipo STRING. Se deben utilizar para proporcionar valores para objetos de datos tipificados en cadena.

Pruébelo: Objetos de datos

  1. Como en el primer ejercicio de este curso, cree una nueva clase global que implemente la interfaz IF_OO_ADT_CLASSRUN.
  2. Copie el siguiente fragmento de código en la parte de implementación del método if_oo_adt_classrun~main( ):
    Code Snippet
    1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
    * Example 1: Local Types ********************************************************************** * Comment/Uncomment the following lines to change the type of my_var TYPES my_type TYPE p LENGTH 3 DECIMALS 2. * TYPES my_type TYPE i . * TYPES my_type TYPE string. * TYPES my_type TYPE n length 10. * Variable based on local type DATA my_variable TYPE my_type. out->write( `my_variable (TYPE MY_TYPE)` ). out->write( my_variable ). * Example 2: Global Types ********************************************************************** * Variable based on global type . " Place cursor on variable and press F2 or F3 DATA airport TYPE /dmo/airport_id VALUE 'FRA'. out->write( `airport (TYPE /DMO/AIRPORT_ID )` ). out->write( airport ). * Example 3: Constants ********************************************************************** CONSTANTS c_text TYPE string VALUE `Hello World`. CONSTANTS c_number TYPE i VALUE 12345. "Uncomment this line to see syntax error ( VALUE is mandatory) * constants c_text2 type string. out->write( `c_text (TYPE STRING)` ). out->write( c_text ). out->write( '---------' ). out->write( `c_number (TYPE I )` ). out->write( c_number ). out->write( `---------` ). * Example 4: Literals ********************************************************************** out->write( '12345 ' ). "Text Literal (Type C) out->write( `12345 ` ). "String Literal (Type STRING) out->write( 12345 ). "Number Literal (Type I) "uncomment this line to see syntax error (no number literal with digits) * out->write( 12345.67 ).
  3. Pulse CTRL + F3 para activar la clase y F9 para ejecutarla como una aplicación de consola.
  4. Juega con el código fuente para familiarizarte con los conceptos.
    • Anule el comentario de diferentes declaraciones de my_type y utilice F2 y F3 para analizar la definición de la variable my_variable.
    • Utilice F2 y F3 para analizar la definición de aeropuerto variable.
    • Anule el comentario de la definición de la constante c_text2 para ver el error de sintaxis.
    • Anule el comentario de la última línea de código para ver el error de sintaxis.
    • ...

Valoraciones a objetos de datos

Utilice valoraciones para modificar el valor de las variables.

Vea este vídeo para descubrir cómo.

Conversiones de tipo implícitas

Aunque ABAP es un lenguaje de programación tipificado, en una asignación de valor el tipo de la expresión fuente y el tipo de la variable de destino pueden ser diferentes. Si este es el caso, el tiempo de ejecución intenta una conversión de tipo.

Como se muestra en la figura, si es posible, intente evitar conversiones de tipo por los siguientes motivos:

  • Consumo de tiempo de ejecución adicional: los valores con conversiones de tipo requieren más tiempo de ejecución que las asignaciones de valor con tipos idénticos.
  • Posibles errores en tiempo de ejecución: algunas combinaciones de tipo de origen y tipo de destino pueden provocar errores de tiempo de ejecución. Si, por ejemplo, la variable de destino tiene un tipo numérico l y la expresión de origen tiene un tipo carácter, el tiempo de ejecución emitirá un error si no puede traducir el texto a un número.
  • Posible pérdida de información: algunas combinaciones de tipo de origen y tipo de destino no causan errores de tiempo de ejecución, pero pueden provocar una pérdida de datos. Si, por ejemplo, el origen y el destino son del tipo C, pero el tipo de la variable de destino es más corto. A continuación, el tiempo de ejecución simplemente trunca el valor de la fuente.

Restableciendo variables

La sentencia CLEAR es un tipo especial de valoración. Se utiliza para restablecer una variable a su valor inicial específico de tipo.

Nota

La sentencia CLEAR ignora el valor inicial del suplemento VALUE. Después de CLEAR, la variable siempre contiene el valor inicial específico del tipo.

Declaraciones en línea en valoraciones

Vea este vídeo para obtener información sobre las declaraciones en línea y cómo funcionan en las valoraciones.