✒️ABAP Las tablas internas
ABAP Las tablas internas
¿Qué son las Tablas Internas?
Es un objeto de datos que permite guardar en memoria grandes cantidades de registros de datos con la misma estructura.
La cantidad máxima de registros está relacionada con los límites definidos en la instalación del sistema.
Usos típicos de una tabla interna:
- Almacenar temporalmente los datos de las BD.
- Estructurar y formatear datos que se mostrarán como salida del programa.
- Formatear datos para ser utilizados por otros servicios.
¿Cómo se declara una Tabla Interna?
DATA: BEGIN OF <tabla> OCCURS <n>,
<Def.Campo>,
...
END OF <tabla>.
Se define una tabla interna con n número de líneas en memoria más una línea de cabecera o área de trabajo. No limita el tamaño de la tabla sino la cantidad de registros que se guardarán en memoria simultáneamente.
Generalmente, se especifica la cantidad 0 en el parámetro OCCURS, lo que permite trabajar con tablas de gran cantidad de registros.
- APPEND TO: Añade un registro en la última posición con los valores que se tengan en el área de trabajo.
- Se llena la tabla interna con el contenido de una BD, para esto se utiliza la sentencia SELECT.
Ejemplo:
CLEAR wa_proveedores.
wa_proveedores-nombre = 'Ernesto'.
wa_proveedores-apellido = 'Villanueva'.
wa_proveedores-dni = '24987564'.
Ordenamiento de una tabla interna
Para ordenar una tabla interna se utiliza la sentencia SORT.
Ejemplo: SORT ti_proveedores BY dni DESCENDING.
Para ordenar de menor a mayor se utiliza la cláusula ASCENDING.
Procesamiento de una tabla interna
Para recorrer una tabla interna y procesar registro a registro se utiliza la sentencia LOOP-ENDLOOP. Ejemplo:
LOOP AT ti_proveedores INTO wa_proveedores
WHERE NOT nombre IS INITIAL.
ENDLOOP.
Si no existe ningún registro que cumpla la condición, el SY-SUBRC será distinto de cero.
Lectura de una tabla interna
Para leer un registro concreto de una tabla interna sin necesidad de recorrerla utilizamos la sentencia READ TABLE. Ejemplo:
READ TABLE ti_proveedores INTO wa_proveedores
WITH KEY nombre = 'Ariel'.
Si se encuentra el registro buscado, el SY-SUBRC será cero, y distinto de cero en caso contrario. Si se desea leer los datos de una posición particular de la tabla se utiliza la clausula INDEX. Ejemplo:
READ TABLE ti_proveedores INTO wa_proveedores INDEX 1.
NOTA: Agregando la cláusula BINARY SEARCH hace que la búsqueda sea mucho más eficiente.
Modificando una tabla interna
Para modificar el contenido de un registro de una tabla interna se utiliza la sentencia MODIFY. Ejemplo:
wa_proveedores-dni = '24987500'.
MODIFY ti_proveedores FROM wa_proveedores INDEX 1.
Si se intenta modificar un registro de una tabla interna y el no existe, el SY-SUBRC será distinto de cero.
Para insertar un registro en una posición determinada de una tabla interna se utiliza la sentencia INSERT. Ejemplo:
wa_proveedores-nombre = 'Marcelo'.
wa_proveedores-apellido = 'Rivarola'.
wa_proveedores-dni = '20857492'.
INSERT wa_proveedores INTO ti_proveedores INDEX 2.
Para borrar el contenido de un registro de una tabla interna se utiliza la sentencia DELETE. Ejemplo:
DELETE ti_proveedores
WHERE dni = '20857492'.
Para borrar todo el contenido de una tabla interna se utiliza la sentencia REFRESH. Ejemplo:
REFRESH ti_proveedores.
Para conocer el número de registros que tiene una tabla interna se utiliza la sentencia DESCRIBE TABLE. Ejemplo:
DATA: v_lineas TYPE i.
DESCRIBE TABLE ti_proveedores LINES v_lineas.
 
 
 
Sobre el autor
Publicación académica de Miguel Mauricio Sierra Cardona, en su ámbito de estudios para la Carrera Consultor ABAP.
Miguel Mauricio Sierra Cardona
Profesión: Ingeniero de Desarrollo E Innovación - Colombia - Legajo: GN43E
✒️Autor de: 61 Publicaciones Académicas
🎓Egresado del módulo:
Certificación Académica de Miguel Sierra