ABAP Report程序事件处理流程

在SAP Report事件驱动的程序中,各事件的运行逻辑

事件驱动流程图:

ABAP Report程序事件处理流程

事件:

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

其他相关设置:

SET PF-STATUS ‘0100’
  1. 增加按钮,按钮以组的形式定义
  2. 后缀EXCLUDING gt_exclude. 设置按钮的隐藏
    ABAP Report程序事件处理流程
SET TITLEBAR ’0100’
  1. 增加标题,可以定义占位符,传入变量
  2. 后缀WITH gv_title.
    ABAP Report程序事件处理流程
    ABAP Report程序事件处理流程