一、 程序的结构:
典型的ABAP报表程序是由多个代码区域组成,各代码区的存放位置以下列顺序为准,具体格式如下:
*---------------------------------------------------------------
* REPORT NAME : 报表名称及格式
*---------------------------------------------------------------
REPORT Z________“程序名称.
NO STANDARD PAGE HEADING
MESSAGE-ID __ “ 所使用的MESSAGE
LINE-COUNT ___ “ 输出时每页报表行数
LINE-SIZE ___. “ 输出时每页报表的宽度
*---------------------------------------------------------------
* TABLES: 声明报表中使用到的数据表
*---------------------------------------------------------------
TABLES: “数据表名
[STATMENTS]
*---------------------------------------------------------------
* DATA: 定义报表中使用到的变量及内表
*---------------------------------------------------------------
DATA:
*---------------------------------------------------------------
* CONSTANTS: 定义常量
*---------------------------------------------------------------
CONSTANTS:
*---------------------------------------------------------------
* SELECTION-SCREEN:定义选择屏幕中的选择字段
*---------------------------------------------------------------
SELECTION-SCREEN BEGIN OF BLOCK ____
SELECT-OPTIONS:
PARAMETERS:
SELECTION-SCREEN END OF BLOCK ___
*---------------------------------------------------------------
* INITIALIZATION : 程序初始化时所执行的代码
*---------------------------------------------------------------
INITIALIZATION.
[CODE]
*---------------------------------------------------------------
* AT SELECTION-SCREEN :在选择屏幕上执行的代码(多用于权限判断,警告信息)
*---------------------------------------------------------------
AT SELECTION-SCREEN :
[CODE]
*---------------------------------------------------------------
* START-OF-SELECTION:程序运行所处理的代码
*---------------------------------------------------------------
START-OF-SELECTION.
[CODE]
*---------------------------------------------------------------
* DEFINE :定义宏
*---------------------------------------------------------------
DEFINE .
[STATMENTS]
END-OF-DEFINITION..
*---------------------------------------------------------------
* END-OF-SELECTION:程序输出时所运行的代码
*---------------------------------------------------------------
END-OF-SELECTION.
[CODE]
*---------------------------------------------------------------
* TOP OF PGAE :输出屏幕的页眉
*---------------------------------------------------------------
TOP OF PGAE.
[CODE]
*---------------------------------------------------------------
* END OF PGAE :输出屏幕的页脚
*---------------------------------------------------------------
END OF PGAE.
[CODE]
*---------------------------------------------------------------
* FORM :定义子程序
*---------------------------------------------------------------
FORM
.
.
[STATMENTS]
ENDFORM.
二、 程序变量的定义
程序中变量的定义分为两种,对声明的变量尽量多加注释,以提高程序的可读性。
1、 全局变量的定义:
定义在“AT SELECTION-SCREEN”声明之前的变量都为全局变量,全局变量多为内表。变量应该总是被定义在尽可能小的范围内,全局变量使得模块间的耦合增加,提高了程序的复杂性,也使代码的重用和维护更加困难,应尽可能少的定义全局变量。
2、 局部变量的定义:
定义在“START-OF-SELECTION”声明之后的变量为局部变量。
1) 基本数据类型:
数据类型 默认大小 有效大小 初始值 说明
C 1 1-65535Byte Space 文本、字符, 如’Program’
D 8 8 ‘00000000’ 日期, 格式:YYYYMMDD
F 8 8 0 浮点数
I 4 4 0 整数
N 1 1-65535 ‘00…0’ 数字文本
P 8 1-16 0 压缩号
T 6 6 ‘000000’ 时间, 格式:HHMMSS
X 1 1-65535 X’00’ 16进制
2) 一般变量命名规则:
数据类型 前缀 例子
C c cName
D d dDate
F f fRatio
I i iCount
N n nPostCode
P p pNumber
T t tTime
3) 作用范围相关前缀:
前缀 描述
g_ 全局变量
m_ 在INCLUDE创建的变量
没有前缀 非静态变量,或者过程中的变量
3、 内表的定义
内表的名称统一命名以 T开头后跟数字,如若定义多张内表,应对其分别加以注释说明,内表内的字段如果从透明表中取值,应以透明表中字段名称一致,如遇相同,可在其末尾用数字加以区分,如BEZEI1、BEZEI2。对于不常用到的表字段应用注释加以说明。