ABAP - Select-option dinámico de verdad!, ayuda de expert

 
Vista:

Select-option dinámico de verdad!, ayuda de expert

Publicado por Hugo Romero Benito (1 intervención) el 25/03/2010 18:46:05
Hola foreros, tengo un problema, bueno en resumen lo que necesito y estoy diseñando es crear un programa que introduciendo el nombre de la una tabla del diccionario y al ejecuta, me cree otra pantalla de seleccion con los campos de la tabla, lo importante es que sean los campos de esa tabla introducida anteriormente, para una vez mostrados por pantalla se puedan introducir datos en los campos para finalmente poder ser rescatados y poder ser tratados por el programa.

He probado a debuguear la se16 y tengo lo siguiente:

Lo primero que me encuentro es que llego hay una funcion la "RS_TABLE_LIST_CREATE" la cual le metemos una tabla y nos crea la pantalla de seleccion con los campos claves de la tabla. Ahora el problema que me planteo es ¿como rescato los datos del esa pantalla creada por la funcion?.

Siguo debugueando la funcion y me encuentro que esa funcion lo que hace basicamente es crear un report en tiempo de ejecucion y luego la funcion lo ejecuta, es este programa el que ejecuta la pantalla de seleccion con los campos de la tabla. Luego aqui no se puede tocar nada ya que se crea y ejecuta en tiempo de ejecucion.

Siguiendo debugueando una vez ejecutada la funcion RS_TABLE_LIST_CREATE, y pintados los campos en pantalla y ejecutado la pantalla para unos valores introducidos en los campos, la fucion ya no tiene el control del programa sino que lo hace el programa generado anteriormente comentado, y es mas, para tratar los datos de la pantalla se va a los includes del grupo de funciones SETB, grupo de funciones donde esta incluida la RS_TABLE_LIST_CREATE. Entonces he pensado en copiar SETB a ZSET y copiar el módulos de funciones RS_TABLE_LIST_CREATE a Z_RS_TABLE_LIST_CREATE para que me tire de los includes Z y pueda modificarlos para finalmente capturar los datos de la pantalla de seleccion creada por Z_RS_TABLE_LIST_CREATE.

Pero no me funciona aunque he creado un grupo nuevo y nueva funcion, el programa generado sigue tierando de los includes de SETB.

Alguna sugerencia de, ¿como crear un select-option apartir del nombre de una tabla y luego captuar los datos introducidos en los campos de la pantalla generada?.....
s
Gracias, saludos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Select-option dinámico de verdad!, ayuda de expert

Publicado por Alejandro (226 intervenciones) el 13/04/2023 01:48:33
Para crear un Select-Option dinámico a partir del nombre de una tabla, puede utilizar la función 'DDIF_FIELDINFO_GET'. Esta función le permitirá obtener información sobre los campos de una tabla, como el nombre, el tipo de datos y la longitud.

Una vez que tenga esta información, puede utilizarla para crear un Select-Option dinámico utilizando la función 'REUSE_ALV_FIELDCATALOG_MERGE'. Esta función le permitirá fusionar la información del campo de la tabla con la información del catálogo de campos de ALV, lo que le permitirá crear un Select-Option dinámico que se ajuste a los campos de la tabla.

Una vez que tenga el Select-Option dinámico, puede utilizar la función 'CL_GUI_ALV_GRID' para mostrar la pantalla de selección y capturar los valores introducidos por el usuario. Puede utilizar el método 'SET_TABLE_FOR_FIRST_DISPLAY' para mostrar los datos y permitir que el usuario seleccione los valores.

Es importante tener en cuenta que si desea modificar los programas generados por SAP, deberá hacer una copia del programa y trabajar en la copia. No es recomendable modificar los programas generados por SAP directamente.

Espero que esto le ayude a crear el Select-Option dinámico y capturar los datos introducidos por el usuario.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Select-option dinámico de verdad!, ayuda de expert

Publicado por Ignacio (1 intervención) el 15/02/2024 14:52:48
Hola buenas dias.

Ocasionalmente tenia que hacer exactamente lo mismo que este tema lo pude lograr de la manera que usted explico, solo que tengo el siguiente problema.
Una vez seleccionado la tabla y los campos para hacer el select dinámico funciona a la perfección al momento de ejecutarlo por el mismo programa. Pero cuando lo ejecuto por JOB, este pareciera que no toma los parámetros seleccionado y en la consulta me trae todo los datos de la tabla ya que no esta teniendo en cuenta en WHERE. Es posible que al momento de ejecutar por JOB la tabla interna que contiene los campos de la tabla esten vacia y produzca un select * a la tabla.

Tienen una idea de como se puede solucionar?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar