✒️ABAP Las tablas internas
ABAP Las tablas internas
Tablas Internas en ABAP:
Es un objeto de datos que permite guardar en memoria grandes cantidades de registros de datos con la misma estructura, son usadas comúnmente para:
- Almacenar temporalmente datos para un uso futuro.
- Estructurar y formatear datos que se mostraran para salida de datos.
- Para formatear datos para ser usados por otros servicios.
La sintaxis para la declaración de tablas internas es :
DATA: BEGIN OF <tabla> OCCURS <n>,
<Def.Campo>,
....
END OF <tabla>.
Nota: El Campo OCCURS no especifica el tamaño de la tabla sino la cantidad de registros que se guardaran en memoria.
Por lo general en el parámetro OCCURS se especifica la cantidad 0 lo que permite trabajar con tablas de gran cantidad de registros.
Ejemplo: Declaración de tabla TI_PROVEEDORES.
DATA: BEGIN OF ti_proveedores OCCURS 0,
Nombre (30) TYPE c,
Apellido (30) TYPE c,
dni (8) TYPE c,
END OF ti_proveedores.
Ejemplo2: Declaración de estructura y tabla interna (es mas aconsejable)
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 STANDAR TABLE OF wa_proveedores.
Llenado de una tabla interna en ABAP:
Para llenar una tabla interna usamos APPEND TO (se añade un registro a la tabla interna en la ultima posición)
Ejemplo: Añadir un registro a la tabla interna de proveedores.
CLEAR wa_proveedores.
wa-proveedores-nombre = 'Mauricio'.
wa-proveedores-apellido = 'Moreno'.
wa-proveedores-dni = '1094922353'.
APPEND wa_proveedores TO ti_proveedores.
CLEAR wa_proveedores.
wa-proveedores-nombre = 'William'.
wa-proveedores-apellido = 'Quiceno'.
wa-proveedores-dni = '1094922567'.
APPEND wa_proveedores TO ti_proveedores.
Ordenamiento de una Tabla interna:
Para ordenar una tabla interna usamos la sentencia SORT
Ejemplo: Ordena los proveedores de mayor a menor por DNI
SORT ti_proveedores BY dni DESCENDING.
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.
DATA: BEGIN OF ti_proveedores OCCURS 0,
Nombre (30) TYPE c,
Apellido (30) TYPE c,
dni (8) TYPE c,
END OF ti_proveedores.
Declaración de work area (estructura) cuyos datos son del mismo tipo de un registro de la TI proveedores.
DATA: wa_proveedores LIKE LINE OF ti_proveedores.
Lectura de una tabla interna:
Para leer un registro en concreto de una tabla interna sin necesidad de recorrerla utilizamos la sentencia READ TABLE.
Ejemplo : Leo los datos de un registro en particular
READ TABLE ti_proveedores INTO wa_proveedores
WITH KEY nombre = 'Andrés'.
NOTA: Si se desea leer los datos que se encuentran en una posición particular de la tabla se usa la sentencia INDEX.
Ejemplo : Leo el primer registro de la tabla
READ TABLE ti_proveedores INTO wa_proveedores INDEX 1.
Modificación de una tabla Interna:
Para modificar una tabla interna se utiliza la sentencia MODIFY .
Ejemplo: Modificar el primer registro de la tabla.
wa_proveedores-dni='23456789'.
MODIFY ti_proveedores FROM wa_proveedores INDEX 1.
- Para insertar un registro en una posición determinada de una TI utilizamos la sentencia INSERT
Ejemplo: Insertar un registro en la segunda posición de la tabla.
wa_proveedores-nombre= 'Mauro'.
wa_proveedores-apellido= 'Moreno'.
wa_proveedores-dni= '123456789'.
INSERT wa_proveedores INTO ti_proveedores INDEX 2.
- Para borrar un registro en una posición determinada de una TI utilizamos la sentencia DELETE.
Ejemplo: Borramos el registro de la tabla interna proveedores con DNI = 123.
DELETE ti_proveedores WHERE dni = '123'.
- Para borrar todo el contenido de una TI utilizamos la sentencia REFRESH.
Ejemplo: En este ejemplo se inicializa la TI_PROVEEDORES
REFRESH ti_proveedores.
- Para saber cuantos registros tiene una TI utilizamos la sentencia DESCRIBE TABLE.
Ejemplo: En este ejemplo se declara v_lineas que es la variable que va a contener la cantidad de filas de la tabla interna luego se ejecuta la sentencia DESCRIBE TABLE.
DATA: v_lineasTYPE i.
DESCRIBE TABLE ti_proveedores LINES v_lineas.
 
 
 
Sobre el autor
Publicación académica de Andrés Mauricio Moreno Garzón, en su ámbito de estudios para la Carrera Consultor ABAP.
Andrés Mauricio Moreno Garzón
Profesión: Ingeniero de Sistemas - Colombia - Legajo: SG47W
✒️Autor de: 29 Publicaciones Académicas
🎓Egresado del módulo:
Certificación Académica de Andrés Moreno