
TABLA INTERNA: Es un objeto de datos que permite guardar grandes cantidades de registro de datos con la misma estructura. El uso que se le da a una tabla interna es para:
- Almacenar temporalmente los datos de las bases de datos para un futuro.
- Estructurar y formatear datos que se mostraran como salida del programa.
- Formatear datos para ser utilizados por otros servicios.
DECLARACION DE UNA TABLA INTERNA: La sintanxis es la siguiente:
DATA: BEGIN OF <tabla> OCURRS <n>,
<def_campo>
END OF.
Asi se defina una tabla interna con n líneas mas una cabecera o area de trabajo.
OCURRS no limita el tamaño de la tabla sino la cantidad de registros que se guardan en memoria simultaneamente. Generalmente se especifica con la cantidad 0 que permite trabajar con tablas de gran cantidad de registros.
Podemos declarar una tabla de dos formas:
1.- DATA: BEGIN OF ti_proveedores OCURRS 0,
nombre(30) TYPE c,
apellido(30) TYPE c,
dni(8) TYPE c,
END OF ti_proveedores.
2.- DATA: BEGIN OF wa_proveedores,
nombre(30) TYPE c,
apellido(30) TYPE c,
dni(8) TYPE c,
END OF wa_proveedores.
DATA: ti_proveedores LIKE STANDARD TABLE OF wa_proveedores.
LLENADO DE UNA TABLA INTERNA: Utilizamos la sentencia APPEND TO.
- APPEND TO: añade un registro o tabla interna en la última posición con los registros que tenemos en el area de trabajo.
Ej: CLEAR wa_proveedores
wa_proveedores-nombre = 'Ernesto'.
wa_proveedores-apellido = 'Villanueva'.
wa_proveedores-dni = '14587963'.
ORDENAMIENTO DE UNA TABLA INTERNA: Usamos la sentencia SORT.
EJ: SORT ti_proveedores BY dni DESCENDIG.
DESCENDING ordena de mayor a menor y ASCENDING de menor a mayor.
PROCESAMIENTO DE UNA TABLA INTERNA: Usamos la sentencia LOOP-ENDLOOP.
EJ: LOOP AT ti_proveedores INTO wa_proveedores.
WHERE NOT nombre IS INITIAL.
ENDLOOP.
LECTURA DE UNA TABLA INTERNA:
- READ TABLE: se usa para leer un registro de una tabla sin tener que recorrerla.
EJ: READ TABLE ti_proveedores INTO wa_proveedores
WITH KEY nombre = 'Ariel'.
- INDEX: se utiliza para leer datos que se encuentran en una posicion particular de la tabla.
EJ: READ TABLE ti_proveedores INTO wa_proveedores INDEX 1.
- BINARY SEARCH: agregada a la sentencia READ TABLE hace que la busqueda sea mas eficiente.
MODIFICANDO UNA TABLA INTERNA:
- MODIFY: sentencia utilizada para modificar el registro de una tabla interna.
- INSERT: inserta un registro en una posicion determinada de una tabla interna.
- REFRESH: borra todo el contenido de una tabla interna.
- DESCRIBE TABLE: se usa para saber cuantos registros tiene una tabla interna.