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

Suppress selection

Former Member
0 Likes
846

Hi fnds,

I had one problem. In selection screen , I had one select option after clicking the range option it will display include and exclude ranges ..the requirement is that the need only the include single selection and remaining should be suppress..

Can any one help me ..

Regards,

SunilY.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
717
chk this

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.

pls reward points if helpful and close the thread if solved

Message was edited by: Sekhar

Hi fnds,

I had one problem. In selection screen , I had one select option after clicking the range option it will display include and exclude ranges ..the requirement is that the need only the include single selection and remaining should be suppress..

Can any one help me ..

Regards,

SunilY.

4 REPLIES 4
Read only

Former Member
0 Likes
718
chk this

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.

pls reward points if helpful and close the thread if solved

Message was edited by: Sekhar

Read only

0 Likes
717

thank u sekhar..may be it solve my query

Regards,

SunilY

Read only

Former Member
0 Likes
717

Use the FM.

RS_SET_SELECT_OPTIONS_OPTIONS.

sorry..

its the other fm...

  • This is to allow data selection only for single values or ranges.

  • Supress tabstrips for 'excluding' values and ranges

============ Data definitions for SELECT_OPTIONS_RESTRICT ============

TYPE-POOLS SSCR.

DATA RESTRICT TYPE SSCR_RESTRICT.

DATA OPT_LIST TYPE SSCR_OPT_LIST.

DATA ASS TYPE SSCR_ASS.

*-Define option list ONLY_EQ for SELECT-OPTION RCLS_TYP

  • ONLY_EQ: only EQ(ual) is allowed as an option

MOVE 'ONLY_EQ_BT' TO OPT_LIST-NAME.

MOVE 'X' TO OPT_LIST-OPTIONS-EQ.

MOVE 'X' TO OPT_LIST-OPTIONS-BT.

APPEND OPT_LIST TO RESTRICT-OPT_LIST_TAB.

*-Associate SELECT-OPTION RCLS_TYP with option list ONLY_EQ and sign I

perform fill_ASS using 'R_KOSTL'

changing ASS.

APPEND ASS TO RESTRICT-ASS_TAB.

perform fill_ASS using 'R_ORDER'

changing ASS.

APPEND ASS TO RESTRICT-ASS_TAB.

perform fill_ASS using 'R_WBS_ID'

changing ASS.

APPEND ASS TO RESTRICT-ASS_TAB.

perform fill_ASS using 'R_PROJ'

changing ASS.

APPEND ASS TO RESTRICT-ASS_TAB.

perform fill_ASS using 'R_PERIOD'

changing ASS.

APPEND ASS TO RESTRICT-ASS_TAB.

perform fill_ASS using 'R_YEAR'

changing ASS.

APPEND ASS TO RESTRICT-ASS_TAB.

perform fill_ASS using 'R_BUDAT'

changing ASS.

APPEND ASS TO RESTRICT-ASS_TAB.

perform fill_ASS using 'R_ELEM'

changing ASS.

APPEND ASS TO RESTRICT-ASS_TAB.

perform fill_ASS using 'R_LGART'

changing ASS.

APPEND ASS TO RESTRICT-ASS_TAB.

perform fill_ASS using 'R_PERNR'

changing ASS.

APPEND ASS TO RESTRICT-ASS_TAB.

*-Now restrict the SELECT-OPTION RCLS_TYP

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.

form fill_ASS using value(p_value)

changing p_ass type SSCR_ASS.

MOVE: 'S' TO p_ASS-KIND,

p_value TO p_ASS-NAME,

'I' TO p_ASS-SG_MAIN,

' ' TO p_ASS-SG_ADDY,

'ONLY_EQ_BT' TO p_ASS-OP_MAIN,

'ONLY_EQ_BT' TO p_ASS-OP_ADDY.

endform. " fill_ASS

Read only

Former Member
0 Likes
717

Hi sunil,

1. this kind of requirement is a little tricky

, but nonethless, can be done.

2. The important FM is

SELECT_OPTIONS_RESTRICT

(please see F1 help on this

to get more detailed information)

(The documentation explains much about its usage)

3.

sample code is (just copy paste in new program)

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 = '*'.

ass-sg_main = 'I'.

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.