Logali Training
Declaraciones en línea

Declaraciones en línea

Desde la versión 7.40, SP08 podemos utilzar declaraciones en línea con el operador de declaración DATA (…)

  • Sintaxis

SELECT field1, field2, …

  FROM database_table

INTO TABLE @DATA(internal_table)…

SELECT SINGLE field1, field2, …

FROM database_table

INTO @DATA(structure)…

  • Efecto

Una expresión de declaración con el operador de declaración DATA declara una variable utilizada como un operando en la posición de escritura actual. La variable declarada es visible estáticamente en el programa desde la ubicación DATA(var) y es válida en el contexto actual. La declaración se realiza cuando se compila el programa, independientemente de si la declaración se ejecuta realmente.

La tabla interna del primer SELECT declarada con @DATA(internal_table) va a tener como componentes de su línea las columnas a seleccionar: field1, field2, etc. del mismo tipo que las columnas de base de datos.

En el segundo SELECT se declara una estructura que va a contener como componentes las columnas: field1, field2, etc.

  • Notas

Una declaración en línea de una variable generalmente puede interpretarse como una forma abreviada de una declaración de declaración utilizada como un prefijo directo. Las excepciones a esta regla ocurren solo si se usa un objeto de datos con un nombre idéntico de un contexto más global en la misma declaración.

  • Caso práctico

Primero veamos cómo se leía sin la declaración en línea en una tabla interna las columnas MATNR, LAEDA y MEINS. Para tener una tabla interna con las tres columnas necesitamos una estructura definida en el diccionario de datos o un tipo local y en base a esto se puede realizar la declaración de la tabla interna. El siguiente código realiza esta lógica:

TYPES: BEGIN OF gty_materials,

matnr TYPE matnr,

laeda TYPE laeda,

meins TYPE meins,

END OF  gty_materials.

DATA gt_materials TYPE STANDARD TABLE OF gty_materials.

SELECT matnr laeda meins

FROM mara

INTO TABLE gt_materials

UP TO 5 ROWS.

 

En cambio, con la declaración en línea no necesitamos crear el tipo local y tampoco declarar la tabla interna.

SELECT matnr, laeda, meins

FROM mara

INTO TABLE @DATA(gt_materials)

UP TO 5 ROWS.

Las dos implementaciones devuelven el mismo resultado. Con la declaración en línea @DATA tenemos un código mucho más sencillo y fácil de implementar.

 

 

Gheorghe Valer Scurtu

Añadir comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Cursos Destacados

Síguenos

Si desea estar informado de nuestros nuevos cursos, obtener promociones o desea recibir algún tipo de información.