✒️ABAP Las tablas internas
ABAP Las tablas internas
LAS TABLAS INTERNAS:
1) Qué son las tablas internas?:
Son objetos de datos que permiten guardar en memoria grandes cantidades de registros de datos todos con la misma estructura. Una tabla interna solo existe en memoria durante el tiempo de ejecución del programa ABAP.
Los usos típicos de una tabla interna son los siguientes:
- Para almacenar temporalmente los datos de las tablas bases de datos para procesamiento futuro.
- Para estructurar y formatear datos que se mostrarán como salida del programa.
- Para formatear datos a ser utilizados por otros servicios del sistema SAP los procesen..
2) Cómo se declara una tabla interna?:
2.1. Las tablas internas se declaran con la sentencia DATA, éstas pueden contener o no un HEADER LINE, si no se declara el HEADER LINE se debe declarar un work area.
Sin embargo, la forma más eficiente para declarar una tabla interna es utilizando la sentencia TYPES, en donde primero se declara un tipo de datos que será TY_PROVEEDORES, luego se declara la tabla interna TI_PROVEEDORES de ese mismo tipo de datos utilizando la sentencia: TYPE STANDARD TABLE OF. Luego se declara la estructura o área de trabajo WA_PROVEEDORES que permite trabajar con la tabla interna, para ello se utiliza la sentencia LIKE LINE OF.
Ejemplo:
* Se declara el TYPES
TIPES: BEGING OF ty_proveedores.
dni(8) TYPE c,
nombre(30) TYPE c,
apellido(30) TYPE c,
END OF ty_provedores.
* Se declara la tabla interna y la estructura
DATA: ti_proveedores TYPE STANDARD TABLE OF ty_proveedores,
wa_proveedores LIKE LINE OF ti_proveedores..
2.2. Otra forma para declarar la tabla interna TI_PROVEEDORES es utilizando la sentencia OCCURS y para el área de trabajo WA_PROVEEDORES se utiliza la sentencia LIKE LINE OF como en la forma anterior.
2.3. La tercera forma para declarar una tabla interna, consiste en declarar primero la estructura WA_PROVEEDORES y luego declarar la tabla interna TI_PROVEEDORES del mismo tipo de datos que la estructura que se declaró. Ejemplo:
* Se declara la estructura
DATA: BEGING OF wa_proveedores.
dni(8) TYPE c,
nombre(30) TYPE c,
apellido(30) TYPE c,
END OF wa_provedores.
* Se declara la tabla interna
DATA: ti_proveedores LIKE STANDARD TABLE OF wa_proveedores.
2.4. La cuarta forma consiste en declarar la tabla interna TI_PROVEEDORES del mismo tipo que una tabla de base de datos ABAP en SAP. Ejemplo:
* Se declara la tabla interna y la estructura
DATA: ti_proveedores LIKE TABLE OF lfal,
wa_proveedores LIKE LINE OF ti_proveedores.
En este caso la tabla interna tendrá la misma estructura que la tabla base de datos estándar LFAL, que es el maestro de proveedores del sistema SAP. Esta forma se justifica si la table de la base de datos tiene la misma estructura que se requiere para la tabla interna.
La otra forma es utilizando la sentencia WITH HEADER LINE, pero esta forma ya no es recomendada por SAP.
3. Cómo llenar el contenido de una tabla?
Existen varias formas:
3.1. Realizar un SELECT a una base de datos de SAP y almacenar datos en la tabla interna.
3.2. Con la sentencia INSERT se puede registrar datos en una tabla interna.
3.3. Con la sentencia APPEND TO también se registran datos en una tabla interna.
4) El ordenamiento de una tabla:
Para ordenar una tabla interna se utiliza la sentencia SORT. Una tabla interna se puede ordenar en forma ascendente o descendente. Si no se indica el tipo de ordenamiento, el sistema SAP asume que es ascendente. Clausulas: ASCENDING para ascendente y DESCENDING para descendente.
5) Cómo recorrer una tabla:
Con la sentencia LOOP-ENDLOOP se recorre una tabla interna. Ejemplo:
LOOP AT ti_proveedores INTO wa_proveedores.
WRITE:/ wa_proveedores-dni,
wa_proveedores-nombre,
wa_proveedores-apellido.
ENDLOOP.
Utilizando la sentencia WHERE, se puede restringir con una condición el recorrido de la tabla interna, en la forma siguiente:
LOOP AT ti_proveedores INTO wa_proveedores WHERE NOT nombre IS INITIAL.
WRITE:/ wa_proveedores-dni,
wa_proveedores-nombre,
wa_proveedores-apellido.
ENDLOOP.
Con WHERE se puede agregar AND o OR para restringir más el recorrido de la tabla.
LOOP AT ti_proveedores INTO wa_proveedores WHERE NOT nombre IS INITIAL AND dni NE '25956584'.
6. La lectura de una tabla interna:
Para leer un registro de una tabla interna sin recorrerla completa se utiliza la sentencia READ TABLE. Ejemplo:
READ TABLE ti_proveedores INTO wa_proveedores WITH KEY nombre = 'Ariel'.
La sentencia READ TABLE, a pesar que se especifica una condici[on, va a leer en forma secuencial cada registro de la tabla. Esa forma es muy ineficiente. Por ello existe la forma conocida como Búsqueda Binaria. la búsqueda binaria es un algoritmo que divide en dos el contenido de la tabla; para no recorrerla toda, compara el valor de búsqueda en la primera mitad, si no la encuentra en esa mita lo descarta y divide en dos la segunda mitad para buscar en ellas e ir descartando y dividiendo hasta encontrar el valor buscado.
7.) Modificación de una tabla interna:
Para modificar el contenido de una tabla interna se utiliza la sentencia MODIFY.
Con INSERT se inserta un registro en la tabla interna.
Para borrar un registro de una tabla interna se utiliza la sentencia DELETE.
Para borrar todo el contenido de una tabla interna se utiliza la sentencia REFRESH.
 
 
 
Agradecimiento:
Ha agradecido este aporte: Alvaro Ardila Sandoval
Sobre el autor
Publicación académica de Carmelo Salomón Ortiz González, en su ámbito de estudios para la Carrera Consultor ABAP.
Carmelo Salomón Ortiz González
Profesión: Tsu Sistemas /abogado con Maestría Gestión Logística y Gerencia Tributaria - Venezuela - Legajo: FD67Q
✒️Autor de: 21 Publicaciones Académicas
🎓Egresado de los módulos:
Disponibilidad Laboral: FullTime
Presentación:
Profesional con amplia experiencia en empresas del sector electrónico y de servicios. experticia comprobada en la evaluación y optimización de procesos de negocios. consultor certificado sap mm.
Certificación Académica de Carmelo Ortiz