✒️ABAP Las tablas internas
ABAP Las tablas internas
TABLAS INTERNAS
Una tabla interna es un objeto de datos, en otras palabras un conjunto de registros guardados en una configuración parecida a una tabla, que permite guardar datos con la misma estructura. La estructura es un grupo de campos que pertenecen a un diccionario de datos, pero estos no son guardados en el diccionario de datos sino que se mantienen temporalmente en memoria, la estructura es usada como una base para tablas internas. Por lo que una tabla interna solo existe dentro de la ejecución de un programa, guardando datos temporalmente.
Existen 3 tipos de tablas internas:
- Estándar
- Sorted
- Hashed
El uso 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 mostraran como salida del programa
- Para formatear datos para ser utilizados por otros servicios.
¿CÓMO SE DECLARA UNA TABLA INTERNA?
Podemos utilizar la adición WITH HEADER LINE para crear en la misma tabla interna la cabecera:
DATA: tabla LIKE TABLE OF dfkop WITH HEADER LINE.
Otra forma es utilizando la adición OCCURS 0, por lo general se especifica la cantidad 0 lo que permite trabaja con tablas de gran cantidad de registros, la cantidad de líneas que se especifican en OCCURS no limitan el tamaño de las tablas sino la cantidad de registro que se guardaran en memoria simultáneamente. La declaración es tal como vemos a continuación:
DATA: BEGIN OF tabla OCCURS N.
Def.campos
END OF tabla.
Otra forma es utilizando TYPES:
TYPES:
BEGIN OF ty_ekko,
ebeln TYPE ebeln,
bukrs TYPE bukrs,
etc,
END OF ty_ekko.
DATA: wa_ekko TYPE ty_ekko,
ti_ekko TYPE STANDARD TABLE OF ty_ekko.
LLENADO DE UNA TABLA INTERNA
Para inserta datos en una tabla interna se utiliza el WORK AREA, esta es la cabecera de la tabla interna que contiene el registro de la tabla que se está procesando en ese momento.
En la actualidad cuando se declara una tabla interna, se recomienda declarar un tipo de datos utilizando TYPES, luego declarar una área de trabajo que utilice dicho TYPE y por último la tabla interna utilizará esa área de trabajo para su declaración. No se recomienda utilizar la palabra reservada WITH HEADER LINE para la declaración de una tabla interna que incluya su cabecera.
- APPEND TO: Para llenar con datos una tabla interna, se asignan los datos y luego se utiliza la sentencia APPEND TO. Por ejemplo:
CLAER wa_proveedores.
wa_proveedores-nombre = ´Ernesto´.
wa_proveedores-apellido = ´Villanueva´.
wa_proveedores-dni = ´24987546´
APPEND wa_proveedores TO t1_proveedores.
- SORT: Para ordenar una tabla interna. Por ejemplo:
SORT ti_proveedores BY dni DESCENDING (ASCENDING ordena de menor a mayor)
- LOOP-ENDLOOP: Para procesar y recorrer registro a registro una tabla interna. Por ejemplo:
LOOP AT ti_proveedorres INTO wa_proveedores
WHERE NOT nombre IS INSTAL.
ENDLOOP.
Si no se cumple con la condición WHERE el, SYSUBRC será distinto de cero.
Existe otra forma de declarar una estructura o área de trabajo con Like–of, por ejemplo:
DATA wa_proveedores LIKE-OF ti_proveedores.
- READ TABLE: Para leer datos de una tabla interna se utiliza la sentencia READ TABLE, esta carga los registros de la tabla interna en un área de trabajo con el índice o clave del registro que se quiere leer. Por ejemplo:
READ TABLE tu_poveedores INTO wa_proveedores WITH KEY nombre = ´Ariel´.
Para indicar el índice se hace de la siguiente manera:
READ TABLE ti_proveedores INTO wa_poveedores INDEX 1.
- Para tener una búsqueda más eficiente se agrega la cláusula BINARY SEARCH.
- MODIFY: Si queremos modificar el contenido de un registro de una tabla interna. Por ejemplo:
Wa_proveedores-dni = ´24987500´.
MODIFY ti_proveedores FROM wa_proveedores INDEX 1.
- INSERT: Para agregar un registro en una posición determinada. Por ejemplo insertar un registro en la posición 2.
wa_proveedores-nombre = ´Marcelo´.
wa_proveedores-apellido = ´Rivarola´.
wa_proveedores-dni = ´20857492´.
INSERT wa_proveedores INTO ti_proveedores INDEX 2.
- DELETE: Borrar el contenido de un registro de una tabla interna. Ejemplo:
DELETE ti_proveedores WHERE dni = ´20857492´.
- REFRESH: borrar todo el contenido de una tabla interna y no la tabla en si.
REFRESH ti_proveedores.
- DESCRIBE TABLE: Para saber cuántos registros tienen una tabla.
DATA: v_lineas TYPE i.
DESCRIBE TABLE ti_proveedores LINES v_lineas.
- Clear seguida de la cabecera: Inicializar el área de trabajo o cabecera.
- FREE: Liberar espacio ocupado por una tabla interna en memoria
- Data: wa_proveedores like-of ti_proveedres.
 
 
 
Sobre el autor
Publicación académica de Veronica Esmeralda Miramontes Varo, en su ámbito de estudios para la Carrera Consultor ABAP.
Veronica Esmeralda Miramontes Varo
Profesión: Maestra en Ciencias de la Computaci - Mexico - Legajo: DV64Z
✒️Autor de: 95 Publicaciones Académicas
🎓Egresado de los módulos:
Disponibilidad Laboral: FullTime
Presentación:
Hola, soy veronica miramontes, mexicana. estoy aquí para aprender sobre el mundo de sap. espero obtener los mejores conocimientos y poder contribuir en algo a la comunidad cvosoft.
Certificación Académica de Veronica Miramontes