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

Restricting Select-options

Former Member
0 Likes
8,672

Hi friends,

I want to restrict select-options at runtime. can anybody suggest me that how it will do??

Thanks,

Amar

1 ACCEPTED SOLUTION
Read only

Former Member
2,851

Hi amar,

tried out select-options-restrict FM.

  • Include type pool SSCR

TYPE-POOLS: sscr,

slis.

  • Restricting the MATNR selection to only EQ and 'BT'.

opt_list-name = 'OBJECTKEY1'.

opt_list-options-eq = 'X'.

opt_list-options-bt = 'X'.

APPEND opt_list TO restrict-opt_list_tab.

ass-kind = 'S'.

ass-name = 'S_AYEAR'.

ass-sg_main = 'I'.

ass-sg_addy = space.

ass-op_main = 'OBJECTKEY1'.

APPEND ass TO restrict-ass_tab.

opt_list-name = 'OBJECTKEY2'.

opt_list-options-eq = 'X'.

opt_list-options-bt = 'X'.

APPEND opt_list TO restrict-opt_list_tab.

ass-kind = 'S'.

ass-name = 'S_APERD'.

ass-sg_main = 'I'.

ass-sg_addy = space.

ass-op_main = 'OBJECTKEY2'.

APPEND ass TO restrict-ass_tab.

CALL FUNCTION 'SELECT_OPTIONS_RESTRICT'

EXPORTING

restriction = restrict

EXCEPTIONS

too_late = 1

repeated = 2

selopt_without_options = 3

selopt_without_signs = 4

invalid_sign = 5

empty_option_list = 6

invalid_kind = 7

repeated_kind_a = 8

OTHERS = 9.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

9 REPLIES 9
Read only

Former Member
2,851

Hi Amar,

1. SELECT_OPTIONS_RESTRICT

This is the required FM for this purpose.

(It is a little difficult to use,

also see documentation on this FM).

2. just copy paste in new program.

3.

REPORT abc NO STANDARD PAGE HEADING.

TYPE-POOLS : sscr.

*----


Data

TABLES : t001.

*----


IMPORTANT VARIABLES

DATA : res TYPE sscr_restrict.

DATA : opt_list TYPE sscr_opt_list.

DATA : ass TYPE sscr_ass.

*----


Sel Screen.

SELECT-OPTIONS : bukrs FOR t001-bukrs.

*----


INITIALIZATION.

*----


IMPORTANT CODE

opt_list-name = 'A'.

opt_list-options-eq = 'X'.

APPEND opt_list TO res-opt_list_tab.

ass-kind = 'A'.

ass-name = 'BUKRS'.

ass-op_main = 'A'.

ass-sg_main = '*'.

APPEND ass TO res-ass_tab.

CALL FUNCTION 'SELECT_OPTIONS_RESTRICT'

EXPORTING

  • PROGRAM =

restriction = res

  • DB = ' '

EXCEPTIONS

too_late = 1

repeated = 2

selopt_without_options = 3

selopt_without_signs = 4

invalid_sign = 5

empty_option_list = 6

invalid_kind = 7

repeated_kind_a = 8

OTHERS = 9

.

BREAK-POINT.

regards,

amit m.

Read only

Former Member
0 Likes
2,851

Amar,

What do you mean by runtime?

NO-OPTIONS and NO-INTERVALS will restrict the select options. The function module <b> RS_INT_SELOPT_RESTRICT </b> can be use to restrict the select options dynamically.

Regards,

Ravi

Note : Please mark all the helpful answers and close the thread if the issue is resolved.

Read only

Former Member
0 Likes
2,851

Hi !

You can check and restrict select-options in

"AT SELECTION-SCREEN".

There you can analyze the users input and react i.e. with an error.

On the other hand you can restirct them using add-on's to the SELECT-OPTIONS command (see help on the command).

Regards

Rainer

Some points would be fine if that helped a bit

Read only

Former Member
0 Likes
2,851

go thru the ABAP FAQs in the Home Page of this site ( SDN )..

Regards

Read only

Former Member
0 Likes
2,851

Hai Amar Singh

Use the f.Modules

1) RS_INT_SELOPT_RESTRICT

2) SELECT_OPTIONS_RESTRICT

check the following Code

REPORT SELECTOPTIONSRESTRICT.

  • Include type pool SSCR

TYPE-POOLS SSCR.

TABLES :

MARC.

  • defining the selection-screen

SELECT-OPTIONS :

S_MATNR FOR MARC-MATNR,

S_WERKS FOR MARC-WERKS.

  • Define the object to be passed to the RESTRICTION parameter

DATA RESTRICT TYPE SSCR_RESTRICT.

  • Auxiliary objects for filling RESTRICT

DATA : OPTLIST TYPE SSCR_OPT_LIST,

ASS TYPE SSCR_ASS.

INITIALIZATION.

  • Restricting the MATNR selection to only EQ and 'BT'.

OPTLIST-NAME = 'OBJECTKEY1'.

OPTLIST-OPTIONS-EQ = 'X'.

OPTLIST-OPTIONS-BT = 'X'.

APPEND OPTLIST TO RESTRICT-OPT_LIST_TAB.

ASS-KIND = 'S'.

ASS-NAME = 'S_MATNR'.

ASS-SG_MAIN = 'I'.

ASS-SG_ADDY = SPACE.

ASS-OP_MAIN = 'OBJECTKEY1'.

APPEND ASS TO RESTRICT-ASS_TAB.

  • Restricting the WERKS selection to CP, GE, LT, NE.

OPTLIST-NAME = 'OBJECTKEY2'.

OPTLIST-OPTIONS-CP = 'X'.

OPTLIST-OPTIONS-GE = 'X'.

OPTLIST-OPTIONS-LT = 'X'.

OPTLIST-OPTIONS-NE = 'X'.

APPEND OPTLIST TO RESTRICT-OPT_LIST_TAB.

ASS-KIND = 'S'.

ASS-NAME = 'S_WERKS'.

ASS-SG_MAIN = 'I'.

ASS-SG_ADDY = SPACE.

ASS-OP_MAIN = 'OBJECTKEY2'.

APPEND ASS TO RESTRICT-ASS_TAB.

CALL FUNCTION 'SELECT_OPTIONS_RESTRICT'

EXPORTING

RESTRICTION = RESTRICT

EXCEPTIONS

TOO_LATE = 1

REPEATED = 2

SELOPT_WITHOUT_OPTIONS = 3

SELOPT_WITHOUT_SIGNS = 4

INVALID_SIGN = 5

EMPTY_OPTION_LIST = 6

INVALID_KIND = 7

REPEATED_KIND_A = 8

OTHERS = 9

.

IF SY-SUBRC <> 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

Thanks & regards

Sreeni

Read only

Former Member
0 Likes
2,851

HI

GOOD

Notes

On the "Multiple Selection" screen, you can also enter ranges for selection options with " NO INTERVALS ".

By combining this addition with " NO-EXTENSION ", you can restrict the user to entry of a single value for the selection option, but with the possibility of also choosing single value options like 'Greater than' or 'Less than or equal'.

By using the addition " NO INTERVALS " with SELECTION-SCREEN BEGIN OF BLOCK , you can activate the simplified display for all selection options in a block.

The function module SELECT_OPTIONS_RESTRICT allows you to restrict the set of selection options available for a SELECT-OPTION (for example, only single values and patterns, i.e. 'EQ' and 'CP' are allowed). You can also forbid the leading sign 'E' (= 'Exclude from selection'

THANKS

MRUTYUN

Read only

Former Member
2,852

Hi amar,

tried out select-options-restrict FM.

  • Include type pool SSCR

TYPE-POOLS: sscr,

slis.

  • Restricting the MATNR selection to only EQ and 'BT'.

opt_list-name = 'OBJECTKEY1'.

opt_list-options-eq = 'X'.

opt_list-options-bt = 'X'.

APPEND opt_list TO restrict-opt_list_tab.

ass-kind = 'S'.

ass-name = 'S_AYEAR'.

ass-sg_main = 'I'.

ass-sg_addy = space.

ass-op_main = 'OBJECTKEY1'.

APPEND ass TO restrict-ass_tab.

opt_list-name = 'OBJECTKEY2'.

opt_list-options-eq = 'X'.

opt_list-options-bt = 'X'.

APPEND opt_list TO restrict-opt_list_tab.

ass-kind = 'S'.

ass-name = 'S_APERD'.

ass-sg_main = 'I'.

ass-sg_addy = space.

ass-op_main = 'OBJECTKEY2'.

APPEND ass TO restrict-ass_tab.

CALL FUNCTION 'SELECT_OPTIONS_RESTRICT'

EXPORTING

restriction = restrict

EXCEPTIONS

too_late = 1

repeated = 2

selopt_without_options = 3

selopt_without_signs = 4

invalid_sign = 5

empty_option_list = 6

invalid_kind = 7

repeated_kind_a = 8

OTHERS = 9.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

Read only

Former Member
0 Likes
2,851
    
REPORT TESTREP.

* Include type pool SSCR
TYPE-POOLS SSCR.

* Define the object to be passed to the RESTRICTION parameter
DATA RESTRICT TYPE SSCR_RESTRICT.

* Auxiliary objects for filling RESTRICT
DATA OPT_LIST TYPE SSCR_OPT_LIST.
DATA ASS      TYPE SSCR_ASS.

* Define the selection screen objects
* First block: 3 SELECT-OPTIONS
SELECTION-SCREEN BEGIN OF BLOCK BLOCK_0 WITH FRAME TITLE TEXT-BL0.
  SELECT-OPTIONS SEL_0_0 FOR SY-TVAR0.
  SELECT-OPTIONS SEL_0_1 FOR SY-TVAR1.
  SELECT-OPTIONS SEL_0_2 FOR SY-TVAR2.
  SELECT-OPTIONS SEL_0_3 FOR SY-TVAR3.
SELECTION-SCREEN END   OF BLOCK BLOCK_0.

* Second block: 2 SELECT-OPTIONS
SELECTION-SCREEN BEGIN OF BLOCK BLOCK_1 WITH FRAME TITLE TEXT-BL1.
  SELECT-OPTIONS SEL_1_0 FOR SY-SUBRC.
  SELECT-OPTIONS SEL_1_1 FOR SY-REPID.
SELECTION-SCREEN END   OF BLOCK BLOCK_1.

INITIALIZATION.

* Define the option list

* ALL: All options allowed
  MOVE 'ALL'        TO OPT_LIST-NAME.
  MOVE 'X' TO: OPT_LIST-OPTIONS-BT,
               OPT_LIST-OPTIONS-CP,
               OPT_LIST-OPTIONS-EQ,
               OPT_LIST-OPTIONS-GE,
               OPT_LIST-OPTIONS-GT,
               OPT_LIST-OPTIONS-LE,
               OPT_LIST-OPTIONS-LT,
               OPT_LIST-OPTIONS-NB,
               OPT_LIST-OPTIONS-NE,
               OPT_LIST-OPTIONS-NP.
  APPEND OPT_LIST TO RESTRICT-OPT_LIST_TAB.

* NOPATTERN: CP and NP not allowed
  CLEAR OPT_LIST.
  MOVE 'NOPATTERN'  TO OPT_LIST-NAME.
  MOVE 'X' TO: OPT_LIST-OPTIONS-BT,
               OPT_LIST-OPTIONS-EQ,
               OPT_LIST-OPTIONS-GE,
               OPT_LIST-OPTIONS-GT,
               OPT_LIST-OPTIONS-LE,
               OPT_LIST-OPTIONS-LT,
               OPT_LIST-OPTIONS-NB,
               OPT_LIST-OPTIONS-NE.
  APPEND OPT_LIST TO RESTRICT-OPT_LIST_TAB.

* NOINTERVLS: BT and NB not allowed
  CLEAR OPT_LIST.
  MOVE 'NOINTERVLS' TO OPT_LIST-NAME.
  MOVE 'X' TO: OPT_LIST-OPTIONS-CP,
               OPT_LIST-OPTIONS-EQ,
               OPT_LIST-OPTIONS-GE,
               OPT_LIST-OPTIONS-GT,
               OPT_LIST-OPTIONS-LE,
               OPT_LIST-OPTIONS-LT,
               OPT_LIST-OPTIONS-NE,
               OPT_LIST-OPTIONS-NP.
  APPEND OPT_LIST TO RESTRICT-OPT_LIST_TAB.

* EQ_AND_CP: only EQ and CP allowed
  CLEAR OPT_LIST.
  MOVE 'EQ_AND_CP'  TO OPT_LIST-NAME.
  MOVE 'X' TO: OPT_LIST-OPTIONS-CP,
               OPT_LIST-OPTIONS-EQ.
  APPEND OPT_LIST TO RESTRICT-OPT_LIST_TAB.

* JUST_EQ: Only EQ allowed
  CLEAR OPT_LIST.
  MOVE 'JUST_EQ' TO OPT_LIST-NAME.
  MOVE 'X' TO OPT_LIST-OPTIONS-EQ.
  APPEND OPT_LIST TO RESTRICT-OPT_LIST_TAB.

* Assign selection screen objects to option list and sign

* KIND = 'A': applies to all SELECT-OPTIONS
  MOVE: 'A'          TO ASS-KIND,
        '*'          TO ASS-SG_MAIN,
        'NOPATTERN'  TO ASS-OP_MAIN,
        'NOINTERVLS' TO ASS-OP_ADDY.
  APPEND ASS TO RESTRICT-ASS_TAB.

* KIND = 'B': applies to all SELECT-OPTIONS in block BLOCK_0,
*             that is, SEL_0_0, SEL_0_1, SEL_0_2
  CLEAR ASS.
  MOVE: 'B'          TO ASS-KIND,
        'BLOCK_0'    TO ASS-NAME,
        'I'          TO ASS-SG_MAIN,
        '*'          TO ASS-SG_ADDY,
        'NOINTERVLS' TO ASS-OP_MAIN.
  APPEND ASS TO RESTRICT-ASS_TAB.

* KIND = 'S': applies to SELECT-OPTION SEL-0-2
  CLEAR ASS.
  MOVE: 'S'          TO ASS-KIND,
        'SEL_0_2'    TO ASS-NAME,
        'I'          TO ASS-SG_MAIN,
        '*'          TO ASS-SG_ADDY,
        'EQ_AND_CP'  TO ASS-OP_MAIN,
        'ALL'        TO ASS-OP_ADDY.
  APPEND ASS TO RESTRICT-ASS_TAB.

* KIND = 'S': Applies to SELECT-OPTION SEL_0_3
  CLEAR ASS.
  MOVE: 'S'        TO ASS-KIND,
        'SEL_0_3'  TO ASS-NAME,
        'I'        TO ASS-SG_MAIN,
        'N'        TO ASS-SG_ADDY,
        'JUST_EQ'  TO ASS-OP_MAIN.
  APPEND ASS TO RESTRICT-ASS_TAB.

* Call function module
  CALL FUNCTION 'SELECT_OPTIONS_RESTRICT'
       EXPORTING
             RESTRICTION                = RESTRICT
*           DB                          = ' '
       EXCEPTIONS
             TOO_LATE                   = 1
             REPEATED                   = 2
             NOT_DURING_SUBMIT          = 3
            DB_CALL_AFTER_REPORT_CALL  = 4
            SELOPT_WITHOUT_OPTIONS     = 5
             SELOPT_WITHOUT_SIGNS       = 6
             INVALID_SIGN               = 7
            REPORT_CALL_AFTER_DB_ERROR = 8
              EMPTY_OPTION_LIST          = 9
             INVALID_KIND               = 10
             REPEATED_KIND_A            = 11
             OTHERS                     = 12.

* Exception handling
  IF SY-SUBRC NE 0.
     ...
  ENDIF.

  ...

START-OF-SELECTION.
Read only

Former Member
0 Likes
2,851

Hi,

Check this..

REPORT ZTEST_OPTIONS_RESTRICT.

* Include type pool SSCR
TYPE-POOLS sscr.
TABLES :
  marc.
* defining the selection-screen
select-options :
  s_matnr for marc-matnr,
  s_werks for marc-werks.

* Define the object to be passed to the RESTRICTION parameter
DATA restrict TYPE sscr_restrict.

* Auxiliary objects for filling RESTRICT
DATA : optlist TYPE sscr_opt_list,
           ass type sscr_ass.

INITIALIZATION.

* Restricting the MATNR selection to only EQ and 'BT'.
  optlist-name = 'OBJECTKEY1'.
  optlist-options-eq = 'X'.
  optlist-options-bt = 'X'.
  APPEND optlist TO restrict-opt_list_tab.

  ass-kind = 'S'.
  ass-name = 'S_MATNR'.
  ass-sg_main = 'I'.
  ass-sg_addy = space.
  ass-op_main = 'OBJECTKEY1'.
  APPEND ass TO restrict-ass_tab.

* Restricting the WERKS selection to CP, GE, LT, NE.
  optlist-name = 'OBJECTKEY2'.
  optlist-options-cp = 'X'.
  optlist-options-ge = 'X'.
  optlist-options-lt = 'X'.
  optlist-options-ne = 'X'.
  APPEND optlist TO restrict-opt_list_tab.

  ass-kind = 'S'.
  ass-name = 'S_WERKS'.
  ass-sg_main = 'I'.
  ass-sg_addy = space.
  ass-op_main = 'OBJECTKEY2'.
  APPEND ass TO restrict-ass_tab.

  CALL FUNCTION 'SELECT_OPTIONS_RESTRICT'
   EXPORTING
    restriction                  = restrict
   EXCEPTIONS
     TOO_LATE                     = 1
     REPEATED                     = 2
     SELOPT_WITHOUT_OPTIONS       = 3
     SELOPT_WITHOUT_SIGNS         = 4
     INVALID_SIGN                 = 5
     EMPTY_OPTION_LIST            = 6
     INVALID_KIND                 = 7
     REPEATED_KIND_A              = 8
     OTHERS                       = 9
            .
  IF sy-subrc <> 0.
 MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.

Regards

vijay