✒️ABAP Las tablas internas
ABAP Las tablas internas
1. Que son las tablas internas?
Es un objeto de datos que permite guardar en memoria grandes cantidades de registros con la misma estructura.
Los limites de registros máximos van relacionados a los limites especificados en la instalación del sistema.
Usos:
- Almacenamiento temporal de los datos de las BD para procesamiento futuro.
- Para estructura y formatear datos que se mostraran como salida del programa.
- Para formatear los datos para ser utilizados por otro servicio.
1. ¿Como se declara una tabla interna?
DATA: BEGIN OF <tabla> OCCURS <n>,
<Def.Campo>,
END OF <tabla>.
n: lineas 1 linea de cabecera o área de trabajo.
OCCURS limita la cantidad de registros que se guardaran en memoria simultáneamente.
Ejemplo:
DATA: BEGIN OF ti_proveedores OCCURS 0,
nombre(30) TYPE c,
apellido(30) TYPE c,
dni(8) TYPE c,
END OF ti_proveedores.
o
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 STANDARD TABLE OF wa_proveedores.
AUDIOTIP: WITH HEADER LINE
DATA: t_vuelos LIKE STANDARD TABLE OF sflight WITH HEADER LINE.
3. Llenado de una tabla interna.
APPEND TO:
CLEAR wa_proveedores.
wa_proveedores-nombre = 'Ernesto'.
wa_proveedores-apellido = 'Villanueva'.
wa_proveedores-dni = '1234'.
APPEND wa_proveedores TO ti_proveedores.
*Se añade otro registro
CLEAR wa_proveedores.
wa_proveedores-nombre = 'Jose'.
wa_proveedores-apellido = 'Artega'.
wa_proveedores-dni = '9876'.
APPEND wa_proveedores TO ti_proveedores.
SELECT. Llenar con el contenido de una base de datos.
4. Ordenamiento de una tabla interna.
SORT ti_proveedores BY dni DESCENDING."ASCENDING
5 . Procesamiento de una tabla interna.
LOOP AT ti_proveedores INTO wa_proveedores
WHERE NOT nombre IS INITIAL.
ENDLOOP.
Si no existe condición que coincida con la sentencia WHERE, el sy-subrc será cero.
AUDIOTIP: Otra forma de declarar una estructura o area de trabajo de una tabla interna=>LIKE LINE OF
DATA: BEGIN OF ti_proveedores OCCURS 0,
nombre(30) TYPE c,
apellido(30) TYPE c,
dni(8) TYPE c,
END OF ti_proveedores.
DATA: wa_proveedores LIKE LINE OF ti_proveedores.
6. Lectura de una tabla interna.(Sin recorrerla)
READ TABLE ti_proveedores INTO wa_proveedores WITH KEY nombre = 'Ariel'.
Si se encuentra el registro el sy-subrc sera cero.
READ TABLE ti_proveedores INTO wa_proveedores INDEX 1. *Lee en una posición
NOTA: Agregado BINARY SEARCH. (Busqueda mas eficiente)
7. Modificando una tabla interna.
wa_proveedores-dni = ''555.
MODIFY ti_proveedores FROM wa_proveedores INDEX 1.
Insertar
wa_proveedores-nombre = 'Marcelo'.
wa_proveedores-apellido = 'Rivarola'.
wa_proveedores-dni = '20857492'.
INSERT wa_proveedores INTO ti_proveedores INDEX 2.
Borrar un registro
DELETE ti_proveedores WHERE dni = '34555'.
Borrar todo el contenido de la tabla interna.
REFRESH ti_proveedores.
Obtener el numero de lineas de una tabla interna.
DATA: v_lineas TYPE i.
DESCRIBE TABLE ti_proveedores LINES v_lineas.
AUDIOTIP: Intrucciones de manejo de tablas internas
- CLEAR: Para inicializar el área de trabajo o cabecera de la tabla interna.
- FREE: Liberar el espacio en memoria que ocupa una tabla interna
- REFRESH: Borra el contenido y no la tabla.
Agradecimiento:
Ha agradecido este aporte: David Camacho Espinoza
Sobre el autor
Publicación académica de Calixto Saldarriaga, en su ámbito de estudios para la Carrera Consultor ABAP.
Calixto Saldarriaga
Profesión: Ingeniero en Sistemas - Ecuador - Legajo: HB24G
✒️Autor de: 61 Publicaciones Académicas
🎓Egresado del módulo:
Certificación Académica de Calixto Saldarriaga