选择屏幕
- 选择屏幕用于输入数据选择的选择标准
- 选择屏幕也是屏幕,这些屏幕是根据源代码中的声明语句生成的
选择屏幕标准功能:
-
文本(选择文本)能够以多种语言进行维护
在运行时,文本会自动以用户的登录语言显示。
-
自动检查类型
检查用户输入的内容与输入字段的类型是否相符
-
除单一值(
PARAMETERS
)外,还有复杂选择(
SELECT-OPTIONS
)可输入间隔、范围、比较条件等为限制条件
-
使用字典元素(如数据元素)定义输入字段
使用F1输入字段中显示字段文档(数据元素文档)
通过F4调用附加到字典类型的搜索帮助
-
将选择屏幕保存为变式
以备重用或用于后台操作
PARAMETERS
单值输入:
PARAMETERS {<para>[(len)]} | {para [LENGTH len]}
[TYPE <type> [DECIMALS decimals]] | [LIKE object]
[DEFAULT value]
注意:type参考
不能是结构或表类型
PARAMETER可以
参照数据字典具体字段
或者
数据元素
创建文本输入框以及单选/复选框等
- 输入变量的定义方法与普通变量相同
- 输入变量名不能超过8个字符长
- 使用DEFAULT附件而非VALUE附加指定缺省值
-
PARAMETERS定义后
不会产生内表
,可
当做变量在程序中运用
PARAMETERS语法扩展
- MEMORY ID mid:将PARAMETERS存储在SAP内存,参数名长度不能超过三位(SAP内存是登录当前的用户,无论登陆几个窗口数据共享;ABAP内存:程序一中设置的参数,程序二无法看到,只有在一个进程中才可看到)
- NO-DISPLAY:将PARAMETERS设置为隐藏,不会在屏幕上输出
- LOWER CASE:如果输入小写,则将在回车或者执行时候继续保持小写
- OBLIGATORY:限制改PARAMETERS为必填,否则会提示输入
- AS CHECKBOX:创建CHECKBOX对象
- RADIOBUTTON GROUP radi:创建(RADIO)单选框,不用使用TYPE定义类型
- VISIBLE LENGTH vlen:定义显示长度
- USER-COMMAND ucom:功能码,只能分配给CHECKBOX或者LISTBOX或者RADIO BUTTON,当选择以上控件时,程序调用AT SELECTION-SCREEN事件,通过功能码控制屏幕其他元素的属性
- AS LISTBOX VISIBLE LENGTH vlen:创建一个下拉框,并指定长度
- MATCHCODE OBJECT:指定SE11的搜索帮助
SELECT-OPTIONS
复杂选择:
SELECT-OPTIONS name FOR data_object.
name是选择选项的名称
data_object是一个
预定义变量
,或者
数据库表字段
- 常用于参照一数据库字段来建立,要在程序中开始用TABLES声明表名
- 其定义对象命名长度不能超过8位
-
定义的屏幕元素在程序中
当做内表来用
,内表的结构比较特殊
名称 | 参考值 | 描述 |
---|---|---|
SIGN | I或者E | I:包括;E:排除 |
OPTION | EQ,NE,CP,NP,GE,LT,LE,GT | EQ(等于),NE(不等于),NP(排除参考格式),LT(小于),LE(小于护着等于),CP(包含),NP(不包含),GT(大于),GE(大于或等于),BT(范围),NB(排除范围) |
LOW | 维护项目-前 | |
HIGH | 维护项目-后 |
复杂选择语法扩展
-
默认值的设定
- DEFAULT I:定义单一默认值
- DEFAULT I OPTION op SIGN s:定义含判断条件的单一默认值
- DEFAULT I TO h:定义默认值的范围
- DEFAULT I TO h OPTION op SIGN s:定义默认值的范围及判断条件
- MEMORY ID pid:将SELECT-OPTIONS 分配参数名并存储在SAP内存,参数名长度不能超过三位。
- NO-DISPLAY:将SELECT-OPTIONS 设置为隐藏,不会在屏幕上输出。
- LOWER CASE:如果输入小写,则将在回车或者执行时候保持小写。
- OBLIGATORY:限制该SELECT-OPTIONS 为必须输入的项目,执行中系统会提示。
- NO-EXTENSION:限制该SELECT-OPTINS 只能输入一行数据,输入多行按钮被隐藏。
- NO INTERVALS:只能输入单值,不能输入范围。
- VISBLE LENGTH vlen:定义所显示数据的长度。
- MATCHCODE OBJECT:指定SE11搜索帮助。
SELECTION-SCREEN
用于创建屏幕的框架结构,主要包括屏幕元素的创建、子屏幕的创建等
语法一:
SELECTION-SCREEN BEGIN OF BLOCK block.
SELECTION-SCREEN END OF BLOCK block.
该语法在屏幕中定义了一个框,其扩展语法包括:
WITH FRAME
:创建一个框架
TITLE title
:创建一个带标题的框架
NO INTERVALS:所创建的框架中限制SELECT只有一个输入项
语法二:
SELECTION-SCREEN BEGIN OF SCREEN src.
SELECTION-SCREEN END OF SCREEN src.
用于定义一个INCLUDE SUREEN,可通过CALL方法在Report程序中引用
CALL屏幕窗体时加入STARTING AT … ENDING AT …参数
可以将所定义屏幕窗体作为一个新的对话框窗体来引用,并指定其创建的具体大小及位置
文本元素
在SELECT-OPTION-OPTION 与 PARAMETERS 的设计中,我们可以发现它们在屏幕上显示的名称是对象的定义名,在实际的应用中,我们需要提示某个字段的完整名称以方便用户理解
例如物料字段名MATNR,我们要求其在屏幕显示字段为“Material No”。
- SAP提供Text Elements组件,方便实现栏目名的自定义
- Text Element 共包括三部分(List Heading、SElECTION TEXTS、Text Symbols)
设置值与当前使用的语言版本有关
若程序存在多个语言版本,则需要在相应语言环境中分别维护其栏位及字段名称,保证了在不同语言环境中用户界面语言的自适
清单标题(List Heading)
用于定义Report标题名称及描述
路径:在ABAP编辑器中:转到—>文本元素—>清单标题,进行维护,用于write输出的程序
选择文本(SELECTION TEXTS)
在选择屏幕上,缺省情况下输入字段名会作为其描述出现。可替换为相应的选择文本。可将其翻译为所需的任何其他语言。选择文本会在运行时以用户的登录语言进行显示
路径:转到—>文本元素—>选择文本,进行维护。可使用菜单转到—>翻译,进行翻译
文本符号(Text Symbols)
用于实现自定义文本及符号。开发人员可按需求定义相关文本或符号,该文本使用对象为SELECTION-SCREEN 所定义的对象。
路径:转到—>文本元素—>文本符号,进行维护。可使用菜单转到—>翻译,进行翻译
ABAP程序事件
INITIALIZATION事件
该事件在
屏幕未显示之前执行
,对程序设置值及屏幕元素进行初始化赋值。
AT SELECTION-SCREEN事件
- 选择屏幕事件,有很多参数,代表不同的扩展信息
- 在这个事件响应中,可以对屏幕字段进行有效性检验,控制屏幕元素的属性等。
AT SELECTION-SCREEN参数:
-
OUTPUT
:用于屏幕输出时的各屏幕元素值的管控(PBO处理,在选择屏幕显示之前就被调用;响应屏幕上的事件,用户回车或F8后也被调用;通过
modify screen 可以修改选择屏幕字段
) - ON 《filed》:该语法用于控制屏幕元素输入时的遇错处理,检查具体输入字段(SELECTION-OPTIONS 或 PARAMETERS)是否完整或正确,若输入有错或不满足条件,其它屏幕元素会变成灰色,不接受输入直到该字段输入正确为止。
-
ON VALUE-REQUEST FOR 《field low/high》
:SELECT-OPTIONS 按选择帮助
F4
键时触发该事件。 - ON HELP-REQUEST FOR 《field low/high》:SELECT-OPTIONS按选择帮助F1键时触发该事件。
- ON RADIOBUTTON GROUP《radio》:单选按钮事件,必须进行整体输入检查。
- ON BLOCK 《block》:框架的触发事件(控制框架中的屏幕元素值的输入)。
- ON EXIT-COMMAND:用于响应“BACK“,”CANCEL“,”EXIT“等事件。
START-OF-SELECTION事件
该事件在执行按钮后触发,主要用于从
数据库中取数
如果程序中没有选择屏幕事件,默认为START-OF-SELECTION
END-OF-SELECTION事件
START-OF-SELECTION事件执行完成后,但输出屏幕还未显示之前,一般用于执行结果校验或者ALV显示等。
屏幕事件终止
STOP
用于INITIALIZATION,AT SELECTION-SCREEN,START-OF-SELECTION和GET事件中
- 如果在以上几个事件中使用STOP,将直接触发END-OF-SELECTION 事件的执行,如果不想执行END-OF-SELECTION ,请使用REUTNR或者EXIT。
EXIT
用于循环和程序模块中:… ENDDO, … ENDWHILE, … ENDLOOP, … ENDSELECT
-
如果在一个模块中有多个循环,只
跳出当前循环
。 - 在START-OF-SELECTION , GET , END-OF-SELECTION事件中,将直接触发List输出,将不执行END-OF-SELECTION事件;如果没有List输出,系统将直接返回选择屏幕。
- 对于程序块,系统返回调用处,程序块包括FORM, METHOD或者EVENT等。
RETURN
RETURN用来
退出当前执行的程序块
,不管是否出现在循环(LOOP)中,RETURN都会退出当前执行的程序块,而不仅仅是退出循环。