sap parameters 与select-options区别

本文探讨了在报告形式中,当使用parameters作为输入参数时,若某一字段未输入导致SQL查询结果不符的问题。通过引入SelectOptions,解释了其如何提供范围选择并避免查询空值,同时对比了SelectOptions与Parameters的区别,并提供了如何调整SelectOptions以保持与Parameters外观一致的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们经常会遇到如下的需求,在页面的几个输入框中输入参数,然后在根据输入条件显示结果集列表。这是最常见的report形式。可是问题是,在使用parameters作为参数的时候,某一项的值没有输入,sql执行后的结果与我们期望的不相符,根源在于某一字段为空,查询条件就会去搜索这一字段为空的值,结果往往是没有符合条件的结果。

对应这种情况,可以采取多种方法解决,如使用range,或者使用动态sql语句。但是也可以使用select options 来代替parameters进行输入参数定义。因为select options定义出来的实际上是一个内表,在查询的时候使用IN,即使没有输入,查询语句会忽略这一项的匹配,而不会取数据库里找寻没有值或为空的记录匹配。这样的查询结果才是我们所需要的。

然而,select options 默认会产生两个输入框,这与parameters有些不同,不过没有关系,在定义select options的时候只需要加上一些特殊操作即可以只显示第一个输入框,这样在外观上与parameters就很相似了。

如: SELECT-OPTIONS: so_gjahr FOR bsik-gjahr NO INTERVALS . 这样在查询的时候就不能按照 '=' 来设置查询条件了,而应该应 'IN' 来设置这个条件,即:…… where bsik-gjahr IN so_gjahr ……。这样,即使so_gjahr即使没有输入也不会影响到最终查询的结果。


abap 面试!

37. What are select options and how are they different from parameters?
select options provide
ranges where as parameters do not.
SELECT-OPTIONS declares an internal table which is automatically filled with values
or ranges
of values entered by the end user. For each SELECT-OPTIONS , the system creates a selection table.
SELECT-OPTIONS FOR .
A selection table is an internal table with fields SIGN, OPTION, LOW and
HIGH.
The type of LOW and HIGH is the same as that of .
The SIGN field can take the following values: I
Inclusive (should apply) E Exclusive (should not apply)
The OPTION field can take the following values: EQ Equal GT
Greater than NE Not equal BT Between LE Less
than or equal NB Not between LT Less than CP Contains pattern GE Greater
than or equal NP No pattern.
Select Options vs Parameters
PARAMETERS allow users to enter a single
value into an internal field within a report.
SELECT-OPTIONS allow users to fill an internal table with a range of
values.
For each PARAMETERS or SELECT-OPTIONS statement you should define text elements by choosing
Goto - Text
elements - Selection texts - Change.
Eg:- Parameters name(30).
when the user executes the ABAP/4 program,an
input field for 'name' will appear on the selection screen.You can change the comments on the left side of the input fields
by using text elements as described in Selection Texts.
<think>我们正在讨论SAP ABAP的选择屏幕开发。根据用户的问题,他想了解除了SELECT-OPTIONSPARAMETERS之外,选择屏幕上还可以使用哪些其他参数形式或元素。 根据引用[4]引用[5]的内容,我们可以知道选择屏幕不仅包含SELECT-OPTIONSPARAMETERS,还有其他元素事件。但是,用户特别询问了“参数类型”,因此我们主要关注选择屏幕上的输入元素。回顾引用: -引用[4]提到了选择屏幕的事件,如AT SELECTION-SCREENOUTPUT等,并且提到了屏幕元素(如单选按钮、框架等)以及事件触发的条件。-引用[5]则提供了SCREEN字段的属性,这些属性可以控制屏幕字段的显示输入行为。 实际上,在SAPABAP的选择屏幕中,除了SELECT-OPTIONSPARAMETERS,还可以使用以下元素:1.单选按钮(RADIOBUTTONGROUP)2.复选框(CHECKBOX)3.框架(BLOCK)用于分组4.文本(TEXT)用于显示文本5.下拉框(LISTBOX),可以通过PARAMETERS ASLISTBOX实现此外,还可以使用一些修饰元素,如下划线(ULINE)注释(COMMENT)等。但是,请注意,用户问题中问的是“参数类型”,所以我们主要关注输入元素。因此,除了OPTIONS(即SELECT-OPTIONSPARAMETERS之外,选择屏幕上常用的输入元素还有:-单选按钮(RADIOBUTTONGROUP)-复选框(CHECKBOX) 另外,PARAMETERS本身可以有不同的变体,比如:-作为复选框(PARAMETERS... ASCHECKBOX) -作为单选按钮(PARAMETERS... RADIOBUTTON GROUP<group>) -作为下拉框(PARAMETERS... ASLISTBOX)所以,严格来说,用户提到的“参数类型”中,PARAMETERS可以衍生出多种形式,包括复选框单选按钮,而SELECT-OPTIONS则用于范围选择。 除此之外,选择屏幕还可以使用框架(BLOCK)来组织这些元素,以及文本(TEXT)注释(COMMENT)等静态元素。 因此,我们可以这样回答:在SAPABAP的选择屏幕中,除了SELECT-OPTIONS(用于范围选择)基本的PARAMETERS(单值输入)之外,还可以使用以下参数形式:1.复选框(CHECKBOX):使用PARAMETERS... ASCHECKBOX定义,用于布尔值选择。2.单选按钮(RADIOBUTTON GROUP):使用PARAMETERS ...RADIOBUTTONGROUP <group>定义,同一组内的单选按钮只能选择一个。3.下拉框(LISTBOX):使用PARAMETERS ...AS LISTBOX定义,提供下拉选项列表。 此外,选择屏幕还支持以下非输入元素用于界面布局说明:-框架(BLOCK):用于将多个屏幕元素组合在一个框架内,使用SELECTION-SCREENBEGIN OFBLOCK... ENDOF BLOCK。-文本(TEXT):用于显示文本标签,使用SELECTION-SCREEN COMMENT。-下划线(ULINE):用于绘制水平线,使用SELECTION-SCREENULINE。 -空行(SKIP):使用SELECTION-SCREEN SKIP [n]来插入空行。这些元素共同构成了SAP ABAP选择屏幕的丰富界面。 下面,我们按照要求生成相关问题。</think>### SAP 选择屏幕参数类型详解 在 SAP ABAP 的选择屏幕开发中,除了 `SELECT-OPTIONS` `PARAMETERS` 外,系统还提供多种参数类型界面元素: #### 1. **单选按钮组 (RADIOBUTTON GROUP)** - 用于互斥选择,同一组内只能激活一个选项 - 语法示例: ```abap PARAMETERS: rb1 RADIOBUTTON GROUP grp1, rb2 RADIOBUTTON GROUP grp1. ``` - 通过 `ON RADIOBUTTON GROUP` 事件实现整体验证[^4] #### 2. **复选框 (CHECKBOX)** - 用于布尔值选择(勾选/未勾选) - 语法示例: ```abap PARAMETERS: chk_box AS CHECKBOX. ``` #### 3. **下拉列表 (LISTBOX)** - 提供预定义选项的下拉菜单 - 语法示例: ```abap PARAMETERS: p_list AS LISTBOX VISIBLE LENGTH 20. ``` - 需配合 `VALUE-REQUEST` 事件动态填充选项[^4][^5] #### 4. **框架 (BLOCK)** - 用于界面元素分组布局控制 - 语法示例: ```abap SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME. PARAMETERS: p_date TYPE datum. SELECTION-SCREEN END OF BLOCK b1. ``` - 支持 `ON BLOCK` 事件验证组内输入[^4] #### 5. **静态文本元素** - **注释 (COMMENT)** ```abap SELECTION-SCREEN COMMENT /20(30) text1. ``` - **下划线 (ULINE)** ```abap SELECTION-SCREEN ULINE /20(30). ``` - **空行 (SKIP)** ```abap SELECTION-SCREEN SKIP 2. ``` #### 6. **屏幕字段属性控制** 通过 `MODIFY SCREEN` 动态调整属性: ```abap LOOP AT SCREEN. IF screen-name = 'P_FIELD'. screen-active = 0. "隐藏字段 MODIFY SCREEN. ENDIF. ENDLOOP. ``` 支持属性包括:`ACTIVE`(激活状态)、`REQUIRED`(必输项)、`INVISIBLE`(隐藏)等[^5]。 #### 7. **特殊事件参数** - **退出命令** `ON EXIT-COMMAND` 处理返回/取消操作[^4] - **字段帮助** `ON VALUE-REQUEST FOR` 自定义 F4 帮助 `ON HELP-REQUEST FOR` 自定义 F1 帮助 > 这些元素需配合选择屏幕事件(如 `AT SELECTION-SCREEN OUTPUT`)实现动态行为控制,通过修改 `SCREEN` 字段属性可实时调整元素状态[^4][^5]。 --- ### 相关问题 1. 如何在 SAP 选择屏幕中实现动态字段显示/隐藏? 2. 单选按钮组的事件验证有哪些最佳实践? 3. 如何为下拉列表字段自定义值帮助(F4)? 4. 选择屏幕框架(BLOCK)布局有哪些高级应用技巧? 5. 怎样通过 `MODIFY SCREEN` 实现字段的联动控制?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值