SAP ABAP: creación de tablas internas

La declaración DATA se utiliza para declarar una tabla interna. El programa debe saber dónde comienza y termina la mesa. Por lo tanto, use la instrucción BEGIN OF y luego declare el nombre de la tabla. Después de esto, se usa la adición OCCURS, seguida de un número, aquí 0. OCCURS le dice a SAP que se está creando una tabla interna y el 0 indica que inicialmente no contendrá ningún registro. Luego se expandirá a medida que se llene de datos.

A continuación se muestra la sintaxis:

DATA: BEGIN OF <internal_tab> Occurs 0,

Creemos los campos en una nueva línea. Por ejemplo, cree un 'nombre' que se declare como LIKE ZCUSTOMERS1-name. Cree otro campo llamado 'dob', COMO ZCUSTOMERS1-dob. Inicialmente, es útil dar a los nombres de campo de las tablas internas los mismos nombres que a otros campos que se han creado en otro lugar. Finalmente, declare el final de la tabla interna con "END OF <internal_tab>". como se muestra en el siguiente código -

DATA: BEGIN OF itab01 Occurs 0,
   name LIKE ZCUSTOMERS1-name,
   dob LIKE ZCUSTOMERS1-dob, 
END OF itab01.

Aquí 'itab01' se usa comúnmente como abreviatura al crear tablas temporales en SAP. La cláusula OCCURS se utiliza para definir el cuerpo de una tabla interna declarando los campos de la tabla. Cuando se utiliza la cláusula OCCURS, puede especificar una constante numérica 'n' para determinar la memoria predeterminada adicional si es necesario. El tamaño predeterminado de memoria que utiliza la cláusula OCCUR 0 es de 8 KB. Ahora se crea la estructura de la tabla interna y se puede escribir el código para llenarla con registros.

Se puede crear una tabla interna con o sin usar una línea de encabezado. Para crear una tabla interna con una línea de encabezado, use la cláusula BEGIN OF antes de la cláusula OCCURS o la cláusula WITH HEADER LINE después de la cláusula OCCURS en la definición de la tabla interna. Para crear una tabla interna sin una línea de encabezado, use la cláusula OCCURS sin la cláusula BEGIN OF.

También puede crear una tabla interna como un tipo de datos local (un tipo de datos que se usa solo en el contexto del programa actual) utilizando la instrucción TYPES. Esta declaración utiliza la cláusula TYPE o LIKE para hacer referencia a una tabla existente.

La sintaxis para crear una tabla interna como un tipo de datos local es:

TYPES <internal_tab> TYPE|LIKE <internal_tab_type> OF 
   <line_type_itab> WITH <key> INITIAL SIZE <size_number>.

Aquí, <internal_tab_type> especifica un tipo de tabla para una tabla interna <internal_tab> y <line_type_itab> especifica el tipo de una línea de una tabla interna. En la sentencia TYPES, puede utilizar la cláusula TYPE para especificar el tipo de línea de una tabla interna como tipo de datos y la cláusula LIKE para especificar el tipo de línea como objeto de datos. Especificar una clave para una tabla interna es opcional y si el usuario no especifica una clave, el sistema SAP define un tipo de tabla con una clave arbitraria.

TAMAÑO INICIAL <size_number> crea un objeto de tabla interno asignándole una cantidad inicial de memoria. En la sintaxis anterior, la cláusula INITIAL SIZE reserva un espacio de memoria para las líneas de la tabla size_number. Siempre que se declara un objeto de tabla interno, el tamaño de la tabla no pertenece al tipo de datos de la tabla.

Note - Se consume mucha menos memoria cuando se llena una tabla interna por primera vez.

Ejemplo

Step 1- Abra el editor ABAP ejecutando el código de transacción SE38. Aparece la pantalla inicial de ABAP Editor.

Step 2 - En la pantalla inicial, ingrese un nombre para el programa, seleccione el botón de radio Código fuente y haga clic en el botón Crear para crear un nuevo programa.

Step 3- En el cuadro de diálogo 'ABAP: Atributos del programa', ingrese una breve descripción del programa en el campo Título, seleccione la opción 'Programa ejecutable' en el menú desplegable Tipo en el cuadro de grupo Atributos. Haga clic en el botón Guardar.

Step 4 - Escriba el siguiente código en el editor ABAP.

REPORT ZINTERNAL_DEMO. 
TYPES: BEGIN OF CustomerLine, 
Cust_ID TYPE C, 
Cust_Name(20) TYPE C, 
END OF CustomerLine. 
 
TYPES mytable TYPE SORTED TABLE OF CustomerLine  
WITH UNIQUE KEY Cust_ID. 
WRITE:/'The mytable is an Internal Table'.

Step 5 - Guarde, active y ejecute el programa como de costumbre.

En este ejemplo, mytable es una tabla interna y se define una clave única en el campo Cust_ID.

El código anterior produce la siguiente salida:

The mytable is an Internal Table.