PDA

Ver la Versión Completa : Pasar tablas dinamicamente


rtmpel
11/10/06, 11:44:35
Hola, este es mi primer post, un saludo y espero que podáis ayudarme.

Me pasa lo siguiente, quiero hacer una subrutina a la que se le pase el nombre de una tabla interna para poder trabajar con distintas tablas internas sin tener que definir la estructura dentro de la subrutina. No me explico muy bien, os pongo un ejemplo:


*Aqui llamo a la subrutina
PERFORM f_prueba USING 'nombre_tabla1'.

------------------------------------------

FORM f_prueba usign pe_nombre_tabla.

*Leer esa tabla
read table (pe_nombre_tabla) index 1.



La idea es por ejemplo poder leer el contenido de la tabla que yo envie como parámetro, independientemente de la estructura. Es decir que pueda poner 'nombre_tabla1' y 'nombre_tabla2' en la llamada, sin tener que definir el parámetro como tables que me obliga a poner STRUCTURES X, por lo que solo me serviria para una estructura de tabla.

No se si me he explicado, pero gracias de antemano, si teneis alguna duda, preguntad.

LouieBoy
16/10/06, 11:28:36
Hola,

El objetivo real cual es? ya se q optimizar, bla bla bla, pero creo q te estas rompiendo la cabeza por algo q podrias solucionar de maneras mas sencillas.

Un saludo

i_arnaiz
16/10/06, 14:19:50
El problema es que no puedes enfrentarlo de este modo... en lugar de esto porque no utilizas los field-symbols? de este modo tu código sería algo asi:

FORM f_prueba usign pe_nombre_tabla.

field-symbols <fs_cabecera>.
field-symbols <fs_tabla> type standard table.
data le_nombre_tabla (100).

* Se asigna el field-symbol de la cabecera de la tabla
assign (pe_nombre_tabla) to <fs_cabecera>.

* Se asigna el field-symbol del cuerpo de la tabla
concatenate assign pe_nombre_tabla '[]' into le_nombre_Tabla.
assign (le_nombre_tabla) to <fs_tabla>.

*Leer esa tabla
read table <fs_tabla> into <fs_cabecera> index 1.


Espero que esto te sirva.

Un saludo.

Nacho.

rtmpel
19/10/06, 08:27:35
Ya lo he solucionado gracias!

Al final he usado field-symbols.