ABAP开发规范
一、数据库操作
1.禁止修改系统标准表。
2.如果使用到FOR ALL ENTRIES IN语句取数,一定要校验关联内表非空性。
3.禁止一条SELECT关联的表超过5张,需要多表取值的时候建议分开取数。
4.查询条件和关联关系尽量使用主键或者索引项。
二、内表操作
1.LOOP取数,使用LOOP AT <internal table> into <work area> 模式。
2.禁止LOOP + SELECT SINGLE 语法,要求LOOP + READ TABLE BINARY SEARCH 语
法。二分法查找,表取数前需要按照查询KEY值进行排序。
3.禁止LOOP+SORT 语法,SORT语句须放在LOOP外。
4.禁止LOOP+DELETE <internal table> 语法,可采用表内增加删除标记字段,用LOOP +
READ TABLE BINARY SEARCH来更新删除标记,然后再DELETE 有删除标记的内容。
5.禁止LOOP+LOOP语法,统计汇总内容可以先COLLECT取数内容,然后再LOOP + READ
TABLE BINARY SEARCH语法来获取汇总内容。
6.使用loop + at end <Filed>/at new <Filed> 语法时注意,要根据包含<Filed>前所有的字段排
序。
三、对象定义
1、内表及工作区的创建,以参考结构的方式。
1 TYPES:BEGIN OF typ_log,
2 aufnr TYPE aufnr,
3 ztype TYPE bapi_mtype,
4 zmessage TYPE bapi_msg,
5 END OF typ_log.
6 DATA ls_log TYPE typ_log.
7 DATA it_log TYPE TABLE OF typ_log.
2、程序命名规则:
对象 |
命名规则 |
说明 |
表(Database table) |
Z[ac]_TAB_[Description] |
|
结构(Structure) |
Z[ac]_STR_[Description] |
|
视图(View) |
Z[ac]_V_[Description] |
|
数据元素(Data element) |
ZE_[Description] |
|
数据域(Domain) |
ZD_[Description] |
|
搜索帮助(Search help) |
ZH_[Description] |
|
锁(Lock object) |
EZ_[Description] |
|
类型组(Type group) |
ZY_[Description] |
|
表类型(Table Type) |
ZTT_[Description] |
|
开发类(Package) |
Z[ac] |
|
信息类(Message class) |
Z[ac]_MC_[Description] |
|
函数组(Function group) |
Z[ac]_[Description] |
|
函数(Function) |
Z[ac]_(FUN,BAPI)_[Description] |
优先调用标准的BAPI,反之用FUN |
SAPScript |
Z[ac]_SC_[Description] |
|
Smart Forms |
Z[ac]_SF_[Description] |
|
Smart Styles |
ZXFONT |
|
Area menu(区域菜单) |
Z[ac] |
|
报表(Report) |
Z[ac]R[Description] |
[Description]使用流水码 |
Include程序 |
Z[ac]_IN_[Description] |
|
Business Object |
Z[ac]_BO_[Description] |
|
Parameter ID |
Z[Description] |
|
BADI增强 |
Z[Description] |
|
CMOD增强 |
Z[ac][Description] |
|
Number Range |
Z[ac][Description] |
|
TCODE |
Z[ac][Description] |
[Description]使用流水编码 |
Webservers |
Z[ac]_WS_[Description] |
|
内表(internal table) |
IT_[Description] |
|
工作区(work area) |
WA_[Description]/LS_[Description] |
|
三、接口定义
1、接口程序命名规范
对象 |
命名规则 |
说明 |
表 |
Z[ac]_TAB_[Description] |
|
结构 |
Z[ac]_STR_[Description] |
|
函数组 |
Z[ac]_[Description] |
|
函数 |
Z[ac]_(FUN,BAPI)_[Description] |
参看5.3.1接口名称规范 |
程序 |
Z[ac]R[Description] |
[Description]使用流水码 |
TCODE |
Z[ac][Description] |
[Description]使用流水编码 |
Webservers |
Z[ac]_WS_[Description] |
|
2、输入输出参数命名规范
参数 |
命名规则 |
说明 |
输入 |
IP_[Description] |
|
输出 |
EP_[Description] |
特别的关于返回报错消息,统一定义:EP_TYP 返回消息类别(参考BAPI_MTYPE),EP_MSG 返回消息文本(参考BAPI_MSG) |
输入表 |
IT_[Description] |
|
输出表 |
ET_[Description] |
特别的关于返回错误消息,统一定义:ET_LOG 返回错误消息(参考BAPIRET2) |
3、闸口程序
1 DATA flag TYPE char1.
2 CALL FUNCTION \'Z_OPEN_INTERFACE\'
3 EXPORTING
4 im_name = \'*******\'”接口名称
5 IMPORTING
6 lv_flag = flag.
7
8 IF flag = \'N\'.
9 ep_typ = \'E\'.
10 ep_msg = \'请先打开接口控制闸口\'.
11 EXIT.
12 ELSEIF flag IS INITIAL.
13 ep_typ = \'E\'.
14 ep_msg = \'接口控制闸口未维护\'.
15 EXIT.
16 ELSEIF flag = \'Y\'.
17 *************”接口正文
18 ENDIF.