本帖最后由 SAPOK_ABAP 于 2015-9-6 21:43 编辑
35,ABAP语法之选择屏幕(一)介绍了一种选择屏幕的实例,继续介绍
选中的地方只能输入一个单值或者多个单值,这就是独特之处,在选用的时候,可根据这个特点选择使用。代码如下:
REPORT z_screen_02.
TYPE-POOLS sscr.
TABLES : sflight.
SELECT-OPTIONS : s_carrid FOR sflight-carrid NO INTERVALS,
s_connid FOR sflight-connid.
DATA: restrict TYPE sscr_restrict,
optlist TYPE sscr_opt_list,
ass TYPE sscr_ass.
INITIALIZATION.
optlist-name = 'OBJECTKEY1'.
optlist-options-eq = 'X'. " 单值部分起作用
* optlist-options-bt = 'X'. "范围不起作用
APPEND optlist TO restrict-opt_list_tab.
ass-kind = 'S'. "A(ll), B(lock), S(elect-Option)三种类型可选择
ass-name = 'S_CARRID'. "选择屏幕中SELET-OPTIONS定义的对象名称
ass-sg_main = 'I'. " (only)I,
ass-sg_addy = space.
ass-op_main = 'OBJECTKEY1'.
APPEND ass TO restrict-ass_tab.
CLEAR optlist.
CLEAR ass.
optlist-name = 'OBJECTKEY2'.
optlist-options-cp = 'X'.
optlist-options-ge = 'X'.
APPEND optlist TO restrict-opt_list_tab.
ass-kind = 'S'.
ass-name = 'S_CONNID'.
ass-sg_main = 'I'.
ass-sg_addy = space.
ass-op_main = 'OBJECTKEY2'.
APPEND ass TO restrict-ass_tab.
CALL FUNCTION 'SELECT_OPTIONS_RESTRICT'
EXPORTING
program = sy-repid
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.