
¿Qué es una tabla interna?
Las TABLAS INTERNAS se utilizan para obtener datos de una estructura fija para su uso dinámico en ABAP. Cada línea en la tabla interna tiene la misma estructura de campo. El uso principal de las tablas internas es para almacenar y formatear datos de una tabla de base de datos dentro de un programa.
¿Qué es un área de trabajo?
Las áreas de trabajo son filas de datos individuales. Deben tener el mismo formato que cualquiera de las tablas internas. Se utiliza para procesar los datos en una tabla interna línea por línea.
Diferencia entre tabla interna y área de trabajo
Una imagen dice más que mil palabras
Tipos de tablas internas
Hay dos tipos de tablas internas. Tablas internas con línea de encabezado y tablas internas sin línea de encabezado.
Tablas internas con línea de encabezado
Aquí, el sistema crea automáticamente el área de trabajo. El área de trabajo tiene el mismo tipo de datos que la tabla interna. Esta área de trabajo se llama línea de encabezado. Es aquí donde se realizan todos los cambios o cualquier acción en el contenido de la tabla. Como resultado de esto, los registros se pueden insertar directamente en la tabla o acceder directamente desde la tabla interna.
Tablas internas sin línea de encabezado
Aquí no hay un área de trabajo asociada con la tabla. El área de trabajo debe especificarse explícitamente cuando necesitamos acceder a tales tablas. Por lo tanto, estas tablas no se pueden acceder directamente.
Creación de tablas internas
Hay muchas formas de crear una tabla interna. Vamos a verlas una por una.
1.Usando la declaración TYPE
Creemos ahora una tabla interna itab utilizando la declaración TYPE. La sintaxis es Types: begin of line, columna1 type I, columna2 type I, end of line.
Ejemplo: TYPES: begin of line, empno type I, empname(20) type c, end of line.
La declaración TYPES crea una estructura line según lo definido. Para crear realmente una tabla interna itab, use el siguiente comando.
Datos itab tipo línea ocurre 10.
2. Refiriéndose a otra tabla
Puedes crear una tabla interna haciendo referencia a una tabla existente. La tabla existente podría ser una tabla SAP estándar, una tabla Z o otra tabla interna.
Sintaxis- Datos <f> <tipo> [con línea de encabezado].
Ejemplo- DATA itab TYPE line OCCURS 10 WITH HEADER LINE.
3.Refiriéndose a una estructura existente
Sintaxis- Datos <f> LIKE <struct> ocurre n [with header line].
Ejemplo- DATA itab LIKE sline OCCURS 10.
4.Creando una nueva estructura
Creemos ahora una tabla interna con una estructura propia. Aquí la tabla se crea con una línea de encabezado, por defecto.
Sintaxis – Datos: begin of <f> occurs <n>, <component declaration>, ……………………………, end of <f>.
Ejemplo – Datos: begin of itab occurs 10, columna1 tipo I, columna2(4) tipo C, columna3 como mara-ernam, Fin de itab.
Población de tablas internas
Ahora que hemos creado con éxito algunas tablas internas, veamos cómo las poblamos con algunos registros. Hay varios métodos disponibles para poblar las tablas.
1. Añadir datos línea por línea
El primer método disponible es el uso de la declaración APPEND. Usando la declaración APPEND, podemos añadir una línea de otro área de trabajo a la tabla interna o podemos añadir una línea inicial a la tabla interna.
Sintaxis – APPEND [<wa> TO / INITIAL LINE TO] <itable>.
Aquí, el área de trabajo <wa> o la línea inicial se agregan a la tabla interna <itable>.
Ejemplo: Datos: begin of itab ocurre 10, col1 tipo C, col2 tipo I, fin de itab. Anexar línea inicial a itab.
2. Usar la declaración COLLECT
COLLECT es otra forma de declaración utilizada para poblar las tablas internas.
Sintaxis- COLLECT [<wa> INTO] <itable>.
3. Usando la declaración INSERT
La declaración INSERT añade una línea/área de trabajo a la tabla interna. Puedes especificar la posición en la que se añadirá la nueva línea mediante el uso de la cláusula INDEX con la declaración INSERT.
Sintaxis INSERT [<wa> INTO / INITIAL LINE INTO] <itable> [index <idx>].
Copiar tablas internas
El contenido de una tabla interna se puede copiar a otra utilizando la declaración APPEND LINES o INSERT LINES.
Un modo más simple es usar cualquiera de las siguientes sintaxis:
MOVIMIENTO <itab1> A <itab2>.
O <itab1> = <itab2>.
Leer tablas internas
Ahora que estamos familiarizados con la creación de tablas internas y cómo poblarlas con datos, veamos cómo utilizamos o recuperamos los datos de las tablas internas.
1. Usando el bucle – Endloop
Una de las formas de acceder o leer la tabla interna es mediante el bucle LOOP-ENDLOOP.
Sintaxis LOOP AT <itable> [INTO <wa>] …………………………….. ENDLOOP.
2. Usando READ
El otro método de lectura de la tabla interna es mediante el uso de la declaración READ.
Sintaxis- LEER TABLA <itable> [INTO <wa>] ÍNDICE <idx>.
Borrado de tablas internas
Hay muchas formas de eliminar líneas de una tabla interna.
1. Eliminar líneas en un bucle
Esta es la forma más sencilla de eliminar líneas.
Sintaxis ELIMINAR <ITABLE>.
2. Eliminar líneas usando el índice
Esto se utiliza para eliminar una línea de la tabla interna en cualquier índice conocido.
Sintaxis ELIMINAR <ITABLE> INDICE <IDX>.
Calle Eloy Gonzalo, 27
Madrid, Madrid.
Código Postal 28010
Paseo de la Reforma 26
Colonia Juárez, Cuauhtémoc
Ciudad de México 06600
Real Cariari
Autopista General Cañas,
San José, SJ 40104
Av. Jorge Basadre 349
San Isidro
Lima, LIM 15073