ABAP 编码规范
一、前言
本文档的目的是规范SAP项目的开发,提供一致性标准,这样才能提高代码质量,提高开发效率和程序的可维护性。
二、程序对象
ABAP程序可使用事务代码SE38或SE80来创建修改和删除,所有程序对象如有描述,需按功能或目的填写清楚。程序名参考本规范的命名规则。
1、程序组件:
初始界面包括一个对象组件的列表,包括:源代码(Source Code)、变量(Variants)、属性(Attributes)、文档(Documentation)、文本元素(Text Elements)。
2、程序属性:
程序属性窗口记录了程序相关的一些基本信息。首先应该输入是标题(Title),需输
入程序功能的描述性标题。属性由很多项组成,包括:
类型(Type):这个属性指明了程序类型,可以通过F4键来获取有效值,必须指定。
身份(Status):这个属性指明了程序是系统程序还是客户程序还是测试程序,可以通过
F4键来获取有效值,一般指定为‘K’。
应用(Application):这一属性确认了程序与SAP中的那个模块相关,可以通过F4键来
获取有效值,一般不指定。
权限组(Authorization Group):这是一个8字符字段,将程序与权限相关联,系统通过它
来检查用户是否具有执行该程序的权限,可以通过F4键来获取有效值,
非特殊需求,一般不指定。
开发类(Packages):开发类确定了传输层,即对象的传输属性。需严格按所属模块归属
到个模块的开发类别下,使得程序对象清晰便于管理和查找。
逻辑数据库(Logical database):这项标示了程序使用的逻辑数据库,可以通过F4键来
获取有效值,如在程序里使用逻辑数据库的话,必须指定。
选择屏幕(Selection screen):这个属性指明了逻辑数据库的选择屏幕号码,在指定逻辑
数据库后可以通过F4键来获取有效值,而且必须指定。
锁定编辑(Editor Lock):这是个可选字段,可以开启或关闭。通过单击该字段来设定其
值。当设置为开启时,只有将其设置为开启的用户才允许修改,直到该
字段重新设置为关闭为止。在锁定状态下,仍可被其他用户执行。一般
不启用。
定点运算(Fixed Point Arithmetic):这是个可选字段,可以开启或关闭。通过单击该字
段来设定其值。当设置为开启时启用定点运算。默认值为启用,必须启
用。
Unicode 检查(Unicode Check Active):这是个可选字段,可以开启或关闭。通过单
击该字段来设定其值。当设置为开启时启用Unicode 检查。默认值为启
用,必须启用。
变量启动(Start Using Variant):这是个可选字段,可以开启或关闭。通过单击该字段
来设定其值。当设置为开启时,只能通过变量来启动程序。
3、程序结构
为了便于将来的维护,ABAP中各种组件的位置或顺序是非常重要的。下面描述了ABAP程序中希望得到的所使用组件的顺序。不需要的部分可以删除。需特别强调的是程序的注释,ABAP程序源码中的注释是非常有用的,特别是准确明了的注释。足够的注释信息可以帮助帮助理解程序,以便程序的读与维护。在ABAP代码中使用注释行方法(在第一列放置*)。每个ABAP程序头部必须放置程序一般信息和修改记录,如下所示的注释块:
*&---------------------------------------------------------------------*
* 程序名 : ZFI_RPT_003
* 开发者 : I060565
* 事务代码 :
* 程序类型 : 报表
* 描述 : 货币资金余额表
* 修正 :
*&---------------------------------------------------------------------*
* 000 08/20/2014 I060565 EDVK932694 创建
* 版本 修改日期 修改人员 修改请求号 修改原因
*&---------------------------------------------------------------------*
REPORT zfi_rpt_003 NO STANDARD PAGE HEADING MESSAGE-ID zfi01.
INCLUDE zfi_rpt_003_top.
INCLUDE zfi_rpt_003_f01.
INCLUDE zfi_rpt_003_i01.
INCLUDE zfi_rpt_003_o01.
* Declaration
TABLES
TYPES
DATA(Variant)
DATA(Structure)
DATA(Internal table)
CONSTANTS
CLASS DEFINITION
CLASS IMPLEMENTATION
DEFINE~END-OF-DEFINITION
PARAMETERS
SELECT-OPTIONS
* Event
INITIALIZATION
AT SELECTION-SCREEN
AT USER-COMMAND
START-OF-SELECTION
GET
END-OF-SELECTION
TOP-OF-PAGE
END-OF-PAGE
4、消息
需要为每个SAP模块定义消息类,以支持用户定义验证消息。需要把这些消息和ABAP程序中使用的消息分开。
若是在程序中所用的消息,那么消息ID需要在程序的第一条语句中出现。
消息有5个安全等级:A为异常,E为出错,W为警告,I为信息,S为成功。安全等级A、E,和W会在消息发布时终止程序。安全等级I不会终止程序,但是会显示弹出窗口,并需要用户响应。
5、文本元素
文本元素对象组件包含3种不同的文本类型,它们是:
- 标题和报头
- 选中文本
- 编号文本
标题和报头包括3种不同类型的标题:
标题:在屏幕顶部显示
标题列表:在报告列表的报头首行显示
列标题:可定义报告的列标题
在程序中使用PARAMETERS或SELECT-OPTIONS时显示选中文本。可以在此处输入描述性文字,帮助用户理解应该要输入什么值。
编号文本是用3字符代码标示一段文字(如TEXT-001,TEXT-002等),然后就可以在程序中需要用到这些文字的地方直接使用这个代码来替代。
默认是在程序中使用中文文本。若程序会在多语言实例中运行,首选方法是将文本定义为编号文本,然后使用编号(即TEXT-001,TEXT-002等)。
6、菜单
使用标准/提议功能代码。
7、子程序和函数
功能组和功能模块的命名见命名规范,使用描述性的名字便于搜索。
如果一个FORM会被多个程序执行,那么这个FORM应该放在子程序中,而不是放在主程序中。这个子程序只允许包含FORM,而且每个FORM应该使用标准参数编码,确保能够正确执行。
8.使用Native SQL来执行SQL
要在ABAP程序中访问非DDIC数据时,需要使用EXEC SQL界面,它绕过了常规的ABAP处理。强烈不推荐使用EXEC SQL,即使在使用EXEC SQL时,也仅限于访问非DDIC表。
三、功能模块
功能模块 | 功能模块代码 |
财务资金组 | FI |
人力资源组 | HR |
销售组 | SD |
服务备件组 | SR |
集采装饰组 | GD |
二手车组 | UC |
资金 | TR |
财务资金组 | FI |
四、命名规范
遵从一致的命名规范,这一点是非常重要的。这样作的一个明显好处就是容易维护。命名规范帮助防止命名冲突,并提高了升级安装的成功率。
1、Package 开发类
<SAP 的规范:Z* 30 位>
ZAANN.
Z: 固定前缀
AA: 功能模块 SD/ MM/ FI/ HR
NN: 连续号01 - 99
ZFI01 :财务开发类
ZSD01 :销售开发类
ZHR01 :人力开发类