jueves, 14 de noviembre de 2013

Declaración de tablas internas (dos métodos)

Una tabla interna se caracteriza por tener una agrupación de datos con una misma estructura. Existen dos formas de declarar una tabla interna, para ello vamos a ver cómo se hace con esta sencilla tabla:

Nombre Apellido Teléfono
Juan Pérez 612345678
Lucas García 698765432
María Gutiérrez 600111222

Primera forma:

REPORT  z_tabla1.

* Tipos
TYPES: BEGIN OF g_ty_encabezado,
  nombre(20) TYPE c,
  apellido(20) TYPE c,
  telefono(9) TYPE n,
END OF g_ty_encabezado.

TYPES: g_tt_mitabla TYPE TABLE OF g_ty_encabezado.

* Declaración de variables
DATA: g_st_encabezado TYPE g_ty_encabezado,
      g_it_mitabla TYPE g_tt_mitabla.

* Rellenado de la tabla
g_st_encabezado-nombre = 'Juan'.
g_st_encabezado-apellido = 'Pérez'.
g_st_encabezado-telefono = '612345678'.
APPEND g_st_encabezado TO g_it_mitabla.

g_st_encabezado-nombre = 'Lucas'.
g_st_encabezado-apellido = 'García'.
g_st_encabezado-telefono = '698765432'.
APPEND g_st_encabezado TO g_it_mitabla.

g_st_encabezado-nombre = 'María'.
g_st_encabezado-apellido = 'Gutiérrez'.
g_st_encabezado-telefono = '600111222'.
APPEND g_st_encabezado TO g_it_mitabla.

* Mostrar en pantalla la tabla
LOOP AT g_it_mitabla INTO g_st_encabezado.
  WRITE:/ g_st_encabezado-nombre,
          AT 22 g_st_encabezado-apellido,
          AT 44 g_st_encabezado-telefono.
ENDLOOP.

Segunda forma:

REPORT  z_tabla2.

* Declarado de variables
DATA: BEGIN OF g_it_mitabla OCCURS 0,
    nombre(20) TYPE c,
    apellido(20) TYPE c,
    telefono(9) TYPE n,
END OF g_it_mitabla.

* Rellenado de la tabla
g_it_mitabla-nombre = 'Juan'.
g_it_mitabla-apellido = 'Pérez'.
g_it_mitabla-telefono = '612345678'.
APPEND g_it_mitabla.

g_it_mitabla-nombre = 'Lucas'.
g_it_mitabla-apellido = 'García'.
g_it_mitabla-telefono = '698765432'.
APPEND g_it_mitabla.

g_it_mitabla-nombre = 'María'.
g_it_mitabla-apellido = 'Gutiérrez'.
g_it_mitabla-telefono = '600111222'.
APPEND g_it_mitabla.

* Mostrar en pantalla la tabla
LOOP AT g_it_mitabla.
  WRITE:/ g_it_mitabla-nombre,
          AT 22 g_it_mitabla-apellido,
          AT 44 g_it_mitabla-telefono.
ENDLOOP.

Se aprecia que en el primer método se crea primero el encabezado y la tabla con TYPES, y a continuación se declaran las variables. Sin embargo, en el segundo método se crea directamente la tabla.

Nótese que a la hora de hacer un LOOP a la tabla, en el primer método se indica la tabla y el encabezado, mientras que en el segundo caso sólo se indica el nombre de la tabla, ya que el nombre del encabezado y tabla interna es el mismo.

0 comentarios :

Publicar un comentario