Application Development and Automation 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: 
Read only

Enable and disable a Parameter based on List Box selection

Former Member
0 Likes
1,864

Hi,

I need to enable and disable the parameter on selection screen based on the selection in the list box.The List BOx contains YES/NO, if the user selects Yes then the Parameter should be enabled else should be in the disabled mode.

I have already implemented the logic in the Selection-screen Output, the above criteria is working when selecting YES and upon clicking Enter, it should not be like that as soon as the user selects Yes, the parameter should be enabled.

Here is the logic I am using now :

TYPE-POOLS : VRM.

DATA: param TYPE vrm_id,
values TYPE vrm_values,
value LIKE LINE OF values.

*-----------------------------------------------------------------------
* Selection Screen Block3
*-----------------------------------------------------------------------


SELECTION-SCREEN :BEGIN OF block b3 WITH FRAME Title text-003.

SELECTION-SCREEN : BEGIN OF LINE.
SELECTION-SCREEN: COMMENT 1(10) text-013.
PARAMETERS : p_file(35) TYPE c MODIF ID P.
SELECTION-SCREEN: COMMENT 50(20) text-014.
SELECTION-SCREEN : POSITION 71.
PARAMETERS: FLAG1(10) AS LISTBOX VISIBLE LENGTH 10 MODIF ID f.
SELECTION-SCREEN : end OF LINE.

SELECTION-SCREEN END OF block b3.


AT SELECTION-SCREEN OUTPUT.

*-----------------------------------------------------------------------
* Populating Values in Flag
*-----------------------------------------------------------------------

param = 'FLAG1'.

value-key = '1'.
value-text = 'YES'.
APPEND value TO values.

value-key = '2'.
value-text = 'NO'.
APPEND value TO values.

CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
id = param
values = values.

CLEAR VALUES.

LOOP AT SCREEN.
IF flag1 = '1'.
IF SCREEN-GROUP1 = 'P'.
SCREEN-INPUT = '1'.
ENDIF.
else.
IF SCREEN-GROUP1 = 'P'.
SCREEN-INPUT = '0'.
ENDIF.
ENDIF.
MODIFY SCREEN.
ENDLOOP.

4 REPLIES 4
Read only

Former Member
0 Likes
1,016

Hi ,

You need to assign User Command and Modif ID as below


PARAMETERS: p_e RADIOBUTTON GROUP rad1
            USER-COMMAND f001 MODIF ID fg ,           
            p_u  RADIOBUTTON GROUP rad1
                              MODIF ID fg DEFAULT 'X'. 

Press F1 USER-COMMAND and MODIF ID on these to understand the use of these.

After this you need to modify screen based on this modif id.


    LOOP AT SCREEN.
      CASE screen-group1.
        WHEN 'M'.
          screen-input      = 0.
          screen-invisible  = 1.
          MODIFY SCREEN.
      ENDCASE.
    ENDLOOP.

Hope this helps you.

Edited by: Harsh Bhalla on Dec 31, 2009 9:41 AM

Read only

Former Member
0 Likes
1,016

Dear Varun,

When you are selecting yes or no, there is no event which is being triggered (ie., its not calling the report or code). So there should be some event due to which the code or report should be called. So after you are selcting the yes and pressing ENTER its trigerring an event. or what you can do is you can put a user command button, so after the user selects the yes,he has to press the button and it would trigger the code and you an disable it.

Regards

Sajid

Read only

Former Member
0 Likes
1,016

Hi

" Just Comment the Clear Statement and REFRESH before appending the values in VALUES table
TYPE-POOLS : VRM.
 
DATA: param TYPE vrm_id,
values TYPE vrm_values,
value LIKE LINE OF values.
 
*-----------------------------------------------------------------------
* Selection Screen Block3
*-----------------------------------------------------------------------
 
 
SELECTION-SCREEN :BEGIN OF block b3 WITH FRAME Title text-003.
 
SELECTION-SCREEN : BEGIN OF LINE.
SELECTION-SCREEN: COMMENT 1(10) text-013.
PARAMETERS : p_file(35) TYPE c MODIF ID P.
SELECTION-SCREEN: COMMENT 50(20) text-014.
SELECTION-SCREEN : POSITION 71.
PARAMETERS: FLAG1(10) AS LISTBOX VISIBLE LENGTH 10 MODIF ID f.
SELECTION-SCREEN : end OF LINE.
 
SELECTION-SCREEN END OF block b3.
 
 
AT SELECTION-SCREEN OUTPUT.
 
*-----------------------------------------------------------------------
* Populating Values in Flag
*-----------------------------------------------------------------------
 
param = 'FLAG1'.
 

Refresh values " Refresh Here
value-key = '1'.
value-text = 'YES'.
APPEND value TO values.
 
value-key = '2'.
value-text = 'NO'.
APPEND value TO values.
 
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
id = param
values = values.
 
" CLEAR VALUES.  " Comment this This is causing the problem
 
LOOP AT SCREEN.
IF flag1 = '1'.
IF SCREEN-GROUP1 = 'P'.
SCREEN-INPUT = '1'.
ENDIF.
else.
IF SCREEN-GROUP1 = 'P'.
SCREEN-INPUT = '0'.
ENDIF.
ENDIF.
MODIFY SCREEN.
ENDLOOP.

Cheerz

Ram

Read only

Former Member
0 Likes
1,016

Hi Varun,

We have to give one addition USER-COMMAND when declaring the listbox.

Slightly modified your code and it works fine now.



TYPE-POOLS : VRM.

DATA: param TYPE vrm_id,
values TYPE vrm_values,
value LIKE LINE OF values.

*-----------------------------------------------------------------------
* Selection Screen Block3
*-----------------------------------------------------------------------


SELECTION-SCREEN :BEGIN OF block b3 WITH FRAME Title text-003.

SELECTION-SCREEN : BEGIN OF LINE.
SELECTION-SCREEN: COMMENT 1(10) text-013.
PARAMETERS : p_file(35) TYPE c MODIF ID P.
SELECTION-SCREEN: COMMENT 50(20) text-014.
SELECTION-SCREEN : POSITION 71.

PARAMETERS:
FLAG1 AS LISTBOX VISIBLE LENGTH 10  "<---- changed
USER-COMMAND USR  "<---- added
MODIF ID f.  "<---- moved here

SELECTION-SCREEN : end OF LINE.

SELECTION-SCREEN END OF block b3.



"-------- This Event is used to populate the listbox 

*-----------------------------------------------------------------------
* Populating Values in Flag
*-----------------------------------------------------------------------

INITIALIZATION.
  param = 'FLAG1'.

  value-key = '1'.
  value-text = 'YES'.
  APPEND value TO values.

  value-key = '2'.
  value-text = 'NO'.
  APPEND value TO values.

  CALL FUNCTION 'VRM_SET_VALUES'
    EXPORTING
      id     = param
      values = values.

  CLEAR VALUES.


*-----------------------------------------------------------------------
* Check screen
*-----------------------------------------------------------------------



AT SELECTION-SCREEN OUTPUT.



  LOOP AT SCREEN.
    IF flag1 = '1'.
      IF SCREEN-GROUP1 = 'P'.
        SCREEN-INPUT = '1'.
      ENDIF.
    else.
      IF SCREEN-GROUP1 = 'P'.
        SCREEN-INPUT = '0'.
      ENDIF.
    ENDIF.
    MODIFY SCREEN.
  ENDLOOP.


Edited by: Amit Mittal on Dec 31, 2009 10:11 AM