✒️ABAP Las tablas internas
ABAP Las tablas internas
Tabla Interna
Es un objeto de datos que permite guardar en memoria grandes cantidades de registros de datos con la misma estructura.
La cantidad de registros máxima esta relacionadad con los límites especificados en la instalación del sistema.
El uso típico que se le da a una tabla inerna es:
- Almacenamiento temporal de datos para un procesamiento futuro.
- Esructuarr y formatear datos que se mostrarán como salida del programa.
- Formatear datos para ser utilizados por otros servicios.
Declaración de una tabla interna
DATA: BEGIN OF <tabla> OCCURS <n>,
<Def.Campo>,
...
END OF <tabla>
Área de trabajo
Cabecera de una tabla interna que tiene el contenido del registro de la tabla interna que se está procesando.
Por lo general, en el parámetro OCCURS se especifica la canyidad 0 lo que permite trabajar con tablas de gran cantidad de registros.
Formas de declaración de una tabla interna
Forma 1
*Tabla interna de proveedores
DATA: BEGIN OF ti_proveedores OCCURS 0,
nombre(30) TYPE c,
apellido(30) TYPE c,
dni(8) TYPE c,
END OF ti_proveedores.
Forma 2
*Tabla interna de proveedores
DATA: BEGIN OF ti_proveedores,
nombre(30) TYPE c,
apellido(30) TYPE c,
dni(8) TYPE c,
END OF ti_proveedores.
DATA: ti_proveedores LIKE STANDARD TABLE OF wa_proveedores.
Llenado de una tabla interna
APPEND TO. Se añade un registro a la tabla interna en la última posición con los valores que tengamos en el área de trabajo.
Ejemplo:
*Añado un registro a la tabla interna de proveedores
CLEAR wa_proveedores.
wa_proveedores-nombre = 'Ernesto'.
wa_proveedores-apellido = 'Villanueva'.
wa_proveedores-dni = '24987564'.
APPEND wa_proveedores TO ti_proveedores.
*Añado otro registro a la tabla interna de proveedores
CLEAR wa_proveedores.
wa_proveedores-nombre = 'Ariel'.
wa_proveedores-apellido = 'Gallardo'.
wa_proveedores-dni = '25986584'.
APPEND wa_proveedores TO ti_proveedores.
Ordenamiento de una tabla interna
*Ordeno los proveedores de mayor a menor por dni
SORT ti_proveedores BY dni DESCENDING.
Para ordenar de menor a mayor se utiliza ASCENDING.
Procesamiento de una tabla interna
Para recorrer una tabla interna y procesar registro a registro utilizaremos la sentencia LOOP-ENDLOOP.
Ejemplo:
*Recorro los registros donde el nombre no es blanco
LOOP AT ti_proveedores INTO wa_proveedores
WHERE NOT nombre IS INITIAL.
ENDLOOP.
Lectura de una tabla interna
Para leer un registro concreto de una tabla interna sin necesidad de recorrerla utilizamos la sentencia READ TABLE.
*Leo los datos de un registro particular
READ TABLE ti_proveedores INTO wa_proveedores
WITH KEY nombre = 'Ariel'.
Si se encuentra el registro buscado, el SY-SUBRC será cero, caso contrario, será distinto de cero.
*Leo el primer registro de la tabla
READ TABLE ti_proveedores INTO wa_proveedores INDEX 1.
El agregado de la cláusula BINARY SEARCH en la sentencia READ TABLE hace que la búsqueda sea ampliamente más eficiente.
Modificando una tabla interna
*Modifico el primer registro de la tabla
wa_proveedores-dni = '24987500'.
MODIFY ti_proveedores FROM wa_proveedores INDEX 1.
*Inserto un registro en la segunda posicion de la tabla
wa_proveedores-nombre = 'Marcelo'.
wa_proveedores-apellido = 'Rivarola'.
wa_proveedores-dni = '20857492'.
INSERT wa_proveedores INTO ti_proveedores INDEX 2.
*Borro un registro de la tabla
DELETE ti_proveedores
WHERE dni = '20857492'.
Para borrar todo el contenido de una tabla interna utilizamos la sentencia REFRESH.
*Inicializo la tabla interna
REFRESH ti_proveedores.
Para saber cuantos registros tiene una tabla interna utilizamos la sentencia DESCRIBE TABLE.
*Averiguo la cantidad de entradas de una tabla
DATA: v_lineas TYPE i.
DESCRIBE TABLE ti_proveedores LINES v_lineas.
Para inicializar la area de trabajo utilizamos la sentencia CLEAR.
Para liberar el espacio de una tabla es decir eliminar utilizamos la sentencia FREE.
Para vaciar el contenido de una tabla utilizamos la sentencia REFRESH.
 
 
 
Sobre el autor
Publicación académica de John Arley Lopez Sanchez, en su ámbito de estudios para la Carrera Consultor ABAP.
John Arley Lopez Sanchez
Profesión: Ingeniero Electrónico - Colombia - Legajo: WB54O
✒️Autor de: 24 Publicaciones Académicas
🎓Egresado del módulo:
Certificación Académica de John Lopez