### ABAP语言开发之报表的事件 在ABAP (Advanced Business Application Programming) 开发中,了解不同类型的程序及其对应的事件是非常重要的。根据给定的信息,本文将详细介绍与**报表**(REPORT)相关的事件。 #### ABAP的程序类型 ABAP语言支持多种程序类型,每种类型都有其特定的应用场景: 1. **REPORT**:主要用于处理数据并生成报表。 2. **PROGRAM**:用于创建屏幕界面,通常与用户交互有关。 3. **FUNCTION-POOL**:一组相关的功能模块。 4. **CLASS-POOL**:包含多个类的集合。 5. **INTERFACE-POOL**:定义多个接口。 6. **TYPE-POOL**:用于定义数据类型。 #### 报表中的关键事件 报表作为ABAP中非常常见的一种程序类型,具有丰富的事件机制来支持各种业务需求。 ##### LOAD-OF-PROGRAM 该事件发生在程序启动时。可以用来初始化全局变量或者执行一些预处理操作。 - **触发时机**:当通过`SUBMIT`, `CALL TRANSACTION`, 或者`PERFORM`等命令调用程序时会触发此事件。 - **用途**:进行资源加载、初始化环境等工作。 ##### INITIALIZATION 初始化阶段是在LOAD-OF-PROGRAM之后发生的事件,主要用于报表的初始设置。 - **触发时机**:在程序加载后立即发生。 - **用途**:可以在此处设置初始参数、进行变量赋值等操作。 ##### AT SELECTION-SCREEN OUTPUT (PBO) 此事件发生在显示选择屏幕之前,主要用于控制选择屏幕的状态。 - **触发时机**:在显示选择屏幕前触发。 - **用途**:可以在此处清除或修改选择屏幕上的字段值,以便为用户展示正确的初始状态。 ##### AT SELECTION-SCREEN 选择屏幕事件发生在用户完成所有输入后,可以对用户输入的数据进行验证或处理。 - **触发时机**:用户完成所有输入并点击执行按钮后触发。 - **用途** - **实现自定义表单处理**:可以通过编写FORM程序块来处理用户输入。 - **系统命令响应**:使用`SY-UCOMM`来检查用户是否选择了特定的操作,如`CHECK`, `RADIO BUTTON`, `LIST BOX`等。 - **字段变更事件**:响应用户更改字段值的操作,例如当用户更改某个CHECKBOX的状态时触发`ON CHANGING`事件。 - **选择项变更**:当用户更改了`SELECT-OPTIONS`的值时触发`ON END OF SELECTION`事件。 - **帮助请求**:当用户按下F1键请求帮助时触发`ON HELP-REQUEST`事件。 - **区块变更**:当用户更改了BLOCK中的某个字段时触发`ON BLOCK`事件。 - **输出**:在选择屏幕输出后进行最后的调整,如修改字段值等。 ##### START-OF-SELECTION 该事件在选择屏幕显示后、报表实际处理之前发生,是进行主要逻辑处理之前的最后机会。 - **触发时机**:在选择屏幕显示后立即发生。 - **用途**:根据用户输入的数据进行必要的预处理工作,比如建立连接数据库的准备动作。 ##### GET 该事件用于读取数据库中的数据。 - **触发时机**:当需要获取数据库中的记录时触发。 - **用途**:读取指定表或视图中的数据。 ##### END-OF-SELECTION 选择结束后发生的事件,通常用于进行报表的最终处理。 - **触发时机**:在选择屏幕显示之后触发。 - **用途**:执行报表的核心逻辑,如查询、统计等。 此外,还有一些其他事件如**TOP-OF-PAGE**, **END-OF-PAGE**, **AT LINE-SELECTION**, **AT USER-COMMAND**等,它们主要用于页面级别的控制,如分页处理、用户命令响应等。 #### MODULE 模块化是ABAP编程中一个重要的概念,用于封装重复使用的代码块。 - **触发时机**:在需要重复执行相同逻辑的地方调用。 - **用途**:提高代码复用性,简化复杂流程。 #### ENDMODULE 结束模块定义,标志着一个模块的结束。 - **触发时机**:在定义完一个模块后自动触发。 - **用途**:标记模块的结束位置。 #### CHECK 用于验证某些条件是否满足。 - **触发时机**:在需要验证条件的地方使用。 - **用途**:确保数据的有效性和一致性。 #### REJECT 如果条件不满足,则终止当前处理流程。 - **触发时机**:在条件不满足时触发。 - **用途**:阻止不符合条件的数据进一步处理。 #### STOP 立即终止当前程序的执行。 - **触发时机**:在需要立即停止程序的地方使用。 - **用途**:避免程序继续执行,防止错误扩大化。 #### RETURN 返回到调用方。 - **触发时机**:在需要返回上一级处理流程的地方使用。 - **用途**:退出当前函数或子程序。 #### SET PF-STATUS 设置选择屏幕的界面布局和行为。 - **触发时机**:在需要自定义选择屏幕的布局时使用。 - **用途** - **排除字段**:使用`EXCLUDING`来排除不需要显示的字段。 - **立即应用**:使用`IMMEDIATELY`选项使更改立即生效。 - **指定程序**:使用`OF PROGRAM`指定该设置应用于哪个程序。 #### SET TITLEBAR 设置选择屏幕的标题栏文本。 - **触发时机**:在需要修改选择屏幕标题栏文字时使用。 - **用途**:为选择屏幕提供更清晰的指示信息。 掌握这些事件的触发时机及其用途对于编写高效的ABAP报表程序至关重要。通过合理利用这些事件,开发者可以构建出既高效又易于维护的应用程序。
Program type(程序类型)Introductory statement(类型描述)
1 REPORT(报表)
M PROGRAM(屏幕程序)
F FUNCTION-POOL(函数组)
K CLASS-POOL(类组)
J CLASS-POOL(接口组)
T TYPE-POOL(类型池)
二, 下面介绍报表中用到的事件以及作用:
1. LOAD-OF-PROGRAM:程序开始执行时候自动调用
这个事件在SUBMIT,CALL TRANSACTION,PERFORM等执行的时候系统会自动调用这个事件。所以无需声明即可。
2. INITIALIZATION
3.AT SELECTION-SCREEN OUTPUT(PBO)
在每次选择屏幕被调用之前触发。可以在屏幕输出之前做些准备工作,比如在程序中动态的对选择屏幕元素的输出属性进行修改。例如在该事件块中如果将CLEAR语句用于选择屏幕元素的值,侧在每次重新显示选择屏幕时将选择屏幕元素的数值清空,如果只是希望进行一次类似的初始化工作,侧在INITIALIZATION 中进行
3. AT SELECTION-SCREEN
(1).其实就像一个FORM,所以在这个事件里声明的变量都是局部变量。
(2).根据SY-UCOMM这个系统变量可以判断用户的命令
(3).在这个事件里响应的是屏幕上选择条件中的事件,例如CHECKBOX的选择与否,RADIOBUTTON的选择,LISTBOX(事件如用户回车,选择某个GUI按钮。功能键或者菜单。)该事件主要进行对所有用户输入正确性和全部字段的一致性的检查工作,如有错误消息,侧所有元素可以重新进行输入,此后选择Excute或者回车讲再次触发PAI
的选择等等。所以分为以下几个方面:
1. ... ON psel :在PARAMETER变化是触发的事件(该字段CHECK,如果有错误,侧可以在该字段中重新输入,其他元素成灰色,不接受输入)
2. ... ON END OF sel :SELECT-OPTION触发的事件
3. ... ON VALUE-REQUEST FOR psel_low_high :选择的帮助(F4)
4. ... ON HELP-REQUEST FOR psel_low_high :选择的帮助(F1)
5. ... ON RADIOBUTTON GROUP radi :单选按钮事件(不是使用ON FIELD 进行的,而是使用单选按钮组区域,其他成灰色)
6. ... ON BLOCK block :框架的触发事件(区域,其他成灰色)
7. ... OUTPUT :响应屏幕上的事件,修改选择屏幕的唯一方法
4. START-OF-SELECTION
报表程序必须执行的事件,在进入第二屏幕之前触发。
- 粉丝: 0
- 资源: 2
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于Java开发的日程管理FlexTime应用设计源码
- SM2258XT-BGA144-4BGA180-6L-R1019 三星KLUCG4J1CB B0B1颗粒开盘工具 , EC, 3A, 94, 43, A4, CA 七彩虹SL300这个固件有用
- GJB 5236-2004 军用软件质量度量
- 30天开发操作系统 第 8 天 - 鼠标控制与切换32模式
- spice vd interface接口
- 安装Git时遇到找不到`/dev/null`的问题
- 标量(scalar)、向量(vector)、矩阵(matrix)、数组(array)等概念的深入理解与运用
- 数值计算复习内容,涵盖多种方法,内容为gpt生成
- 标量(scalar)、向量(vector)、矩阵(matrix)、数组(array)等概念的深入理解与运用
- 网络综合项目实验12.19