需求:最近做权限检查的时候,屏幕上有一个检查字段为多值,但是业务需求是输入多值,我们使用NO INTERVALS,将字段改成单值,但是后面的选择框中还有多值输入,需要我们修改成只能填写单值,如下图: 需求如下: 具体的实现方式,是通过函数SELECT_OPTIONS_RESTRICT进行控制,具体代码如下:
REPORT ztest_xiax02. TABLES : marc. * Define the object to be passed to the RESTRICTION DATA : restrict TYPE sscr_restrict, optlist TYPE sscr_opt_list, ass TYPE sscr_ass. *定义选择屏幕 SELECT-OPTIONS : s_matnr FOR marc-matnr NO INTERVALS, s_werks FOR marc-werks. INITIALIZATION. * 限制MATNR参数只能使用‘EQ’ 和‘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. * 限制 WERKS 参数只能使用CP, GE, LT, NE. optlist-name = 'OBJECTKEY2'. optlist-options-cp = 'X'. optlist-options-bt = '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.