PDA

Ver la Versión Completa : DropDownList en Dynpros


AlexisChavero
22/04/10, 14:50:38
Hola a todos,
Estoy teniendo un inconveniente y no encuentro la forma de resolverlo. Les comento un poco a ver si alguien me puede dar una mano.
Estoy teniendo una Dynpros la cual se visualiza como un POP UP dentro de una Funcion.
En la Dynpros tengo 2 DropDownList (campos de entradas/salida del tipo Listas desplegables o ListBox).
El primer DDL (DropDownList) posee 2 opciones y el seguno 3.
Al momento de seleccionar la Opcion 1 del primer DDL se debe bloquear el segundo DDL, y cuando se seleccione la Opcion 2 del primer DDL se debe habilitar el segundo DDL.
Esto lo estoy haciendo de la siguiente manera:
PROCESS BEFORE OUTPUT.
MODULE set_fondos_enable.

MODULE SET_FONDOS_ENABLE OUTPUT.
IF gv_multa EQ '1'. " Valor que tomar el primer DDL
LOOP AT SCREEN.
CASE screen-name.
WHEN 'GV_FONDOS'. " Nombre del DDL de la Dynpros
screen-input = 1.
MODIFY SCREEN.
ENDCASE.
ENDLOOP.
ELSE.
LOOP AT SCREEN.
CASE screen-name.
WHEN 'GV_FONDOS'. " Nombre del DDL de la Dynpros
screen-input = 0.
MODIFY SCREEN.
ENDCASE.
ENDLOOP.
ENDIF.
ENDMODULE. " SET_FONDOS_ENABLE OUTPUT

Esto funciona pero luego de precionar ENTER. El punto es que necesito que automaticamente se seleccione la primera opcion se bloquee el segundo DDL sin la necesidad de presionar ENTER ni nada por el estilo.
Espero se entienda mi explicacion y que alguien pueda ayudarme con el tema.
Desde ya muchas gracias por las respuestas o las ayudas que me puedan dar.
Saludos,
Alexis Chavero.

ballan
22/04/10, 17:12:48
Tienes que lanzar un OKCODE

Si lo has creado por codigo en una pantalla de seleccion tienes que añadirle la sentencia user-command y asignarle un okcode en la declaracion

parameters: p_list .. as listbox.. USER-COMMAND lis.

si lo tienes en una dynpro haz doble click en el campo y en los atributos rellena el campo del codigo de funcion

AlexisChavero
22/04/10, 18:20:16
Hola ballan,
Desde ya muchas gracias por responder.
Te comento que la pantalla de seleccion fue creada dentro de una funcion por medio de una Dynpros y no por medio de codigo, por lo que tendre que tomar la segunda opcion que me planteas.
El problema es que no se que Codigo de Funcion debo colocar alli y si lo debo hacer en los 2 listbox o haciendolo solo en el segundo es suficiente para que tome el cambio de estado.
Muchas gracias.
Saludos,
Alexis Chavero.

AlexisChavero
23/04/10, 13:14:57
Hola a todos,
Les comento que ya he podido resolver mi problemapor lo que les comento como lo he realizado por si alguien mas tiene un tema similar al mio.
Antes que nada, a aprtir del comentario de Ballan, me fije como asignarle un Codigo de Funcion dentro de los atributos del ListBox, y me encontre con que se puede colocar cualquier nombre. En mi caso opte por ponerle un nombre con Z y algo que haga referencia a lo que estaba haciendo (por ej. ZCHANGE).
Para acceder a los atributos se debe hacer doble clic sobre el campo ListBox que estemos tratando, en mi caso es el primero ya que es el encargado en habilitar/deshabilitar el segundo. El campo Codigo de Funcion dentro de los Atributos aparece con el nombre "Cód.func".
Luego de esto, en el PBO de la Dynpros colocan:

PROCESS BEFORE OUTPUT. " PBO
CHAIN.
FIELD gv_multa " Campo ListBox
MODULE set_fondos_enable. " Aqui habilito/deshabilito el campo 2
ENDCHAIN.

Luego en el MODULE agregamos el LOOP AT SCREEN para habilitar/deshabilitar el o los cambios segun se seleccione una u otra opcion de la Lista Desplegable (ListBox).
Espero les sea de utilidad.
Saludos,
Alexis Chavero.