PDA

Ver la Versión Completa : REFRESH a varias tablas


tere90210
10/10/07, 20:52:48
:confused: 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
10/10/07, 21:33:03
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

tere90210
10/10/07, 22:19:30
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?:)

SAProly
11/10/07, 14:40:43
Buenos dias :D, 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 :D .

fede_82
11/10/07, 18:48:57
Eso no lo sabía, gracias SAPRoly!

Tere_90210, me puedes enviar un mensaje privado si quieres.