✒️ABAP Las tablas internas
ABAP Las tablas internas
Unidad 3. DICCIONARIO DE DATOS.
LECCION 1: 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.
La tabla interna es:
- Para almacenar temporalmente los datos de las bases de datos para un procesamiento futuro.
- Para estructurar y formatear datos q se mostrarán como salida del programa.
- Para formatear datos para ser utilizados por otros servicios.
2. COMO SE DECLARA UNA TABLA INTERNA?
DATA: BEGIN OF <tabla> OCCURS <n>,
<def. Campo>,
......
END OF <tabla>.
De esta forma definiremos 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 q se especifican en OCCURS no limitan el tamaño sino la cantidad de registros q se guardarán en memoria simultáneamente.
POR LO GENERAL, EN EL PARAMETRO OCCURS SE ESPECIFICA LA CANTIDAD 0 LO QUE PERMITE TRABAJAR CON TABLAS DE GRAN CANTIDAD DE REGISTROS.
EJ de declaración de tabla interna:
1.- tabla interna TI_PROVEEDORES.
* Tabla interna de proovedores
DATA: BEGIN OF ti_proveedores OCCURS 0,
nombre(30) TYPE c,
apellido(30) TYPE c,
dni(8) TYPE c,
END OF ti_proveedores.
2.- Otra forma:
Supongamos q queremos crear una tabla interna ti_vuelos del mismo tipo q la tabla estándar del sistema de vuelos q es sflight.
5. PROCESAMIENTO DE UNA TABLA INTERNA.
- LOOP-ENDLOOP: para recorrer una tabla interna y procesar registro a registro.
* Recorro los registros donde el nombre no es blanco
LOOP AT ti_proveedores INTO wa_proveedores
WHERE NOT nombre IS INITIAL.
ENDLOOP.
Si no existe ningún registro q cumpla la condición especificada en la cláusula WHERE, el SY-SUBRC será distinto de cero.
Utilizamos la cláusula WHERE para especificar las condiciones en diferentes sentencias del lenguaje.
En la sentencia SELECT utilizaremos la cláusula WHERE para acotar la selección de los datos de la tabla BD.
- Existe otra forma de declarar una estructura o área de trabajo de una tabla interna y se realiza utilizando la adición
LIKE LINE OF.
Tomemos la tabla interna ti_proveedores con la adición OCCURS 0.
Si deseamos crear una estructura con el mismo formato de esta tabla interna, podemos declarar:
DATA: wa_proveedores LIKE LINE OF ti_proveedores
de esta forma estamos creando una estructura cuyo formato es identico a un registro cualquiera de la tabla interna ti_proveedores.
6. LECTURA DE UNA TABLA INTERNA.
- Sentencia READ TABLE: se usa para leer un registro concreto de una tabla interna sin necesidad de recorrerla.
* Leo los datos de un registro particular
READ TABLE ti_proveedores INTO wa_proveedores
WITH KEY nombre = 'Ariel'.
Si se encuentra el registro, SY-SUBRC=0 else SY-SUBRC <> 0
- Cláusula INDEX: si se desea leer los datos que se encuentran en una posición particular de la tabla.
Ej: Lectura de una tabla interna por índice
* Leo el primer registro de la tabla
READ TABLE ti_proveedores INTO wa_proveedores INDEX 1.
EL AGREGADO DE LA CLAUSULA BINARY SEARCH EN LA SENTENCIA READ TABLE HACE Q LA BUSQUEDA SEA AMPLIAMENTE MAS EFICIENTE.
7. MODIFICANDO UNA TABLA INTERNA.
- SENTENCIA MODIFY: para modificar el contenido de un registro de una tabla interna.
Ej:
* Modifico el primer registro de la tabla
wa_proveedores-dni = '24987500'.
MODIFY ti_proveedores FROM wa-proveedores INDEX 1.
Si intentamos modificar un registro de una tabla interna y el mismo no existe el SY-SUBRC será <> 0.
- SENTENCIA INSERT: para insertar un registro en una posición determinada de una tabla interna.
Ej: Insertamos un registro en la posición 2.
* Inserto un registro en la segunda posición de la tabla
wa_proveedores-nombre = 'Marcelo'.
wa_proveedores-apellido = 'Rivarola'.
wa_proveedores-dni = '20857492'.
INSERT wa_proveedores INTO ti_proveedores INDEX 2.
- SENTENCIA DELETE: para borrar el contenido de un registro de una tabla interna.
Ej: borramos el registro de la tabla interna de proveedores con DNI = '20857492'.
* Borro un registro de la tabla
DELETE ti_proveedores
WHERE dni = '20857492'.
- SENTENCIA REFRESH: para borrar todo el contenido de una tabla interna.
Ej: borrado del contenido completo de una tabla interna
* Inicializo la tabla interna
REFRESH ti_proveedores.
- SENTENCIA DESCRIBE TABLE: para saber cuantos registros tiene una tabla interna.
Ej: cantidad de registros de una tabla interna.
* Averiguo la cantidad de entradas de una tabla
DATA: v_lineas TYPE i.
DESCRIBE TABLE ti_proveedores LINES v_lineas.
dde v_lineas es la variable q va a contener la cantidad de filas de la tabla interna ti_proveedores luego de ejecutar la
sentencia DESCRIBE TABLE.
 
 
 
Sobre el autor
Publicación académica de Mayra Maria Pino Rodriguez, en su ámbito de estudios para la Carrera Consultor ABAP.
Mayra Maria Pino Rodriguez
Profesión: Licenciada Cibernética Matemática - Republica Dominicana - Legajo: RA62Z
✒️Autor de: 56 Publicaciones Académicas
🎓Egresado del módulo:
Certificación Académica de Mayra Pino