MUNDOSAP

Regresar   MUNDOSAP > DESARROLLO > Programación ABAP IV
Nombre de Usuario
Contraseña
Home Descargas Registrar FAQ Miembros Calendario Buscar Temas de Hoy Marcar Foros Como Leídos




 
Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Viejo 10/10/07, 20:52:48
tere90210 tere90210 is offline
Junior Member
 
Fecha de Ingreso: abr 2007
Mensajes: 17
Question 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.
Responder Con Cita
  #2  
Viejo 10/10/07, 21:33:03
fede_82 fede_82 is offline
Junior Member
 
Fecha de Ingreso: oct 2007
Mensajes: 3
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
Responder Con Cita
  #3  
Viejo 10/10/07, 22:19:30
tere90210 tere90210 is offline
Junior Member
 
Fecha de Ingreso: abr 2007
Mensajes: 17
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?
Responder Con Cita
  #4  
Viejo 11/10/07, 14:40:43
SAProly SAProly is offline
Junior Member
 
Fecha de Ingreso: oct 2007
Mensajes: 2
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 .
Responder Con Cita
  #5  
Viejo 11/10/07, 18:48:57
fede_82 fede_82 is offline
Junior Member
 
Fecha de Ingreso: oct 2007
Mensajes: 3
Eso no lo sabía, gracias SAPRoly!

Tere_90210, me puedes enviar un mensaje privado si quieres.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Reglas de Mensajes
no puedes crear nuevos temas
no puedes responder temas
no puedes adjuntar archivos
no puedes editar tus mensajes

El código vB está On
Las caritas están On
Código [IMG] está On
Código HTML está Off
Saltar a Foro


Husos Horarios son GMT. La hora en este momento es 13:31:54.


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