✒️ABAP Las tablas internas
ABAP Las tablas internas
Tablas internas:
¿Que son? Es un objeto de datos donde permite guardar en memoria grandes cantidades de registros de datos con la misma estructura.
La cantidad de registros máxima, se encuentra relacionada con los limites establecidos en la instalación del sistema.
El uso común dado es:
- Almacenamiento temporal de los datos de la base de datos para procesarlos posteriormente.
- Estructuración y formateo de datos de salida del programa (informes).
- Formatear datos y disponibilizarlos en otros servicios.
¿Como se declara una Tabla interna?
La sintaxis es la siguiente:
DATA: BEGIN OF <tabla> OCCURS<n>,
<Def.Campo>,
...
END OF <tabla>.
Acá se declaro una interna con n líneas en memoria y una linea de cabecera o área de trabajo. lo indicado en OCCURS no necesariamente limita el tamaño de la tabla sino que indica la cantidad de registros que se guardarán en memoria simultáneamente. por lo general se indica la cantidad 0 lo que permite trabajar con tablas de gran cantidad de registros.
Para la tabla TI_PROVEEDORES seria de la siguiente manera:
DATA: BEGIN OF ti_proveedores OCCURS 0,
nombre(30) TYPE c,
apellido(30) TYPE c,
DNI(8) TYPE c,
END OF ti_proveedores.
Otra forma seria de la siguiente:
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
Se utiliza APPEND TO para añadir registros a las tablas internas, esto lo realiza en la ultima posición con los valores que tengamos en el área de trabajo. ejemplo
CLEAR wa_proveedores.
wa_proveedores-nombre='JUAN'.
wa_proveedores-apellido='Perez'.
wa_proveedores-dni='0303456'.
APEND wa_proveedores TO ti_proveedores.
ORDENAMIENTO DE UNA TABLA INTERNA
Para ordenar una tabla interna se utiliza SORT el cual seria el símil de ORDER BY, el ejemplo de uso es:
- SORT ti_proveedores BY dni DESCENDING. * para que sea ascendente se usa ASCENDING
PROCESAMIENTO DE UNA TABLA INTERNA
Para recorrer una tabla interna y procesar los registros se utiliza la sentencia LOOP-ENDLOOP ejemplo de uso:
LOOP AT ti_proveedores INTO wa_proveedores
WHERE NOT nombre IS INITIAL.
ENDLOOP.
Si no se cumple el WHERE, el SY-SUBRC será distinto de 0.
LECTURA DE UNA TABLA INTERNA
Para leer un registro concreto se utiliza la sentencia READ TABLE (esto es para cuando no se necesite recorrer la tabla). ejemplo:
READ TABLE ti_proveedores INTO wa_proveedores
WITH KEY nombre ='ARIEL'.
Si se encuentra el registro buscado, el SY-SUBRC será 0, de lo contrario, será distinto de 0. Para leer los datos en una posición particular de la tabla se utiliza INDEX tal como el siguiente ejemplo:
READ TABLE ti_proveedores INTO wa_proveedores INDEX 1.
si se l agrega la Cláusula BINARY SEARCH en la sentencia READ TABLE hace que la búsqueda sea mucho mas eficiente.
MODIFICANDO UNA TABLA INTERNA
Se utiliza MODIFY, para el ejemplo se modifica el dni.
wa_proveedores-dni='123456'.
MODIFY ti_proveedores FROM wa_proveedores INDEX 1.
si se trata de modificar un registro de una tabla interna que no existe el SY-SUBRC será distinto de 0.
Para ingresar datos se utiliza INSERT de la siguiente manera
wa_proveedores-nombre ='Arturo'.
wa_proveedores-apellido ='Gonzalez'.
wa_proveedores-dni ='6453521'.
INSERT wa_proveedores INTO ti_proveedores INDEX 2.
Para borrar el contenido de un registro de una tabla se utiliza DELETE ejemplo:
DELETE ti_proveedores
WHERE dni ='54535251'.
para borrar todo el contenido de una tabla interna se utiliza la sentencia REFRESH. ejemplo:
REFRESH ti_proveedores.
Para saber la cantidad de registros que contiene una tabla interna se utiliza la sentencia DESCRIBE TABLE. para el ejemplo declaramos V_LINEAS la cual es una variable que va a contener la cantidad de filas de una tabla interna ti_proveedores.
DATA: v_lineas TYPE i.
DESCRIBE TABLE ti_proveedores_LINES v_lineas.
 
 
 
Sobre el autor
Publicación académica de Enrique Javier Machuca Silva, en su ámbito de estudios para la Carrera Consultor ABAP.
Enrique Javier Machuca Silva
Profesión: Ingeniero en Informatica - Chile - Legajo: JL57O
✒️Autor de: 28 Publicaciones Académicas
🎓Egresado de los módulos:
Disponibilidad Laboral: FullTime
Certificación Académica de Enrique Machuca