SAP ABAP Report报表事件详解

摘要:ABAP程序通过事件(event)控制执行流程,包括LOAD-OF-PROGRAM(程序启动)、INITIALIZATION(变量初始化)、AT SELECTION-SCREEN(屏幕校验)等关键事件。程序结构包含报表声明、数据定义、选择屏幕设置等部分,通过START-OF-SELECTION获取数据并输出。事件触发具有顺序性,新事件会终止前一个事件。程序还支持子程序调用、页面控制(TOP-OF-PAGE/END-OF-PAGE)和用户交互处理(AT LINE-SELECTION)。数据操作通过FORM子程序实现,包括数据检索(data_retrieve)和输出(output_data)等功能。

ABAP的程序流程主要是通过 event 来控制的, 不同的event会有相应的执行顺序和功能,

第一部分:

以下是ABAP program运行中常用的一些event

1.load-of-program  程序执行时,自动触发该event

2.initializtion  对程序变量进行初始化

3.at selection-screen output  相当于选择屏幕的PBO,在屏幕显示前触发

4.at selection-screen 选择屏幕运行时触发,主要是对查询条件或是权限进行校验.

5.top-of-page 对报表的页眉进行编辑

6.end-of-page 对报表的页脚进行编辑

7.start-of-selection 对数据库的操作

8.end-of-selecion 打印报表数据

9.at line-selecion 通过对Basic list 数据的双击,进入Detail list

....

一个event的触发会使上一个event 终止.

因为ABAP program 的执行过程是由event 来决定的,所以event的控制非常重要.

第二部分:

*---------------------------------------------------------------

* REPORT NAME : 宣告程序名称及报表格式,

*---------------------------------------------------------------

REPORT Z_____

       NO STANDARD PAGE HEADING

          MESSAGE-ID __    “ 所使用的MESSAGE

          LINE-COUNT ___   “ 每页报表列数

          LINE-SIZE  ___.  “ 每页报表宽度

*---------------------------------------------------------------

* Include Program : 列出所含入的其它程序source code, 如子程序

*---------------------------------------------------------------

INCLUDE ____.

第三部分:

*---------------------------------------------------------------

TABLE DESCRIPTION : 宣告程序会使用的TABLE

*---------------------------------------------------------------

TABLES:

*---------------------------------------------------------------

* DATA : 宣告程序所使用的变量及自定型态

*---------------------------------------------------------------

TYPES:

DATA:

 *---------------------------------------------------------------

*  SELECTION SCREEN / OPTION / PARAMETER : 屏幕输入报表筛选条件

*---------------------------------------------------------------

  SELECTION-SCREEN BEGIN OF BLOCK ____

       SELECT-OPTIONS:

  SELECTION-SCREEN END OF BLOCK ___

第四部分:

*---------------------------------------------------------------

LOAD-OF-PROGRAM :程序开始执行时候自动调用

*---------------------------------------------------------------

LOAD-OF-PROGRAM.

这个事件在SUBMITCALL TRANSACTIONPERFORM等执行的时候系统会自动调用这个事件。

所以无需声明即可。

*---------------------------------------------------------------

* INITIALIZATION :对程序变量进行初始化,启动程序开始执行

*---------------------------------------------------------------

INITIALIZATION.

第五部分:

*---------------------------------------------------------------

* AT SELECTION-SCREEN :选择屏幕运行时触发,主要是对查询条件或是权限进行校验

*---------------------------------------------------------------

 AT SELECTION-SCREEN.

1.ON pselPARAMETER变化是触发的事件
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单选按钮事件
6.ON BLOCK block框架的触发事件
7.OUTPUT :响应屏幕上的事件,修改选择屏幕的唯一方法

               

第六部分:

*---------------------------------------------------------------

* START-OF-SELECTION : 抓取数据, 打印

*---------------------------------------------------------------

START-OF-SELECTION.

  SET PF-STATUS ____.  “ 指定报表执行时所用的 GUI-STATUS名称

  PERFORM data_retrieve.

  PERFORM output_data

*---------------------------------------------------------------

* AT USER Commaand : 执行在GUI-STATUS中自定的命令

*---------------------------------------------------------------

AT USER_COMMAND.

*---------------------------------------------------------------

* AT LINE SELECTION : 由在报表中按下<F2>Double-Click启动

*---------------------------------------------------------------

AT LINE-SELECTION.

第七部分:

*---------------------------------------------------------------

* TOP OF PGAE : 每页开始打印时执行, 用于定义报表表头

*---------------------------------------------------------------

TOP-OF-PAGE.

*---------------------------------------------------------------

* END OF PAGE : 报表打印完最后一页后启动

*---------------------------------------------------------------

END-OF-PAGE.

*---------------------------------------------------------------

* END OF SELECTION : 在结束打印数据后启动, 如可用来印出USER输入的条件

*---------------------------------------------------------------

END-OF-SELECTION.

第八部分:

*&---------------------------------------------------------------------*

*INCLUDE  _____

*&---------------------------------------------------------------------*

* FORM : 撰写程序中所使用到的子程序

* Read Data : TABLE读取数据放入Internal Table

*&---------------------------------------------------------------------*

FORM data_retrieve.

  SELECT * FROM ______

           INTO _______

           WHERE _______.

     IF SY-SUBRC = 0.

     ENDIF.

     APPEND _____.  “ 增加Internal Table元素

  ENDSELECT.

ENDFORM.

第九部分:

*---------------------------------------------------------------

* Print Data : 依序输出 Internal Table的数据

*---------------------------------------------------------------

FORM output_data.

   WRITE:/_____

ENDFORM.

*---------------------------------------------------------------

* Include Program : 列出所含入的其它程序source code, 如子程序

*---------------------------------------------------------------

INCLUDE _____

INCLUDE _____

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

墨码书生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值