✒️ABAP Las tablas internas
ABAP Las tablas internas
Tablas internas
1) Que son las Tablas Internas:
Objeto de datos que permite crear una copia de una BBDD y alojarla en memoria con su misma estructura, para poder trabajar con sus datos sin acceder continuamente a la BBDD. La cantidad de registros está relacionada con los límites especificados en la instalación del sistema.
Uso típico:
- Almacenar temporalmente la info de una BBDD para su procesamiento futuro.
- Para preparar la info que se mostrará como salida.
- Para formatear datos a ser utilizados por otros servicios.
2) Declaración de una Tabla Interna:
DATA: BEGIND OF <tabla> OCCURS <n>,
<Def. campo>,
...,
END OF <tabla>.
<n>: Cantidad de líneas que se alojarán en memoria simultáneamente (no limitan la tabla), más una línea de cabecera. (área de trabajo). Por defecto su valor es 0, que permite cargar gran cantidad de registros.
Ejemplo: Tabla ti_proveedores.
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: (con cabecera wa_proveedores)
DATA: BEGIN OF wa_proveedores OCCURS 0,
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.
Existe otra forma sin tener que especificar aparte un area de trabajo, o cabecera, y que se realiza con la palabra reservada WITH HEADER LINE
Queremos crear una tabla interna ti_vuelvos del mismo tipo que la tabla estandar Sflight
DATA: <ti_vuelos> LIKE STANDAR TABLE OF <Sflight> WITH HEADER LINE
Otra forma:(con cabecera wa_proveedores)
DATA: <wa_proveedores> LIKE LINE OF <ti_proveedores>.
Se crea una estructura con formato idéntico a un registro de la ti_proveedores. Para enfatizar que un área de trabajo (Cabecera) está siendo utilizada por una línea de la tabla, se usa LIKE, en lugar de su tipo. Ahorra tener que buscar el verdadero tipo de la tabla.
3) Llenado de una Tabla Interna:
- APPEND TO: Añade registro en la última posición con los valores que tenga en el área de trabajo. (Cabecera)
APPEND TO <cabecera> TO <tabla>.
- SELECT:
4) Ordenamiento de una Tabla:
Sentencia SORT: Ordena la Tabla según el campo.
SORT <tabla> BY <campo> DESCENDING / ASCENDING.
5) Procesamiento de una Tabla Interna:
Para recorrer la tabla se utiliza LOOP-ENDLOOP:
LOOP AT <tabla> INTO <cabecera> WHERE NOT <campo>(condición) IS INITIAL.
---
END LOOP.
6) Lectura de una Tabla Interna:
READ TABLE: Lectura de un registro en concreto sin recorrer la tabla entera.
SY-SUBRC = 0 => Encontrado. OK. (sino <> 0).
READ TABLE <tabla> INTO <cabecera> WITH KEY <campo> = 'valor'.
INDEX: Lectura en una posición en particular.
READ TABLE <tabla> INTO <cabecera> INDEX 1. (nro que varía según la pos. elegida)
Cláusula BINARY SEARCH búsqueda más eficiente.
7) Modificado de una Tabla Interna:
MODIFY: Modifica el valor de un registro en la pos. determinada por INDEX
<cabecera-campo> = 'valor'.
MODIFY <tabla> FROM <cabecera> INDEX 1.
SY-SUBRC = 0 (OK) sino <> 0.
INSERT: Inserta un registro en una pos. determinada por INDEX
<cabecera-campo> = 'valor'.
INSERT <cabecera> INTO <tabla> INDEX 1.
DELETE: Borra el contenido de un registro de una tabla según un <campo>='valor' dado.
DELETE <tabla> WHERE <campo> = 'valor'.
REFRESH: Borra todo el contenido de una tabla.
REFRESH <tabla>.
DESCRIBE TABLE: Cuenta los registros de una tabla y los almacena en una variable.
DATA: <variable> TYPE i.
DESCRIBE TABLE <tabla> LINES <variable>.
NOTA: Antes de trabajar con una tabla interna siempre se debe realizar el CLEAR y REFRESH de la tabla.
 
 
 
Sobre el autor
Publicación académica de Ruben Dario Martucci, en su ámbito de estudios para la Carrera Consultor ABAP.
Ruben Dario Martucci
Profesión: Técnico Informático - Argentina - Legajo: UX76U
✒️Autor de: 58 Publicaciones Académicas
🎓Egresado del módulo:
Disponibilidad Laboral: FullTime
Certificación Académica de Ruben Martucci