如何限制SELECT-OPTIONS的选择屏幕的OPTION-taifulin-ChinaUnix博客

 我来答
huanglenzhi
2015-06-28 · 知道合伙人数码行家
huanglenzhi
知道合伙人数码行家
采纳数:117538 获赞数:517191
长期从事计算机组装,维护,网络组建及管理。对计算机硬件、操作系统安装、典型网络设备具有详细认知。

向TA提问 私信TA
展开全部
REPORT Z_CONECT_A.
* Include type pool
SSCRTYPE-POOLS sscr.
TABLES : marc.
*定义选择屏幕
select-options : s_matnr for marc-matnr, s_werks for marc-werks.
* Define the object to be passed to the RESTRICTION
parameterDATA restrict TYPE sscr_restrict.
* Auxiliary objects for filling RESTRICT
DATA : optlist TYPE sscr_opt_list,
ass type sscr_ass.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-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.

屏幕输入命令

在ABAP/4中要从萤幕输入变量, 使用的命令是 PARAMETERS 及SELECTION-OPTIONS:
1. PARAMETER: 输入一个变量或栏位内容
2. SELECTION-OPTIONS: 使用条件筛选画面来输入数据

PARAMETERS 指令
基本的输入命令, 类似如BASIC的INPUT命令, 但无法使用F格式(浮点数)
语法:
PARAMETERS
[DEFAULT ] [LOWER CASE]
[OBLIGATORY] [AS CHECKBOX]
[RADIOBUTTON GROUP ]
Example:
PARAMETERS: NAME(8),
AGE TYPE I,
BIRTH TYPE D.
执行结果:
在日期的输入格式上为 MM/DD/YY , MM/DD/YYYY, MMDDYY或MMDDYYYY , 如输入 020165表 1965年02月01日, 与02/01/65的输入是一样的, 日期输入范围为西元1950年至2049年
1. DEFAULT
设定输入的预设值
Example:
PARAMETERS: COMPANY(20) DEFAULT 'DELTA',
BIRTH TYPE D DEFAULT '19650201'.
2. LOWER CASE
ABAP/4预设是将字串输入值自动转换为大写, 加上此参数会将输入的资料转成小写,
3. OBLIGATORY
强制要求输入, 萤幕上会出现一个 ? , 使用者必须要输入才可.
4. AS CHECKBOX
输入 CHECKBOX的格式
Example:
PARAMETERS: TAX AS CHECKBOX DEFAULT 'X',
NTD AS CHECKBOX.
执行结果:

5. RADIOBUTTON GROUP
输入 RADIO BUTTON GROUP 的方式
Example:
PARAMETERS: BOY RADIOBUTTON GROUP SEX DEFAULT 'X',
GIRL RADIOBUTTON GROUP SEX.
exp :
TABLES SPLFI.
PARAMETERS: LOW LIKE SPFLI-CARRID,
HIGH LIKE SPFLI-CARRID.
SELECT * FROM SPLFI WHERE CARRID BETWEEN LOW AND HIGH.
........
ENDSELECT.
*-------------------------------------------------------------------------------------*

SELECTION-OPTIONS
SELECTION-OPTIONS所输入的值实际上是放在internal table中的,该Internal table 有四个栏位,分别是:SIGN,OPTION,LOW,HIGH.. 条件筛选检查条件输入画面指令, 输入条件後可配合SELECT指令自TABLE读取符合条件的资料, 直接执行或放入 Internal Table中, 条件有四个参数:
1. SIGN:
I: 表筛选条件符合的资料
E: 表筛选条件不符合的资料
2. OPTION: 比较的条件符号
EQ(等於),NE(不等於),GT(大於),LE(小於),CP(包含),NP(不包含)
3. LOW: 最小值
4. HIGH: 最大值
语法:
SELECTION-OPTIONS FOR
Example:
TABLES SPFLI.
SELECT-OPTIONS AIRLINE FOR SPFLI-CONNID.
将条件的输入值存放入 AIRLINE, 筛选选择为SPFLI中的CONNID栏位

改变条件输入格式
1. DEFAULT TO
设定开始结束范围输入预设值
Example:
SELECT-OPTIONS AIRLINE FOR SPFLI-CONNID DEFAULT '2042' TO '4555'.
2. NO-EXTENSION
设定不要Multi-Option输入画面
3. NO INTERVALS
设定不要区间范围输入画面
4. LOWER CASE
输入转换成大写
5. OBLIGATORY
强制要求输入

SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN POSITION 1.
PARAMETER P_FLEX RADIOBUTTON GROUP ways TYPE c.
SELECTION-SCREEN COMMENT 3(20) text-s30 for field P_FLEX.
SELECTION-SCREEN COMMENT 25(10) text-s31 for field P_PAYM_B.
SELECTION-SCREEN POSITION 38.
PARAMETER P_PAYM_B LIKE PA0015-PABRP MODIF ID wty.
parameters P_PAYY_B LIKE PA0015-pabrj MODIF ID wty.
SELECTION-SCREEN POSITION 57.
SELECTION-SCREEN COMMENT 57(5) text-s32 for field P_PAYM_E.
parameters P_PAYM_E LIKE PA0015-pabrp MODIF ID wty.
parameters P_PAYY_E LIKE PA0015-pabrj MODIF ID wty.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN POSITION 25.
SELECTION-SCREEN COMMENT 25(9) text-s18 for field S_LGART.
SELECT-OPTIONS S_LGART FOR p0014-LGART MODIF ID wty.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN SKIP 1.
本程序中涉及到几个SELECTION-SCREEN的用法:
1 SELECTION-SCREEN BEGIN OF LINE. ....END OF LINE.
这条语句的作用是让Begin of line 与End of line之间的部分位于同一行。
2 SELECTION-SCREEN POSITION XX.
这条语句的作用是将该语句后面的第一个Screen element定位在这一行的XX位置,最大值为79。值得注意的是,如果同一行中多个Position语句因为空间不够或Element所占空间重叠,将导致Screen创建时的错误,无法激活。此时并无具体的提示。只能仔细观察代码。
3 SELECTION-SCREEN COMMENT XX(Y) TEXT-XXX FOR FIELD XXX.
这条语句的作用是在当前行的指定列位置处输出一段文本,For field则表示文本与某个element 关联,当此语句使用时,可以不必设定屏幕的Text element,系统会自动关联。XX表示位置,Y表示长度,注意,如果长度不足,超常的文字将被截掉。此处似乎还有一个小BUG,当Y小于5时,输出的文字字体会变大一号。不知道为什么。
4 SELECTION-SCREEN SKIP 1.
跳过一行。类似于用WRITE写Report时的SKIP 1.也可以跳过多行。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式