✒️ABAP Las tablas internas
ABAP Las tablas internas
3. - Diccionario de datos
3.1. - Tablas internas
3.1.1. - ¿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 de registros máxima está relacionada con los límites especificados en la instalación del sistema.
Si se quiere guardar una colección de registros de datos de la misma estructura en memoria, se utilizará una tabla interna.
Usos de una tabla interna:
1. Almacenar temporalmente datos de las base de datos para un procesamiento futuro.
2. Estructurar y formatear datos que se mostraran como salida del programa.
3. Formatear datos para ser utilizados por otros servicios.
3.1.2. - ¿Cómo se declara una tabla interna?
La sintaxis de declaración de una tabla interna es la siguiente:
DATA: BEGIN OF <tabla> OCCURS <n>,
<Definición de campos>,
END OF <tabla>.
Con esta sentencia, se definirá una tabla interna con “n” líneas en memoria más una línea de cabecera o área de trabajo. La cantidad de líneas que se especifican en “OCCURS”, por lo generar se especifica la cantidad 0, no limitan el tamaño de la tabla, sino la cantidad de registros que se guardarán en memoria simultáneamente.
Ejemplo de declaración de tabla interna Ejemplo 2 de declaración de tabla interna
Existe otra forma de declaración de tablas internas, sin tener que especificar un área de trabajo o cabecera, que se realiza con la palabra reservada “WITH HEADER LINE”.
Para crear una tabla interna igual que otra tabla del sistema, se declararía de la siguiente forma:
DATA: ti_vuelos LIKE STANDARD TABLE OF sflight WITH HEADER LINE.
De esta forma se está declarando una tabla interna donde la cabecera o área de trabajo de la tabla es la misma tabla interna.
3.1.3. - Llenado de una tabla interna
Para llenar con datos una tabla interna, se utilizará:
1. APPEND TO
a. Se añade un registro a la tabla interna en la última posición con los valores que se tenga en el área de trabajo.
b.
c. Otra forma de llenar la tabla interna es con el contenido de una base de datos. Esto se realiza con la sentencia “SELECT”.
3.1.4. - Ordenamiento de una tabla interna
Para ordenar una tabla interna, se utiliza la sentencia “SORT”.
En este ejemplo se está ordenando la tabla “ti_proveedores” de forma descendente por DNI, lo que invertirá el orden en el que fueron cargados los registros. Para ordenar de menor a mayor, hay que utilizar la sentencia “ASCENDING”.
3.1.5. - Procesamiento de una tabla interna
Para recorrer una tabla interna y procesar registro a registro, se utilizará la sentencia “LOOP-ENDLOOP”.
Si no se cumple la condición de la cláusula “WHERE”, SY-SUBRC será distinto de 0.
Hay otra forma de declarar una estructura o área de trabajo de una tabla interna y se realiza utilizando la sentencia “LIKE LINE OF”. Si se desea crear una estructura con el mismo formato de una tabla interna, se puede declarar
DATA: wa_proveedores LIKE LINE OF ti_proveedores
De esta forma, se está creando una estructura con el mismo formato que un registro cualquiera de la tabla ti_proveedores.
3.1.6. - Lectura de una tabla interna
Para leer un registro concreto de una tabla interna sin necesidad de recorrerla, se utiliza la sentencia “READ TABLE”.
Si se encuentra el registro buscado, SY-SUBRC será igual a 0, mientras que por el contrario, será distinto de 0. Si se quiere leer los datos que se encuentran en una posición particular de la tabla, se utiliza la cláusula “INDEX”.
El añadido de la cláusula “BINARY SEARCH” en la sentencia “READ TABLE” hace que la búsqueda sea ampliamente eficiente.
3.1.7. - Modificación de una tabla interna
Para modificar el contenido de un registro de una tabla interna, se utiliza la sentencia “MODIFY”. En el ejemplo, se modifica el campo “DNI” de la tabla interna.
Si se intenta modificar un registro de tabla interna y no existe, la variable SY-SUB-RC será distinta de 0.
Para insertar un registro en una posición determinada de una tabla interna, se utiliza la sentencia “INSERT”. En el caso de ejemplo, se introduce un registro en la posición 2.
Para borrar un registro de una tabla interna, se utiliza la sentencia “DELETE”. En el ejemplo, se borra el registro con DNI “20857492”.
Para borrar todo el contenido de una tabla interna, se utiliza la sentencia “REFRESH”. La sentencia borrará el contenido, pero no borrará la tabla en sí.
Para saber cuántos registros tiene una tabla interna, se utiliza la sentencia “DESCRIBE TABLE”. Es necesario crear una variable de tipo entero para almacenar el número de líneas/filas que tiene la tabla interna. Posteriormente, hay que añadir la sentencia “LINES”.
Otras sentencias que se pueden manejar son:
1. CLEAR
a. Para inicializar el área de trabajo o cabecera de la tabla interna.
b. CLEAR wa_xxxxx
2. FREE
a. Liberar el espacio ocupado por una tabla interna en memoria
b. FREE ti_xxx
 
 
 
Sobre el autor
Publicación académica de Adrian Fernandez Marcos, en su ámbito de estudios para la Carrera Consultor ABAP.
Adrian Fernandez Marcos
Profesión: Técnico de Sistemas - España - Legajo: FQ91J
✒️Autor de: 116 Publicaciones Académicas
🎓Cursando Actualmente: Consultor ABAP Nivel Avanzado
🎓Egresado de los módulos:
Certificación Académica de Adrian Fernandez