✒️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 relacionado con los límites especificados en la instalación del sistema.
El uso típico que se le da a una tabla interna es:
Almacenamiento temporal de datos para un procesamiento futuro .Estructurar y formatear datos que se mostrarán como salida del programa.Formatear datos para ser utilizados por otros servicios.
Como se declara una tabla interna:
DATA: BEGIN OF <tabla> OCCURS <n>,
<Def.Campo>,
...
END OF <tabla>
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 interna:
Para llenarcon datos 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.
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 Axel Jamil Hayes Guerrero, en su ámbito de estudios para la Carrera Consultor ABAP.
Axel Jamil Hayes Guerrero
Profesión: Carrera Técnica En: Dibujo Arquitectonico. - Mexico - Legajo: MN93R
✒️Autor de: 32 Publicaciones Académicas
🎓Cursando Actualmente: Consultor ABAP Nivel Inicial
Certificación Académica de Axel Hayes