摘要: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.
这个事件在SUBMIT,CALL TRANSACTION,PERFORM等执行的时候系统会自动调用这个事件。
所以无需声明即可。
*---------------------------------------------------------------
* INITIALIZATION :对程序变量进行初始化,启动程序开始执行
*---------------------------------------------------------------
INITIALIZATION.
第五部分:
*---------------------------------------------------------------
* AT SELECTION-SCREEN :选择屏幕运行时触发,主要是对查询条件或是权限进行校验
*---------------------------------------------------------------
AT SELECTION-SCREEN.
第六部分:
*---------------------------------------------------------------
* 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 _____

1069

被折叠的 条评论
为什么被折叠?



