PDA

Ver la Versión Completa : Ayuda con dynpros


Garces
13/11/08, 20:54:45
Hola a todos...
Quisiera saber si alguien me puede ayudar...
Necesito cambiar las propiedades de un tableview en tiempo de ejecución...
Es decir... estoy llamando a la misma dynpro en dos partes distintas de mi programa, pero quiero que en me aparezcan ciertas columnas deshabilitadas (disabled) en algunos casos y en otros casos habilitadas (enabled)...
Alguien sabe como puedo hacer esto?...

DavidXD_XD
13/11/08, 21:56:23
Hola Miguel, claro que se puede ... yo tengo una tabla interna con 3 campos (campo1, campo2, campo3) y 3 radiobuttoms rbtm1, rbtm2, rbtm3, cuando pulso el primer radiobutom se inhabilita la columna 1, cuando presiono el segundo ... la segunda columna, y tercera con tercera.

Para eso le coloque a cada columna con su respectivo texto un nombre dentro del Grupo1 de los atributos: GR1, GR2 y GR3, ahi esta el codigo ...

PROCESS BEFORE OUTPUT.
MODULE status.
LOOP AT itab WITH CONTROL tctrl.
MODULE status_1.
ENDLOOP.

PROCESS AFTER INPUT.
LOOP AT itab.
ENDLOOP.
MODULE user_command.

Y el MODULE que interesa es el status_1.

*&---------------------------------------------------------------------*
*& Module status_1 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_1 OUTPUT.

IF rbtm1 = 'X'.
LOOP AT SCREEN.
IF screen-group1 = 'GR1'.
screen-active = 0.
MODIFY screen.
ELSE.
screen-active = 1.
MODIFY screen.
ENDIF.
ENDLOOP.
ELSEIF rbtm2 = 'X'.
LOOP AT SCREEN.
IF screen-group1 = 'GR2'.
screen-active = 0.
MODIFY screen.
ELSE.
screen-active = 1.
MODIFY screen.
ENDIF.
ENDLOOP.
ELSE.
LOOP AT SCREEN.
IF screen-group1 = 'GR3'.
screen-active = 0.
MODIFY screen.
ELSE.
screen-active = 1.
MODIFY screen.
ENDIF.
ENDLOOP.
ENDIF.

ENDMODULE. " status_1 OUTPUT

Nos avisas como te fue ... :D

Garces
14/11/08, 14:31:36
Muchas gracias por la respuesta...
Sé que la solución va por ahí... puesto que ya pude habilitar y deshabilitar algunos controles.... como botones.... entre otros...
Pero los campos de la tabla no se deshabilitan...
Ya hice el debug respectivo y las condiciones están correctas... se modifican los valores de la estructura SCREEN, pero en la visualización, las columnas siguen habilitadas...

De todas maneras esto me ha dado una luz... y voy a seguir intentando..
Luego les cuento
Saludos...

DavidXD_XD
14/11/08, 14:42:04
SI las quieres como no habilitadas (para no colocar valores ...) pruebale en vez de el campo active con el campo:

output = 1.
input = 0.
MODIFY screen.

Garces
14/11/08, 14:53:42
También intenté así....
Incluso intenté con 'invisible' pero nada...
Sólo funciona con controles fuera de mi tableview, pero lo que están dentro no...
De repente me estoy olvidando de algo... me dijiste que el grupo 'GR1', 'GR2',... se lo asignaste a cada columna "con su respectivo texto"... a qué te referías con "su respectivo texto"? a las cabeceras de la tabla acaso?
Yo lo asigné a los campos de texto de entrada/salida dentro de la tabla y nada...
Raro....
Voy a seguir intentando...
Gracias x tu apoyo....

DavidXD_XD
14/11/08, 15:16:46
Te muestro como me sale a mi en dibujos ... tal vez asi se vea si eso es lo que necesitas ...

Garces
14/11/08, 15:21:50
Sólo para avisar que ya funcionó...
Lo que pasaba era que en el dynpro la llamada al MODULE no estaba dentro del loop al table view sino fuera...
Por eso sólo afectaba los controles fuera del tableview...
De nuevo muchas gracias x el apoyo
Saludos