PDA

Ver la Versión Completa : ¿Existe alguna forma de trabajar con variables dinámicas?


jtristan
29/04/09, 14:02:08
Hola,

tengo que recorrer 16 campos de una tabla de la forma mseg001 ... mseg016, hacer comprobaciones en estos campos y cálculos.
No quería tener que tener 16 bloques iguales dentro del programa, y no sé, si existe alguna forma, de trabajar con una variables a la que le pase la tabla-campo y que me funcione.
Algo así:
DO 16 TIMES.
index = sy-index.
IF sy-index < 10.
cadena = 't_docmateriales-meg00'.
ELSE.
cadena = 't_docmateriales-meg0'.
ENDIF.
CONCATENATE cadena index INTO campo.

IF ( campo ) IS NOT INITIAL.
cantidad = cantidad + ( campo ).
ENDIF.
ENDDO.

Muchas gracias.
Un saludo.

Mauricio Hidalgo
29/04/09, 17:35:38
Seria algo como esto: lo que está entre {} corresponde a tus estructuras de datos.

Saludos


data cont(3) type N.
data campo(16) type C.
data cantidad like {tu_tabla}-meg001.
field-symbols <valor> type any.

loop at {tu_tabla} into {wa_tabla}.
cont = 1.
do 16 times.
concatenate 'MEG' cont into campo.
assign component campo of structure {wa_tabla} to <valor>.
if sy-subrc eq 0.
cantidad = cantidad + <valor>.
endif.
cont = cont + 1.
enddo.
endloop.

jtristan
30/04/09, 06:19:25
Muchísimas gracias.
Con este código la verdad que además de ahorrarme muchas líneas dejo el programa mucho más limpio.

Un saludo.