✒️ABAP Las tablas internas
ABAP Las tablas internas
TABLAS INTERNAS
TI - es un objeto de datos que permite guardar en memoria grandes cantidades de registros de datos con la misma estructura.
La TI existe en memoria mientras se esta ejecutando el programa. Tiene un cuerpo formado por 1 o n campos y una cabecera que es una estructura que tiene el mismo formato que la TI y se utiliza para acceder a los registros de la TI.
Declaración de TI
La sintaxis es
DATA: BEGUIN OF <tabla> OCCURS <n>,
<Definición campo>,
...................
END OF <tabla>.
La clausula OCCURS se utiliza para especificar la cantidad de registros en memoria de una TI.
Ejemplo:
DATA: BEGUIN OF ti_proveedores OCCURS 0, Otra forma: DATA: BEGUIN OF wa_proveedores,
nombre(30) TYPE c, nombre(30) TYPE c,
apellido(30) TYPE c, apellido(30) TYPE c,
DNI(8) TYPE c, DNI(8) TYPE c,
END OF ti_proveedores. END OF ti_proveedores.
DATA: ti_proveedores LIKE STANDARD TABLE OF wa_proveedores.
Llenado de una TI
- APPEND TO: se añade un registro a la TI en la ultima posición con los valores que tengamos en el área de trabajo.
- SELECT: llenamos la TI con el contenido de una base de datos.
Ordenación de una TI
Se utiliza la sentencia SORT (DESCENDING or ASCENDING).
Ejemplo: SORT ti_proveedores BY dni DESCENDING.
Procesamiento de una TI
Para recorrer la TI utilizamos la sentencia LOOP-EMDLOOP.
Ejemplo: LOOP AT ti_proveedores INTO wa_proveedores
WHERE NOT nombre IS INITIAL.
ENDLOOP.
Lectura de tabla interna
Para leer una TI sin necesidad de recorrerla utilizamos la sentencia READ TABLE. Se trata de una búsqueda secuencial, que consiste en leer secuencialmente cada uno de los registros de la tabla, comenzado por el primero, luego por el segundo etc.
Siempre después de READ TABLE es necesario preguntar por el contenido de la variable del sistema SY-SUBRC. Si se encuentra el registro el SY-SUBRC será 0 si no será distinto de 0.
Ejemplo: READ TABLE ti_proveedores INTO wa_proveedores
WITH KEY = 'Ariel'.
Para leer los datos que se encuentra en una posición particular de la tabla utilizamos INDEX.
Ejemplo para leer el primer registro de la tabla.
READ TABLE ti_proveedores INTO wa_proveedores INDEX 1.
La adición BINARY SEARCH realiza una búsqueda binaria (se parte la tabla en dos y se pregunta si esta en la mitad de arriba o en la mitad de abajo, si esta en la mitad de arriba entonces se desecha la mitad de abajo y se vuelve a partir en dos la mitad de arriba y así hasta llegar a leer el registro deseado.
Es indispensable que la TI se encuentre ordenada por el campo o por los campos por los que se desea buscar sino la búsqueda binaria no funcionara y arrojará cualquier resultado.
Modificación de una tabla interna
Para modificar el contenido de una tabla interna utilizamos la sentencia MODIFY.
Para insertar un registro en una posición determinada INSERT.
Para borrar el contenido de un registro utilizamos DELETE.
Para borrar todo el contenido de una TI utilizamos REFRESH (borra el contenido de la tabla y no la tabla en si).
Para saber cuantos registros tiene una TI utilizamos DESCRIBE TABLE.
Para liberar el espacio ocupado por una TI en memoria utilizamos FREE seguido del nombre de la TI.
CLEAR borra la cabecera (estructura- se utiliza para almacenar el contenido del registro que se esta priocesando). Si la tabla interna no tiene cabecera no sirve de nada hacerlo.
Ejemplo:
- Modificar el primer registro de la tabla
MODIFY ti_proveedores FROM wa_proveedores INDEX 1.
- Insertar un registro en la segunda posición de la tabla
wa_proveedores-nombre = 'Marcelo'.
wa_proveedores-apellido = 'Ivarola'.
wa_proveedores-dni = '23464561'.
INSERT wa_proveedores INTO ti_proveedores INDEX 2.
* Borro un registro de la tabla
DELETE ti_proveedores
WHERE dni = '24567286'.
 
 
 
Sobre el autor
Publicación académica de Ana Schiau, en su ámbito de estudios para la Carrera Consultor ABAP.
Ana Schiau
España - Legajo: TK43H
✒️Autor de: 55 Publicaciones Académicas
🎓Egresado del módulo:
Presentación:
Trabajo como key user sd en un multinacional y quiero aprender a programar en abap.
Certificación Académica de Ana Schiau