✒️ABAP Las tablas internas
ABAP Las tablas internas
Definición de Tabla Interna
Tabla interna
Es un conjunto de datos que permite guardar en memoria grandes cantidades de registros de datos con la misma estructura. La cantidad de registros está relacionada con los limites especificados en la instalación del sistema.
El uso típico que se le da a una tabla interna es:
- Para almacenar temporalmente los datos de las bases de datos para un procesamiento futuro.
- Para estructurar y formatear datos que se mostrarán como salida del programa.
- Para formatear datos para ser utilizados por otros servicios.
Sintaxis para de declaración de una tabla
DATA:
BEGIN OF <tabla> OCCURS <n>,
<defCampo>,
<defCampo2>,
...
END OF <tabla>.
Donde OCCURS es generalmente 0, lo que permite trabajar con tablas de gran cantidad de registros (?).
un ejemplo seria:
DATA:
BEGIN OF ti_proveedores OCCURS 0,
nombre(30) TYPE c,
apellido(30) TYPE c,
dni(8) TYPE c,
END OF ti_proveedores.
Otra forma de declarar la misma tabla seria:
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.
Otra forma de declarar la tabla seria de la siguiente forma:
DATA: ti_vuelos LIKE STANDARD TABLE OF sflight WITH HEADER LINE.
Al hacerlo de esta forma la cabecera de la tabla seria la misma que la table sflight del sistema.
Llenado de una tabla interna
Para llenar los datos de una tabla utilizaremos:
- 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. Ej:
CLEAR wa_proveedores.
wa_proveedores-nombre = 'Ernest'.
wa_proveedores-apellido = 'Hemingway'.
wa_proveedores-dni ='12554225'.
APPEND wa_proveedores TO ti_proveedores. - Llenamos la tabla interna con el contenido de una base de datos. esto se hace a través de SELECT.
Ordenamiento de una tabla internaç
SORT ti_proveedores BY dni DESCENDING,
Procesamiento de una tabla interna
Para recorrer una tabla interna y procesar los registros de la misma utilizaremos LOOP-ENDLOOP.
LOOP AT ti_proveedores INTO wa_proveedores
WHERE NOT nombre IS INITIAL.
ENDLOOP.
Si no existe ningún registro que cumpla con el WHERE; el SY-SUBRC devuelve <> 0.
Existe otra manera de declarar la cabecera de una tabla interna y es utilizando LIKE LINE OF, por ejemplo:
DATA: wa_proveedores LIKE LINE OF ti_proveedores.
de esta forma, estamos creando una tabla cuyo formato van a ser idénticos a los de la tabla ti_proveedores.
Lectura de una tabla interna
READ TABLE ti_proveedores INTO wa_proveedores WITH KEY nombre = 'Demian'.
Si se encuentra el registro buscado el SY-SUBRC = 0. Si se desean leer los datos que se encuentran en una posición particular de la tabla se utiliza la cláusula INDEX de la siguiente manera:
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
Para modificar el contenido de un registro de la tabla utilizaremos la sentencia MODIFY de la siguiente manera:
wa_proveedores-dni = '23123123'.
MODIFY ti_proveedores FROM wa_proveedores INDEX 1.
Nuevamente, si el registro a modificar no existe, SY-SUBRC <> 0.
Para insertar una nuevo registro en una posición determinada de una tabla interna utulizaremos la sentencia INSERT, ej:
wa_proveedores-nombre = 'Pedro'.
wa_proveedores-apellido = 'Calderon'.
wa_proveedores-dni = '19003992'.
INSERT wa_proveedores INTO ti_proveedores INDEX 2.
Para borra el registro de una tabla interna utilizaremos DELETE. Ej:
DELETE ti_proveedores WHERE dni = '22333444'.
Para borrar todo el contenido de una tabla interna utilizamos REFRESH, ej:
REFRESH ti_proveedores.
Para saber cuantos registros tiene una tabla utilizamos DESCRIBE TABLE. En el siguiente ejemplo,declaramos V_LINEAS para guardar la cantidad de filas que tiene ti_proveedores. Ej:
DATA: v_lineas TYPE i.
DESCRIBE TABLE ti_proveedores LINES v_lineas.
Para inicializar el wa o cabecera utilizaremos CLEAR seguido del área de trabajo o cabecera.
Para liberar el espacio ocupado por una tabla interna utilizaremos FREE.
 
 
 
Sobre el autor
Publicación académica de Pedro Rocabado, en su ámbito de estudios para la Carrera Consultor ABAP.
Pedro Rocabado
Profesión: Programador - Argentina - Legajo: FD33T
✒️Autor de: 26 Publicaciones Académicas
🎓Egresado del módulo:
Disponibilidad Laboral: FullTime
Presentación:
Pretendo obtener conocimientos suficientes sobre sap abap para trabajar sobre este sistema y perfeccionarme con el tiempo. me siento entusiasmado con esta plataforma y espero estar a la altura.
Certificación Académica de Pedro Rocabado