MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   REFRESH a varias tablas (foro/showthread.php?t=8299)

tere90210 10/10/07 20:52:48

REFRESH a varias tablas
 
: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

Field-Symbols
 
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.


Husos Horarios son GMT. La hora en este momento es 10:51:17.

www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web