Las tablas internas son objetos de datos estructurados para trabajar con datos en memoria en forma de filas y columnas. Usualmente todos los programas de ABAP utilizan tablas internas.
Declarar tablas internas.
Las tablas internas se declaran con la sentencia DATA, estas pueden contener o no un header line, sino declaramos un header line debemos declarar un work area, veremos más en detalle estos conceptos más adelante en este articulo. Ejemplo de una declaración de tabla interna con header line
DATA tabla_interna TYPE TABLE OF t001 WITH HEADER LINE.
Ejemplo de una declaración de tabla interna sin header line y su work area
DATA: tabla_interna2 TYPE TABLE OF t001, mi_work_area LIKE LINE OF tabla_interna2.
En los casos anteriores declaramos tablas internas con la estructura del tipo T001, pero también podemos declarar tablas internas personalizadas con los campos que deseemos, por ejemplo:
"En este caso para declarar con header line se usa OCCURS 0 DATA: BEGIN OF it_tabla_interna OCCURS 0, campo1 TYPE c LENGTH 2, campo2 TYPE i, END OF it_tabla_interna.
¿Header line o Work Area?
Los header line y work area se usan para acceder a los datos de una tabla interna, por ejemplo para poder leer los datos de una fila estos deben cargarse primero en un work area o un header line. Para entender mejor esto veamos un ejemplo.
Suponiendo que tenemos una tabla interna con 3 columnas y 4 filas, las columnas se llaman campo1, campo2 y campo2, como se ve en la siguiente imagen:
Si deseamos leer el valor “B” (columna1 fila 2), primero debemos cargar la fila completa en el header line o work area, luego si estamos utilizando header line podemos referenciar el valor en la forma tabla_interna-campo1 (nombre de tabla interna – nombre del campo), si utilizamos un work area lo hacemos de la forma work_area-campo1 (nombre del work area – nombre del campo). Veamos como se ve esto en código ABAP, primero declaramos una tabla interna:
DATA: BEGIN OF it_tabla_interna OCCURS 0, campo1 TYPE c LENGTH 2, campo2 TYPE i, campo3 TYPE c LENGTH 2, END OF it_tabla_interna.
Luego agregamos algunas filas con datos.
it_tabla_interna-campo1 = 'A'. it_tabla_interna-campo2 = '1'. it_tabla_interna-campo3 = 'x'. APPEND it_tabla_interna. it_tabla_interna-campo1 = 'B'. it_tabla_interna-campo2 = '2'. it_tabla_interna-campo3 = 'y'. APPEND it_tabla_interna.
Para cargar la fila 2 en el header line podemos utilizar el comando READ TABLE
READ TABLE it_tabla_interna INDEX 2.
Ahora podemos acceder al dato, por ejemplo vamos a imprimir en pantalla su valor.
WRITE it_tabla_interna-campo1.
Ahora ya sabes como declarar y que es una tabla interna, sabes para qué se usan y como usarlas, aunque aun falta mucho para aprender sobre como trabajar con tablas internas, pero por el momento te recomiendo hacer un programa y experimentar por tí mismo el código discutido en este artículo. Cuando domines esto y quieras aprender más lee este articulo.