PDA

Ver la Versión Completa : Duda con bloqueo de registro en una dynpro


Rodolfo Montiel Rivera
16/07/08, 14:51:42
Saludos!!!

Tengo un reporte dentro de un table control en una dynpro, bueno y lo tengo un campo abierto donde el usuario puede teclear una cantidad ok pero bajo ciertas condiciones de proceso algunos registro deberian de traer este campo bloqueado por que ya no es necesario que el usuario teclea.

Eso seria basicamente mi pregunta es como bloqueo estos campos abiertos para ciertos registros.

Gracias de antemano.

Jonathan Barrio Rodriguez
16/07/08, 15:59:52
Hola, Rodolfo,

La verdad que nunca he usado un Table Control en el curro, solo en el curso,
pero me acuerdo, que al crear la pantalla y dibujar los campos con el editor de pantalla, con el painter, clicando sobre ellos dos veces se abría una pantalla, en la parte de abajo, dentro de un cuadro llamado atributos, ver´´as la segunda pestaña llamada "programa", ahí le das como quieres que sea el campo...

Campo de entrada y/o
Campo de salida,
o solo campo de salida.

Espero que sea eso a lo que te refirieses y te sirva.
saludos.

Rodolfo Montiel Rivera
16/07/08, 20:41:39
Jajajaja bueno pues creo me pase de babas jajaja amigos nunca dejen de programar consejo..

Bueno puesto que ya recorde les comunico la solucion a lo mejor y muchos saben pero en fin.

Solucion

tenemos nuestro PBO y PAI en la dynpro

Pues lo unico que tenemos que hacer es dentro del loop para cargar nuestro table control recorrer nuestra pantalla con un loop y bloquear el campo ya sea en la PBO o PAI como queramos

ASI SERIA EN CODIGO

****Tenemos nuestro PBO

Process Before Output

module status_2000.

loop at itab_ops with control tc_ops cursor i_lineas.

module bloqueo_celdas. <---- aqui es el module importante dentro de
nuestro loop para cargar el table controlok.

endloop.

*****

*Este codigo es en el porgrama de control y es el module que se ejecuta

module bloqueo_celdas output.

data: aux_field(17).

if itab_ops-labstd is not initial.

move: 'ITAB_OPS-CANT_NEC' to aux_field.

r_stkvalida = itab_ops-labstd + itab_ops-cant_nec.

if r_stkvalida eq itab_ops-psmng or
itab_ops-labstd ge itab_ops-psmng.

loop at screen. <---Aqui recorrems y buscamos ese campito a bloquear

if screen-name = aux_field.

screen-input = 0.
modify screen.

endif.

endloop.

endif.

endif.

endmodule.