选择屏幕及ABAP程序事件

选择屏幕

  • 选择屏幕用于输入数据选择的选择标准
  • 选择屏幕也是屏幕,这些屏幕是根据源代码中的声明语句生成的

选择屏幕标准功能:

  • 文本(选择文本)能够以多种语言进行维护

    在运行时,文本会自动以用户的登录语言显示。

  • 自动检查类型

    检查用户输入的内容与输入字段的类型是否相符

  • 除单一值(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位
  • 定义的屏幕元素在程序中当做内表来用,内表的结构比较特殊
名称参考值描述
SIGNI或者EI:包括;E:排除
OPTIONEQ,NE,CP,NP,GE,LT,LE,GTEQ(等于),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都会退出当前执行的程序块,而不仅仅是退出循环。

  • 2
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值