¿Cuál es la diferencia entre la mesa interna y el área de trabajo y cómo funcionan?
La tabla interna es una estructura de memoria temporal bidimensional similar a la tabla de la base de datos. Podemos almacenar varios registros en la tabla interna y también usando punteros de registro podemos hacer las actividades como leer, anexar, eliminar, modificar, etc.
Mientras que el área de trabajo es una variable declarada con el tipo de una tabla interna o de una tabla de base de datos. Solo puede almacenar un registro a la vez. Es como una declaración de estructura en C. Puede referir columnas individuales en el área de trabajo con los nombres.
Si declara una tabla interna con la cláusula «CON LÍNEA DE ENCABEZADO», la tabla interna en sí actúa como un área de trabajo. Por ejemplo,el ITAB es un área de trabajo y el ITAB es la mesa interna.
Si está familiarizado con ORACLE PLSQL, el área de trabajo es similar a %ROW_TYPE e internal es similar al TIPO de TABLA.
Más información sobre el uso de la tabla interna con y sin línea de encabezado:
Al crear un objeto de tabla interno, también puede declarar una línea de encabezado con el mismo nombre. Puede utilizar la línea de encabezado como área de trabajo cuando procesa la tabla interna. Las instrucciones ABAP que usa con tablas internas tienen formularios cortos que puede usar si su tabla interna tiene una línea de encabezado. Estas instrucciones asumen automáticamente la línea de encabezado como un área de trabajo implícita. La siguiente tabla muestra los estados que debe usar para tablas internas sin una línea de encabezado y las instrucciones equivalentes que puede usar para tablas internas con una línea de encabezado:
Operaciones sin línea de encabezado
Operaciones con línea de encabezado
Operaciones para todos los tipos de tabla
INSERTAR < wa> EN LA TABLA < itab>.
INSERTAR TABLA ITAB.
RECOGER < wa> EN < itab>.
RECOGER < itab>.
TABLA DE LECTURA < itab>… HACIA < wa>.
TABLA DE LECTURA < itab>…
MODIFICAR LA TABLA < itab> DE < wa>…
MODIFICAR TABLA < itab>…
MODIFICAR < itab> DE < wa>…DONDE …
MODIFICAR < itab>… DONDE …
ELIMINAR TABLA < itab> DE < wa>.
ELIMINAR TABLA < itab>.
BUCLE EN ITAB EN < wa> …
BUCLE EN ITAB …
Operaciones para tablas de índices
ANEXAR < wa> A < itab>.
ANEXAR < itab>.
INSÉRTESE < wa> EN < itab>…
INSÉRTESE < itab>…
MODIFICAR < itab> DE < wa>…
MODIFICAR < itab>…
Usar la línea de encabezado como área de trabajo significa que puede usar instrucciones más cortas; sin embargo,no son necesariamente más fáciles de entender, ya que no se puede reconocer inmediatamente el origen y el objetivo de la asignación.Además, el hecho de que la tabla y su línea de encabezado tengan el mismo nombre puede causar confusión en operaciones con tablas internas enteras. Para evitar la confusión, debe usar tablas internas con áreas de trabajo con nombres diferentes.
El siguiente ejemplo muestra dos programas con la misma función. Uno usa una línea de encabezado, el otro no.
Con línea de encabezado:
TIPOS: INICIO DE LÍNEA,
COL1 TIPO I,
COL2 TIPO I,
FIN DE LÍNEA.
TABLA DE LÍNEA CON HASH DE TIPO ITAB DE DATOS CON CLAVE ÚNICA
COL1
CON LÍNEA DE ENCABEZADO.
HACER 4 VECES.
ITAB-COL1 = SY-INDEX.
ITAB-COL2 = SY-INDEX * * 2.
INSERTAR TABLA ITAB.
ENDDO.
ITAB-COL1 = 2.
LEA LA TABLA ITAB DE ITAB.
ITAB-COL2 = 100.
MODIFICAR LA TABLA ITAB.
ITAB-COL1 = 4.
ELIMINAR TABLA ITAB.
BUCLE EN ITAB.
ESCRIBA: / ITAB-COL1, ITAB-COL2.
ENDLOOP.
Sin línea de encabezado:
TIPOS: INICIO DE LÍNEA,
COL1 TIPO I,
COL2 TIPO I,
FIN DE LÍNEA.
DATOS: TABLA DE LÍNEA CON HASH DE TIPO ITAB CON CLAVE ÚNICA COL1, LÍNEA SIMILAR A WA DE ITAB.
HACER 4 VECES.
WA-COL1 = SY-INDEX.
WA-COL2 = SY-INDEX * * 2.
INSERTE WA EN LA TABLA ITAB.
ENDDO.
WA-COL1 = 2.
LEA LA TABLA ITAB DE WA A WA.
WA-COL2 = 100.
MODIFICAR LA TABLA ITAB DE WA.
WA-COL1 = 4.
ELIMINE LA TABLA ITAB DE WA.
BUCLE EN ITAB EN WA.
ESCRIBA: / WA-COL1, WA-COL2.
ENDLOOP.
La lista, en ambos casos, aparece de la siguiente manera:
1 1
2 100
3 9
Las declaraciones en el programa que no utilice un headerline son más fáciles de entender. Como medida adicional, podría tener un área de trabajo adicional solo para especificar la clave de la tabla interna, pero a la que no se asignan otros valores de la tabla.
Lea también
Un ejemplo de un programa ListBox
Lista de Libros ABAP
Certificación,Programación, Smartforms, Sapscripts y Libros de Programación Orientados a Objetos ABAP/4
Formularios inteligentes
SAP Smartforms
Menú ABAP:
ABAP Example Hintsand Tips
Return to Index:-
SAP ABAP/4 Programming,Basis Administration, Configuration Hints and Tips