abap selection screen

本文介绍了ABAP中选择屏的设计方法,包括通过LOGICAL DATABASE、PARAMETERS和SELECTION-SCREEN语句创建选择屏的方式。此外还详细解释了PARAMETERFIELDS、SELECT-OPTIONS的用法及其附加属性,如MEMORYID、OBLIGATORY等。

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

可以通过三种方式来产生selection screen:

l         Logical database 语句:nodes

l         通过parameters,select-options产生一个default selection screen。

l         通过SELECTION-SCREEN BEGIN OF CALL SELECTION-SCREEN创建额外的SELECTION SCREEN。SCREEN NUMBER 1000到1010是sap保留的,在HR中你只能定义9000以上的屏幕号。

如果selection screen程序是后台运行的,那么必须创建相应的variant。

PARAMETER fields的名字最长为8个字符,可以通过MEMORY ID实现在SAP MEMORYZ中交换数据。

如果parameter fields参考dictionary object,并且dictionary object是有外键的,缺省情况下value check是关闭的,可以通过VALUE CHECK来打开这个选项。可以通过AS CHECKBOX来定义复选框,通过AS RADIBUTTON GROUP <grp>,来定义单选按钮。<grp>由四个字符组成。

Select-options的名字最多也只有8个字符。Select-options产生的是一个internal table,它有四个字段:sign option low high。Sign option的值列表:

SIGN: I (Include), E (Exclude)
OPTION: EQ, NE, LE, LT, GE, GT, BT(Between), NB (Not Between),
CP (Contains Pattern), NP (Contains Pattern not)

Select-options addition:

l         DEFAULT:你可以通过INITIALIZATION或LOAD-OF-PROGRAM其中之一来设置缺省值。

l         MEMORY ID:可以实现与SAP MEMORY的交互。

l         LOWER CASE:确定是否进行大写转换,但是对于dictionary object无效。

l         OBLIGATORY

l         NO-EXTESIONS:multiple selection失效

l         NO-INTERVALS:不能直接输入间隔值

如果有logical database,parameter和select-options将会放到最下面。

可以通过SELECTION-SCREEN来设计selection screen的布局,通过BEGIN OF BLOCK <BLK>对selection screen元素进行逻辑分组,可以通过WITH FRAME来添加一个框架。如果selection-screen有框架,可以为block设置title,有两种方式text-xxx和三个字符的标识,后者可以在initialization中设置。事务代码BIBS中有各种selection screen的向导。通过SELECTION-SCREEN BEGIN OF LINE可以实现在一行中放置多个parameters和comments。Comment必须有一个format(position和output length),position可以通过变量来设置也可以是pos_low或pos_high。后者是select-options的low和high。可以通过COMMENT … FOR FIELD把comment和field绑定在一起。通过语句POSITION <pos>来设置下个元素的位置。可以通过事件INTITIALIZATION或LOAD-OF-PROGRAM来为selection-screen字段设置缺省值,也可以 AT SELECTION-SCREEN OUTPUT中设置值与前者不同的时前者在一次运行时只能执行一次。而后者则是只要该屏幕重新显示就能触发一次。所有的屏幕输入都可以通过AT SELECTION-SCREEN EVENT事件检查,当在这个事件中触发error或warning消息时所有的字段又处于输入状态。这个事件可以加上参数ON <f>或ON <seltab>这种情况下触发error消息时只有这个字段处于输入状态。可以通过AT SELECTION-SCREEN ON BLOCK <block>.把一组字段组合到一块,这样在触发error信息时,block中所有字段都处于输入状态。AT SELECTION-SCREEN ON END OF <field>是selection screen PAI事件。可以通过事件AT SELECTION-SCREEN ON HELP-REQUEST and AT SELECTION-SCREEN ON VALUE-REQUEST来实现F1,F4 help。ON VALUE-REQUEST的值选择是通过interactive event来控制的。当用户点击execute或按F8时,SY-SUBRC返回0,如果用户点击cancel或exit sy-subrc返回4。你可以在INITIALIZATION中决定selection screen的缺省值,通过SY-DYNNR在事件中确定目前正在处理的屏幕。用户可以为program创建任意数量的变式,变式只能应用于唯一的程序。当你激活program attribute中的starting with variant标识时,你只能通过变式启动程序。Variant的命名规则,SAP&XXX是由SAP系统提供的,CUS&XXX是由用户自开发的,符合上面的命名规则的变式自动同程序一块传输,否则的话需要手工把变式插入到change request的object list中。Transport object LIMU VAR,或者通过下面的menu path:Variants -> Transport request from the variant maintenance screen。变式可以被设置成仅在后台使用,通过only display in catalog可以使变式在前台不被选择。可以保护变式本身是选择条件不能被没有权限的人修改。Type of select是由select-options和parameter决定,selection protected可以保护选择条件被修改。Hide可以隐藏选择条件。可以通过三种方式来提供selection variables:

l         通过表tvarv(c)(TYPE T)

l         Type D,通过动态设定日期,比如当天

l         用户自定义的变量(TYPE B),通过memory id。

Tags: abap, SELECTION SCREEN

 

### 创建下划线效果 在ABAP中,`SELECTION-SCREEN BEGIN OF LINE` 和 `SELECTION-SCREEN END OF LINE` 用于定义选择屏幕上的单行布局。为了实现下划线效果,可以利用特定的关键字和位置参数来控制显示样式。 通过使用 `ULINE` 关键字可以在指定的位置绘制一条水平线。语法如下: ```abap SELECTION-SCREEN ULINE [/]<pos(len)>. ``` 其中 `<pos>` 表示起始列号,而 `(len)` 则表示要画线的长度。如果省略 `/` 符号,则默认从当前光标所在位置开始画线;如果有 `/` 符号则会跳转到绝对位置再画线[^1]。 下面是一个具体的例子展示如何应用这些概念创建带有下划线的选择屏幕元素: ```abap REPORT zexample_selection_screen. PARAMETERS: p_name TYPE string, p_code TYPE string. INITIALIZATION. " 定义选择屏幕上的一行内容并设置初始值 SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT (10) text_for_p_name FOR FIELD p_name. SELECTION-SCREEN COMMENT (10) text_for_p_code FOR FIELD p_code. SELECTION-SCREEN END OF LINE. DATA: text_for_p_name TYPE STRING VALUE 'Name:', text_for_p_code TYPE STRING VALUE 'Code:'. " 绘制下划线 SELECTION-SCREEN ULINE /(2,7). " 在第2列开始,宽度为7个字符的地方画线 SELECTION-SCREEN ULINE /(15,7). " 同理,在更靠右一点的位置也画上相应长度的线 ``` 此段程序会在两个标签下方各添加一段短横线作为视觉分隔符,从而增强界面美观度的同时提高用户体验感[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值