ABAP CONSTANTS: Sintaxis, declaración y ejemplos de uso

Kategorie
ABAP-Statements
Veröffentlicht
Autor
Johannes

La instrucción CONSTANTS sirve para declarar constantes en ABAP. Una constante es un objeto de datos con nombre cuyo valor se establece en la declaración y no puede cambiarse durante toda la ejecución del programa.

El uso de constantes tiene varias ventajas:

  1. Legibilidad: El código se vuelve más comprensible cuando se usan nombres autoexplicativos en lugar de valores “mágicos” (p.ej. números o letras individuales) (p.ej. c_status_aprobado en lugar de 'A').
  2. Mantenibilidad: Si un valor fijo cambia (p.ej. un límite o una tasa de impuesto), solo necesita ajustarse en un lugar central – en la declaración CONSTANTS – no en cada lugar del código donde se usa.
  3. Seguridad: Protege de que valores fijos se cambien accidentalmente durante la ejecución del programa. Cualquier intento de asignar un nuevo valor a una constante resulta en un error de sintaxis.

Sintaxis

Hay varias formas de declarar constantes:

1. Declaración de una única constante

CONSTANTS <nombre_constante> TYPE <tipo_datos> [LENGTH <longitud>] [DECIMALS <decimales>]
VALUE <valor> | IS INITIAL.
  • <nombre_constante>: El nombre que recibirá la constante (debe seguir las convenciones de nombres ABAP).
  • TYPE <tipo_datos>: El tipo de datos ABAP (p.ej. I, P, C, STRING, D, T, un tipo del diccionario como T001-BUTXT o un tipo definido por el usuario).
  • LENGTH <longitud>: Especificación opcional de longitud para tipos como C, N, X, P.
  • DECIMALS <decimales>: Necesario para números empaquetados (tipo P), para establecer el número de decimales.
  • VALUE <valor>: Obligatorio (excepto con VALUE IS INITIAL). Aquí se asigna el valor fijo e inalterable. El valor debe corresponder al tipo de datos. Puede ser un literal (p.ej. 100, 'Hola', '19.99') o otra constante ya definida.
  • VALUE IS INITIAL: Asigna a la constante el valor inicial específico del tipo (p.ej. 0 para I, espacio para C, string vacío para STRING).

2. Declaración de múltiples constantes (instrucción encadenada)

CONSTANTS: <const1> TYPE <tipo1> VALUE <valor1>,
<const2> TYPE <tipo2> VALUE <valor2>,
... .

Con dos puntos después de CONSTANTS, se pueden declarar múltiples constantes separadas por comas. La instrucción se cierra con un punto.

3. Declaración de una estructura constante

CONSTANTS: BEGIN OF <nombre_estructura>,
<componente1> TYPE <tipo1> VALUE <valor1>,
<componente2> TYPE <tipo2> VALUE <valor2>,
...
END OF <nombre_estructura>.

Con esto se puede definir una estructura cuyos componentes tienen todos valores constantes. El acceso se realiza mediante <nombre_estructura>-<componenteN>.

Ejemplos

1. Constantes simples

CONSTANTS c_max_longitud TYPE i VALUE 255.
CONSTANTS c_app_name TYPE string VALUE `Mi Super Reporte`.
CONSTANTS c_espacio TYPE c LENGTH 1 VALUE ' '. " o VALUE IS INITIAL
CONSTANTS c_verdadero TYPE abap_bool VALUE abap_true. " Uso de constantes booleanas ABAP

2. Constante con decimales (Tipo P)

CONSTANTS c_iva_normal TYPE p LENGTH 8 DECIMALS 2 VALUE '0.21'. " 21% IVA

3. Instrucción encadenada para múltiples constantes

CONSTANTS: c_status_nuevo TYPE c LENGTH 1 VALUE 'N',
c_status_en_proceso TYPE c LENGTH 1 VALUE 'P',
c_status_completado TYPE c LENGTH 1 VALUE 'C',
c_euro TYPE waers VALUE 'EUR'.

4. Estructura constante

CONSTANTS: BEGIN OF c_colores,
rojo TYPE c LENGTH 1 VALUE '1',
verde TYPE c LENGTH 1 VALUE '2',
azul TYPE c LENGTH 1 VALUE '3',
END OF c_colores.

5. Uso de constantes en el código

DATA gv_status_actual TYPE c LENGTH 1.
DATA gv_longitud_texto TYPE i.
DATA gv_importe_neto TYPE p DECIMALS 2 VALUE '100.00'.
DATA gv_importe_bruto TYPE p DECIMALS 2.
gv_status_actual = c_status_en_proceso.
gv_longitud_texto = strlen( c_app_name ).
IF gv_status_actual = c_status_en_proceso.
WRITE: / 'El reporte se ejecuta con el nombre:', c_app_name.
WRITE: / 'Longitud máxima es:', c_max_longitud.
WRITE: / 'El color rojo tiene código:', c_colores-rojo.
ENDIF.
" Cálculo con constante
gv_importe_bruto = gv_importe_neto * ( 1 + c_iva_normal ).
WRITE: / 'Importe bruto:', gv_importe_bruto CURRENCY c_euro.
" ****** ERROR DE SINTAXIS ******
" El siguiente código produciría un error de sintaxis,
" ya que las constantes no pueden modificarse:
" c_max_longitud = 500.
" c_colores-rojo = 'X'.
" **************************

En resumen: La instrucción CONSTANTS es una herramienta importante en ABAP para hacer que valores fijos definidos en el código sean identificables, mantenibles y seguros. Debe usarse siempre que un valor no deba cambiar garantizadamente durante la ejecución del programa.