Tabla interna de SAP ABAP: crear, leer, completar, copiar y amp; Borrar

Tabla de contenido:

Anonim

¿Qué es una mesa interna?

INTERNAL TABLE se utilizan para obtener datos de una estructura fija para uso dinámico en ABAP. Cada línea de la tabla interna tiene la misma estructura de campo. El uso principal de las tablas internas es almacenar y formatear datos de una tabla de base de datos dentro de un programa.

En este tutorial aprenderá:

  • ¿Qué es una mesa interna?
  • ¿Qué es un área de trabajo?
  • ¿Diferencia entre mesa interna y área de trabajo?
  • Tipos de tablas internas
  • Crear tablas internas
  • Poblando Mesas Internas
  • Copia de tablas internas
  • Lectura interna
  • Eliminar tablas internas

¿Qué es un área de trabajo?

Las áreas de trabajo son filas únicas de datos. Deben tener el mismo formato que cualquiera de las tablas internas. Se utiliza para procesar los datos en una tabla interna una línea a la vez.

¿Diferencia entre mesa interna y área de trabajo?

Una imagen dice mil palabras :-)

Tipos de tablas internas

Hay dos tipos de tablas internas.

  1. Mesas internas con línea HEADER
  2. Mesas internas sin línea HEADER.

Tablas internas con 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 HEADER.
  • Es aquí donde se realizan todos los cambios o cualquier acción sobre 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 a la mesa.
  • El área de trabajo debe especificarse explícitamente cuando necesitemos acceder a dichas tablas.
  • Por lo tanto, no se puede acceder directamente a estas tablas.

Crear tablas internas

Hay muchas formas de crear una tabla interna.
Veámoslos uno por uno: 1. Mediante el uso de la instrucción Type Creemos
ahora una tabla interna itab usando la instrucción TYPE.
La sintaxis es -

Tipos: comienzo de línea,column1 tipo I,column2 tipo I,fin de la línea.

Ejemplo:

TIPOS: comienzo de línea,empno tipo I,empname (20) tipo c,fin de la línea.

La declaración TYPES crea una línea de estructura tal como se define.
Para crear realmente una tabla interna, use el siguiente comando:

La línea de tipo de datos itab ocurre 10.

Se crea una tabla interna itab con la estructura de línea. Además de declarar la estructura de una tabla interna, la cláusula OCCURS también define cuántas entradas de la tabla se mantienen en el almacenamiento principal (en este caso 10). Los registros adicionales se escriben en el área de paginación y pueden afectar el rendimiento.
2. Refiriéndose a otra tabla
Puede crear una tabla interna refiriéndose a una tabla existente. La tabla existente podría ser una tabla SAP estándar, una tabla Z u otra tabla interna.
Sintaxis-

Datos   [con línea de encabezado].

Ejemplo-

DATA itab TYPE línea OCCURS 10 con encabezado.

Aquí se crea una tabla interna itab del tipo línea con una línea de encabezado. Tenga en cuenta que "con línea de encabezado" es opcional
3. Al referirse a la
sintaxis de estructura existente-

Los datos  LIKE  aparecen n [con línea de encabezado].

Ejemplo-

DATOS ITAB COMO sline OCURRE 10.

Aquí se crea una tabla itab que tiene la misma estructura que la de la línea
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, de forma predeterminada .
Sintaxis -

Datos: Comienzo de  ocurre ,,…,Fin de .

Ejemplo -

Datos: el comienzo de itab ocurre 10,column1 tipo I,column2 (4) tipo C,column3 como mara-ernam,Fin de itab.

Se crea la tabla interna itab

Poblando Mesas Internas

Ahora que hemos creado con éxito algunas tablas internas, veamos cómo las rellenamos con algunos registros. Hay varios métodos disponibles para completar tablas 1. Agregar datos línea por línea El primer método disponible es el uso de la instrucción APPEND.
Usando la declaración APPEND podemos agregar una línea de otra área de trabajo a la tabla interna o podemos agregar una línea inicial a la tabla interna ...
Sintaxis -
APÉNDICE [ A / LÍNEA INICIAL A] .
Aquí el área de trabajo o la línea inicial se adjunta a la tabla interna .
La variable de sistema SY-TABIX contiene el índice de la línea adjunta.
Ejemplo:
Datos: el comienzo de itab ocurre 10,col1 tipo C,col2 tipo I,final de itab.Agregue la línea inicial a itab.

Resultados: '' '0'
Las líneas iniciales agregan una línea inicializada con el valor correcto para su tipo a la tabla. Aquí, col1 es un carácter y col2 es un número entero. Luego APPEND línea inicial, agrega una línea inicializada con respecto al tipo de datos de las columnas, es decir, espacio para col1 y 0 para col2. 2. El uso de la declaraciónCOLLECT COLLECT es otra forma de declaración que se utiliza para completar las tablas internas. Generalmente se usa COLLECT al insertar líneas en una tabla interna con clave estándar única.
Sintaxis-
RECOGER [ INTO] .

En caso de tablas con línea de encabezado, se omite la opción INTO. Suponga que ya hay una entrada que tiene una clave igual a la que está intentando agregar, luego no se agrega una nueva línea a la tabla, pero los campos numéricos de ambas entradas se agregan y solo una entrada correspondiente a la clave está presente . El valor de SY-TABIX se cambia a la fila de la entrada original. Else COLLECT actúa de manera similar a APPEND y SY-TABIX contiene el índice de la línea procesada. 3 . El uso de la instrucción INSERT La instrucciónINSERT agrega una línea / área de trabajo a la tabla interna. Puede especificar la posición en la que se agregará la nueva línea utilizando la cláusula INDEX con la instrucción INSERT.
Sintaxis
INSERTAR [ INTO / INICIAL LINE INTO]  [index ].
Aquí, el área de trabajo o LÍNEA INICIAL se inserta en la tabla interna en el índice .

Copia de tablas internas

El contenido de una tabla interna se puede copiar en otra mediante la instrucción APPEND LINES o INSERT LINES. Una forma más sencilla es utilizar cualquiera de las siguientes sintaxis.
MUEVA  a .O = .

Estos copian el contenido de ITAB1 a ITAB2. En caso de tablas internas con línea de encabezado, tenemos que usar [] en orden para distinguir del área de trabajo. Entonces, para copiar el contenido de las tablas internas con la línea de encabezado, la sintaxis se convierte en,
itab1 [] = itab2 [].

Leer tablas internas

Ahora estamos familiarizados con la creación de tablas internas y su llenado con datos. Ahora veremos cómo usamos realmente los datos o recuperamos los datos de las tablas internas. 1. Usando Loop-EndloopUna de las formas de acceder o leer la tabla interna es usando LOOP-ENDLOOP.
Sintaxis
BUCLE EN 
 [INTO ]… BUCLE FINAL.
Aquí, cuando dice LOOP AT ITABLE, entonces la tabla interna ITABLE se lee línea por línea. Puede acceder a los valores de las columnas para esa línea durante cualquier parte de la estructura LOOP-ENDLOOP. El valor de SY-SUBRC se establece en 0 , incluso si solo se lee un registro. 2. Usando READEl otro método de leer la tabla interna es usando la instrucción READ.
Sintaxis-
LEER TABLA 
[INTO ] INDICE .
Esta declaración lee la línea actual o la línea especificada por el índice . El valor de SY-TABIX es el índice de la línea leída. Si se encuentra una entrada con el índice especificado, SY-SUBRC se establece en 0. Si el índice especificado es menor que 0, se produce un error de tiempo de ejecución. Si el índice especificado excede el tamaño de la tabla, SY-SUBRC se establece en 4.

Eliminar 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 borrar líneas.
Sytax
BORRAR .

Esta declaración funciona solo dentro de un bucle. Elimina la línea actual. Puede eliminar las líneas en un bucle condicionalmente agregando la cláusula WHERE. 2. Eliminando líneas usando el índice.
Se utiliza para eliminar una línea de la tabla interna en cualquier índice conocido.
Sintaxis
BORRAR  INDICE .
Se elimina la línea con el índice . El índice de la siguiente línea se reduce en 1.