¿Existe alguna forma de trabajar con variables dinámicas?

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • jtristan
    Senior Member
    • oct
    • 240

    #1

    ¿Existe alguna forma de trabajar con variables dinámicas?

    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
    Senior Member
    • may
    • 481

    #2
    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.

    Comentario

    • jtristan
      Senior Member
      • oct
      • 240

      #3
      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.

      Comentario

      Trabajando...