Bloquear Select-option de un dynpro

Buenas. Deseo bloquear un campo del dynpro luego de haber colocado una feche dentro del campo.

image
El campo dentro de Fechas ctrol llamado Elaboración lo deseo bloquear una vez se ingrese la fecha

image
La fecha se agrega automaticamente luego de pulsar el boton guardar, pero no logro bloquear el campo.

Ya he intentado bloquear el campo desde la dynpro, con un loop at screen y nada.

Agrego codigo donde deberia hacer el cambio

FORM salvar_datos  TABLES p_control STRUCTURE t_control
                   USING  p_zfi_tfirm_aut_h LIKE zfi_tfirm_aut_h.
  DATA: st_header LIKE zfi_tfirm_aut_h.
  DATA: it_det LIKE STANDARD TABLE OF zfi_tfirm_aut_d WITH HEADER LINE.
  DATA: v_pos LIKE zfi_tfirm_aut_d-posnr.

*/-- Carga datos de cabecera
  MOVE-CORRESPONDING  p_zfi_tfirm_aut_h TO st_header.
  st_header-unam = sy-uname.
  st_header-udat = sy-datum.
  st_header-utme = sy-uzeit.
*/-- Verifica si  la version se registra por primera vez
  PERFORM verif_doc USING st_header-pernr
                          st_header-n_reg
                           '%'
                    CHANGING sy-subrc.
  IF sy-subrc <> 0.
    st_header-versn = 'R'.
    st_header-f_elb = sy-datum.
  ELSE.
    st_header-versn = 'M'.
    PERFORM eliminar_datos USING st_header-pernr
                          st_header-n_reg
                                 'H' .
    PERFORM eliminar_datos USING st_header-pernr
                          st_header-n_reg
                                 'D'.
    COMMIT WORK.
  ENDIF.

*/-- carga datos
  MOVE-CORRESPONDING st_header TO zfi_tfirm_aut_h.
  IF zfi_tfirm_aut_h-f_elb IS INITIAL or zfi_tfirm_aut_h-f_elb  = ''.
    zfi_tfirm_aut_h-f_elb = sy-datum.
  ENDIF.

  INSERT zfi_tfirm_aut_h.

*/-- Carga datos de detalle
  v_pos = 1.
  LOOP AT p_control WHERE selec1 = 'X' OR selec2 = 'X'.
    MOVE-CORRESPONDING zfi_tfirm_aut_h TO it_det.
    IF p_control-selec1 = 'X'.
      it_det-id_op = p_control-id_op1.
      it_det-posnr = v_pos.
      APPEND it_det.
      v_pos = v_pos + 1.
    ENDIF.
    IF p_control-selec2 = 'X'.
      it_det-id_op = p_control-id_op2.
      it_det-posnr = v_pos.
      APPEND it_det.
      v_pos = v_pos + 1.
    ENDIF.
  ENDLOOP.
  IF NOT it_det[] IS INITIAL AND sy-subrc = 0.
    INSERT zfi_tfirm_aut_d FROM TABLE it_det.
  ENDIF.
*************************************
  LOOP AT SCREEN.
    IF screen-name = 'ZFI_TFIRM_AUT_H-F_ELB'.
        screen-input = 0.
    ENDIF.
    ENDLOOP.
**************************************
  COMMIT WORK.
  MESSAGE s005(zoym).

ENDFORM.

Hola, creo tener una posible solución:

  1. Comenta el código donde realizas el LOOP AT SCREEN, no esta correctamente ubicado. Para que el cambio sea efectivo debe estar dentro de un evento.

  2. Ve al include o parte del código donde se encuentre el Parameter que corresponde a parámetro “Elaboración”. A continuación del final de los bloques de la pantalla de selección deberias ingresar el siguiente código:

Antes tendrás, si es que no tiene, indicarle un MODIF ID al parameter.

  AT SELECTION-SCREEN OUTPUT. "Evento" 

    LOOP AT SCREEN. 
 IF screen-group1 EQ <GRUPO DEL PARAMETRO>.  "MODIF ID de parametro"
      IF <PARAMETER>  IS NOT INITIAL. 
          screen-input    = '0'.
      ENDIF.
ENDIF.
     MODIFY SCREEN.
    ENDLOOP.

Comentame si te ayudo el código, o comentarnos como solucionaste el problema.

2 Me gusta

Creo que el gran problema gran es que no tiene el modify screen.
Saludos,

Si, mi error fue no verificar el ID, se coloco como indicas como grupo de parametros y listo!! Santo remedio! Muchas gracias por tu aporte!!!

1 me gusta

Este tema se cerró automáticamente 7 días después del último post. No se permiten nuevas respuestas.