REFRESH a varias tablas

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • tere90210
    Junior Member
    • abr
    • 17

    #1

    REFRESH a varias tablas

    Buen día:

    Quisiera hacer un REFRESH a 45 o más tablas internas con una sola sentencia, mas no quisiera ocupar tantas líneas de código.

    Intenté algo con los FIELD-SYMBOLS pero no sé cómo aplicarlo en este caso.

    FIELD-SYMBOLS <fs> TYPE ANY. -> Declaro el FieldSymbol

    ASSIGN lv_tabla TO <fs>. -> lv_tabla, contiene el nombre de la tabla a procesar (tan sólo el nombre).

    REFRESH <fs>. -> Me dirá que <fs> no es una tabla interna.


    ¿Alguien sabe algún otro método que pudiera utilizar?

    De antemano, gracias.
  • fede_82
    Junior Member
    • oct
    • 3

    #2
    Buen dia Tere,

    No se si todavia necesitaras esto o ya lo habras solucionado de otra manera, pero igual trataré de ayudarte.

    Entiendo que lv_tabla es una variable q contiene el nombre de la tabla, y asumo q las tablas se llaman, por ej: tabla1, tabla2 ... tabla45

    Creo que deberias hacer algo como lo siguiente

    -------
    data l_cont type i.
    data <fs> type any.
    data l_nom_tabla(10) type c.

    do 45 times. " Se repite la cantidad de veces segun tablas que necesites
    add 1 to l_cont. " contador, será el numero de tabla.

    concatenate lv_tabla l_cont into l_nom_tabla.
    * Asi l_nom_tabla ira teniendo el nombre de cada una de las tablas.
    * En este caso lv_tabla = 'tabla' => el FS apuntara a tabla1 .... tabla45

    assign (lv_tabla) to <fs>.


    if sy-subrc = 0.
    refresh <fs>.
    unassign <fs>.
    endif.

    enddo.

    clear l_cont.
    --------------------

    Siempre poner un if sy-subrc = 0 luego de un assign para evitar DUMPs si no pudo ser asignado el FS por algun motivo.

    Espero q te sirva,
    saludos!

    -Fede

    Comentario

    • tere90210
      Junior Member
      • abr
      • 17

      #3
      Bueno, como indiqué, al hacer el REFRESH <fs>, me dice que <fs> no es una tabla interna.

      Resulta que no tuve qué hacer el REFRESH para tantas tablas. Tan sólo para 4 y eso no afecta mucho el código.

      Muchas gracias Fede_82.

      ¿Puedo saber tu correo electrónico?

      Comentario

      • SAProly
        Junior Member
        • oct
        • 2

        #4
        Field-Symbols

        Buenos dias , fede_82 tu solución me parecio muy buena, lo probé y me apareció el mismo error "<fs> no es una tabla interna", lo que hice fue cambiar:

        data <fs> type any.

        Por

        data <fs> type any table.

        Y me funciona bien .

        Comentario

        • fede_82
          Junior Member
          • oct
          • 3

          #5
          Eso no lo sabía, gracias SAPRoly!

          Tere_90210, me puedes enviar un mensaje privado si quieres.

          Comentario

          Trabajando...