ABAP Report程序事件处理流程
在SAP Report事件驱动的程序中,各事件的运行逻辑
事件驱动流程图:
事件:
LOAD-OF-PROGRAM
- 默认执行,用于加载程序,程序运行时触发
- 当执行1类型(可执行程序)、M类型( Module Pool )、 F类型( Function Group )、 S类型( Subroutine Pool)程序时,SAP系统自动将程序加载至内存中时,自动调用这个事件
INITIALIZATION
- 只能用于在可执行程序中,LOAD-OF-PROGRAM执行后触发
- 在所有以下事件块运行之前运行的,只运行一次的事件块
AT SELECTION-SCREEN OUTPUT
- 选择屏幕输出前触发
- 选择屏幕PBO事件(Process Before Output)
- 在选择屏幕输出之前执行的事件,一般用来设置选择屏幕的控件属性
AT SELECTION-SCREEN ON VALUE-REQUEST FOR screen_id
- 选择屏幕中,执行对应screen_id的F4帮助时触发
- 自定义搜索帮助事件块,用于用户输入帮助
AT SELECTION-SCREEN
- 选择屏幕中,屏幕值变化时触发
- 选择屏幕PAI事件(Process After Input)
- 一般用来进行有效性检查;PAI执行完毕后,自动执行一次PBO事件,刷新屏幕
START-OF-SELECTION
- 点击执行按钮后触发
- 一般用于取数据,处理数据
TOP-OF-PAGE
- 输出自定义的表头用的,在新的一页刚开始遇到write语句的时候这个事件块就会执行一次
- 第一次执行:遇到程序中的第一个write语句时,跳转到TOP-OF-PAGE事件执行,执行完毕后返回执行write语句
- 隐藏默认表头,在REPORT程序第一行进行设置:NO STANDARD PAGE HEADING
END-OF-PAGE
- 输出自定义页尾
- 当前页介绍时触发
END-OF-SELECTION
- START-OF-SELECTION之后触发
- 展示数据
AT USER-COMMAND
- 当SY-UCOMM发生变化时触发
- 需要设置专门处理程序CASE SY-UCOMM或者 CASE OK_CODE
TOP-OF-PAGE DURING LINE-SELECTION
- 在REPORT程序中重新使用WRITE语句输出表单时,表单序号SY-LSIND自动增加1,次级表单输出时,需要单独指定表头
在后续List中控制报表表头时使用的功能
AT LINE-SELECTION
- 用于在报表输出时,点击某行时所产生的操作,响应的位置在整行
- 一般和HIDE连用,HIDE的功能是抓取某个field在某行中的值,与sy-linno相关
其他相关设置:
SET PF-STATUS ‘0100’
- 增加按钮,按钮以组的形式定义
- 后缀EXCLUDING gt_exclude. 设置按钮的隐藏
SET TITLEBAR ’0100’
- 增加标题,可以定义占位符,传入变量
- 后缀WITH gv_title.