承接上一节,由于ALV报表通常有选择屏幕作为程序和用户之间的接口,所以这一节主要介绍一下选择屏幕。
二、选择屏幕
选择屏幕上的各种元素是用程序语句生成的,而不是使用屏幕编辑器添加的。
1、选择屏幕的功能
*选择参数元素,用于单值输入
*复杂选择标准,可用于多值及范围的输入
*可为输入参数定义输入帮助(F1)及搜索帮助(F4)
*可定义变式,保存常用的输入条件
2、选择屏幕元素
2.1 选择屏幕参数
(是最简单的选择屏幕元素,此种方式只接受单值输入,定义该参数时变量的长度不能超过8个字符)
定义格式: Parameters name TYPE/LIKE type/dobj <options>.
选择屏幕参数有许多附加格式化选项,但都不是必选,在需要的时候可以使用。如下:
*DEFAULT value:分配默认值
*OBLIGATORY:设置必输项,当设置该选项以后,若输入的时候没有值,则系统会自动报错。
*LOWER CASE:设置小写
*VISIBLE LENGTH len :设这可显示长度
*MATCHCODE OBJECT s_help:分配查询帮助,但该查询帮助对象s_help必须在数据字典中已经定义
*VALUE CHECK:进行值检查
*NO-DISPLAY:隐藏显示
*MODIF ID key:分配修改代码组
*MEMORY ID pid:使用内存默认值
*AS CHECKBOX: 创建复选框
*RADIOBUTTON GROUP radi:创建单选按钮组,每个分组至少两个参数,组名称的最大长度为4,并且每个组中只有一个参数可以设置默认值。
以上打上红色的格式化选项是我在开发ALV报表时设计选择屏幕中比较常用的几个,之后我会使用实例来讲解它们的用法。
2.2 复杂选择标准
定义变量为复杂选择标准,该变量为一个包含有四个组件的内表,如下:
DATA: BEGIN OF seltab OCCURS 0,
SIGN(1),
OPTION(2),
LOW LIKE f,
HIGH LIKE f,
END OF seltab.
该内表的具体用法,就不在此做讲解,具体可以参考黄佳的《SAP程序设计》。
(注:在使用Ranges定义变量的时候,其性质与该内表一样,所以在使用的时候要设置SIGN和OPTION,否则会报错!)
复杂选择标准的格式选项,除了有与选择屏幕参数一致的选项外,还有自己特有的选项:
*NO-EXTENSION 限制选择表为单行
*NO INTERVALS 限制选择表为单值
3、其他选择屏幕元素
可以使用SELECTION-SCREEN……<options>……进行添加一些其他元素。
1>、SELECTION-SCREEN SKIP(N).产生空行,N值为1-9,当省略N时,默认空1行
2>、SELECTION-SCREEN ULINE [[/]pos(len)] [MODIF ID key].用于给屏幕中的行划下划线
3>、SELECTION-SCREEN COMMENT [/]pos(len) comm [FOR FIELD f] [MODIF ID key].给选择屏幕添加注释行文字
4>、SELECTION-SCREEN POSITION pos.将选择屏幕的元素按指定的位置输出
4、组合选择屏幕元素
1>、SELECTION-SCREEN BEGIN OF LINE.
………………
SELECTION-SCREEN END OF LINE.是将多个不同的元素在同一行输出
2>、SELECTION-SCREEN BEGIN OF BLOCK block [ WITH FRAME [TITLE title]] [NO INTERVALS].
………………
SELECTION-SCREEN END OF BLOCK block.将一组选择元素组合在一个区域中输出,最多可以嵌套5层。
3、选择屏幕事件
选择屏幕事件是在INITIALIZATION事件和START-OF-SELECTION事件之间触发的,以下是相关的选择屏幕事件:
AT SELECTION-SCREEN OUTPUT.是选择屏幕的PBO事件,在每次选择屏幕被调用之前触发
AT SELECTION-SCREEN.是选择屏幕的PAI事件,是用户输入数据传输到程序后触发,是选择屏幕事件中最后触发的事件
AT SELECTION-SCREEN ON field.对输入的某个字段进行触发
AT SELECTION-SCREEN ON BLOCK block.是对选择屏幕中的某个选择区域进行触发
AT SELECTION-SCREEN ON RADIOBUTTON GROUP radi.对某个单选按钮组进行触发
AT SELECTION-SCREEN ON seltab.
AT SELECTION-SCREEN ON END OF seltab.此两个事件只在多行选择对话框才会触发
AT SELECTION-SCREEN ON HELP-REQUEST FOR field.POH事件,相当于F1事件
AT SELECTION-SCREEN ON VALUE-REQUEST FOR field.POV事件,相当于F4事件
---------------------------------以上知识摘自黄佳的《SAP程序设计》