Estoy tratando de encontrar la forma de leer una tabla interna que se debe crear dinámicamente. Creé el siguiente informe que llena una tabla interna dinámica con datos. En la última línea, estoy tratando de leerlo con una clave (mandt
por ejemplo). El problema es que recibo el error, "el tipo especificado no tiene estructura y, por lo tanto, no hay ningún componente llamado MANDT".Lectura de itab con la especificación de clave dinámica
He depurado y puedo ver que se ha completado con éxito y que la estructura de la tabla (nombres de campo) es correcta. El problema se presenta cuando trato de leer la tabla en un área de trabajo. Tal vez estoy haciendo esto mal, pero parece que algo debería ser posible todo, y tengo la sensación de que me estoy perdiendo algo pequeño.
La razón por la que estoy probando esto es porque he encontrado selecciones idénticas en un programa y quiero almacenar los registros en la memoria y leerlos desde allí para evitar los accesos a la base de datos. Esto es fácil de implementar, sin embargo, no lo he hecho cuando la tabla, la cláusula where
y la cláusula into
de la instrucción OPEN SQL que estoy tratando de optimizar son dinámicas.
Saludos.
DATA: t681_rep TYPE TABLE OF t681 , wa_681 LIKE LINE OF t681_rep,
tabref TYPE REF TO data , waref TYPE REF TO data.
FIELD-SYMBOLS: <any_tab> TYPE ANY TABLE,
<any_wa> TYPE ANY,
<var1> TYPE ANY.
"fill t681_rep
SELECT *
FROM t681
INTO TABLE t681_rep
UP TO 1 ROWS WHERE kotab = 'A002'.
READ TABLE t681_rep INTO wa_681 WITH KEY kotab = 'A002'.
IF sy-subrc = 0.
"if A002 is found create a table of that type and fill it
CREATE DATA tabref TYPE TABLE OF (wa_681-kotab).
ASSIGN tabref->* TO <any_tab>.
SELECT * UP TO 10 ROWS
FROM (wa_681-kotab)
INTO TABLE <any_tab>.
ENDIF.
CREATE DATA waref TYPE a002.
ASSIGN waref->* TO <any_wa>.
READ TABLE <any_tab> ASSIGNING <any_wa> WITH KEY mandt = '800'. <- problem area
IF sy-subrc = 0.
"do stuff with <any_wa>...
ENDIF.
Hola Brian, gracias por su respuesta. Eso funciona, pero estoy buscando una solución completamente dinámica. En pseudocódigo algo así como: –
Parece que falta algo de ese comentario ... –