Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

Selection screen fields being disabled upon click on Enter from keyboard.

former_member308418
Participant
0 Kudos

Dear All,

In my selection screen I made some fields active based on some condition. The problem is if i run the program and give no value in input fields( which were enabled based on the given condition), and press enter then those fields are made disabled ! I need to handle this problem. Fields should not be disabled upon pressing on ENTER . Please help me out. Here is my code. Please take a look.

SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE text-010.
PARAMETERS : sto_ic RADIOBUTTON GROUP rdb2  DEFAULT 'X' USER-COMMAND radio1
PARAMETERS : exp_ins RADIOBUTTON GROUP rdb2.            

PARAMETERS : p_vbeln TYPE vbeln_vf MODIF ID m3 OBLIGATORY

SELECTION-SCREEN SKIP.
PARAMETERS : p_ctype TYPE char100 MODIF ID m5 AS LISTBOX VISIBLE LENGTH 35 USER-COMMAND listbox.

PARAMETERS: p_cust TYPE kna1-kunnr MODIF ID m6.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN POSITION POS_HIGH.
SELECTION-SCREEN COMMENT 33(50) c_name FOR FIELD p_cust.
SELECTION-SCREEN END OF LINE.

PARAMETERS :p_reason(50) TYPE c MODIF ID m6." OBLIGATORY.

SELECTION-SCREEN END OF BLOCK b3.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS : ip_vbeln TYPE likp-vbeln MODIF ID m1
p_mjahr1
TYPE mkpf-mjahr OBLIGATORY DEFAULT sy-datum+0(4) MODIF ID m1.
PARAMETERS : p_veh TYPE zvehicle_no MODIF ID m1 OBLIGATORY DEFAULT 'N/A'.  
PARAMETERS : p_date TYPE sy-datum DEFAULT sy-datum MODIF ID m1.
SELECTION-SCREEN END OF BLOCK b1.

SELECTION-SCREEN BEGIN OF BLOCK b4 WITH FRAME.
PARAMETERS : p_damt TYPE pswbt DEFAULT 0 MODIF ID m4.

SELECTION-SCREEN END OF BLOCK b4.


SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.
PARAMETERS : rdb_no RADIOBUTTON GROUP rdb1 DEFAULT 'X' USER-COMMAND radio
PARAMETERS : rdb_yes RADIOBUTTON GROUP rdb1.          
PARAMETERS : p_werks TYPE t001w-werks MODIF ID m2.
PARAMETERS : p_mjahr TYPE mseg-mjahr DEFAULT sy-datum+0(4) MODIF ID m2.
PARAMETERS : p_sno TYPE zmusak11_ch-sno_challan MODIF ID m2.
SELECTION-SCREEN END OF BLOCK b2
.

AT SELECTION-SCREEN OUTPUT.

LOOP AT SCREEN.
IF rdb_no = 'X'.
IF sto_ic = 'X'.
IF screen-group1 = 'M6' OR screen-group1 = 'M3' OR screen-group1 = 'M4' OR screen-group1 = 'M2'.
screen-input = 0.
ENDIF.

ELSEIF exp_ins = 'X'.
IF screen-group1 = 'M6' OR screen-group1 = 'M4' OR screen-group1 = 'M2'.
screen-input = 0.
ENDIF.
ENDIF.

ELSE.
IF screen-group1 = 'M3' OR screen-group1 = 'M5' OR screen-group1 = 'M6' OR screen-group1 = 'M1' OR screen-group1 = 'M4'.
screen-input = 0.
ENDIF.
ENDIF.
MODIFY SCREEN.
ENDLOOP.

CASE gd_ucomm.
WHEN 'LISTBOX'.
IF sto_ic = 'X'.

IF sto_others NE 'S' .
IF p_ctype = '0006' OR p_ctype = '0007' OR p_ctype = '0008' OR p_ctype = '0009'.
LOOP AT SCREEN.
IF screen-group1 = 'M6'.
screen-input = 1.
MODIFY SCREEN.
ENDIF.
ENDLOOP.

ELSE.
MESSAGE s013 DISPLAY LIKE 'E'.
STOP.
ENDIF.
ENDIF.

ELSE.  
IF sto_others NE 'I'

  MESSAGE s013 DISPLAY LIKE 'E'.

STOP.

  ENDIF.

ENDIF

ENDCASE.



1 REPLY 1

Chintu6august
Contributor
0 Kudos

Hi,

you have to write the logic for both enable and disabling field. Since you are only disabling the fields based on the condition.

what if the useR select some other condition then respective fields should get enable which gets disabled in the previous condition.

and assign USER COMMAND to  radio buttons/check boxes to achieve better control.

something like..

AT SELECTION-SCREEN OUTPUT.

IF SY-UCOMM = 'RADIO'. " ie user command on radio button.

   IF RB1 = 'X'.

   PERFORM ENABLE_FIELD USING 'M6'.

   PERFORM ENABLE_FIELD USING 'M4'.

   ELSE.

    PERFORM DISABLE_FIELD USING 'M4'

   ENDIF.

ELSE.

  PERFORM DISABLE_FIELD USING 'M4'

ENDIF.




SUBROUTINES :

FORM ENABLE_FIELD USING P_MODIF.

LOOP AT SCREEN.
IF screen-group1 = P_MODIF.
screen-input = 1.
MODIFY SCREEN.
ENDIF.
ENDLOOP.

ENDFORM.


FORM DISABLE_FIELD USING P_MODIF.

LOOP AT SCREEN.
IF screen-group1 = P_MODIF.
screen-input = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.

ENDFORM.


THANKS!!