标准工具检查
|
SCI检查结果没有ERROR,Waring控制在每2000行代码不超过5个 |
SLIN检查结果没有ERROR,Waring控制在每2000行代码不超过5个 |
程序的格式
|
是否使用了ABAP编写模板? |
程序头部注释内容是否填写完整? |
程序变更记录是否完整,变更处是否有注释? |
关键查询语句和处理逻辑是否有注释? |
子程序是否都有注释,注释是否准确清晰? |
代码是否用Pretty Printer格式化? |
关键字是否都大写,其他小写? |
单行代码是否过长? |
命名规则与代码规范
|
程序名命名是否符合规范? |
对象属性设置是否完整和正确? |
全局变量、局部变量、内表、工作区命名是否符合规范? |
Form子程序和参数命名是否符合规范? |
数据字典对象命名是否符合规范? 包括透明表、结构、视图、索引、数据元素、域、搜索帮助、锁对象 |
事务名称命名是否符合规范? |
消息类命名是否符合规范? |
屏幕命名和Module命名是否符合规范? |
函数组命名是否符合规范? |
Function Module及其参数命名是否符合规范? |
Enhancement/User Exit项目命名是否符合规范? |
代码逻辑与语法
|
程序中不能使用“硬代码”? |
程序的连续代码是否过长,是否按逻辑划分子例程? |
一个程序中可重复使用的代码,是否用子程序封装?多个程序可重复使用的代码,是否用函数进行封装? |
函数中是否包含了异常处理机制? |
Symbol使用时必须确保之前的Assgin是成功的? |
乘法或加法结果是否会导致溢出、除法除数是否可能为0? |
是否存在未使用的程序分支或变量? |
BDC的使用是否是必须,能否有标准BAPI或函数代替? |
多个IF…ELSE语句是否用CASE语句代替? |
同时更新多个关联数据表时,是否能保证数据更新的一致性? |
READ语法是否使用二分法查找数据?Read之前是否按照关键字段排序? |
程序性能
|
在循环中使用Select语句是否考虑性能问题? |
尽可能的select具体字段而不是用select *取数 |
使用Inner Join抓取关联表中数据的时候,不能超过3张表的关联并且应该用小表关联大表 |
SELECT语句的Where条件中应避免使用NOT和<> |
WHERE语句中是否将限制结果集最少的条件放前面? |
尽可能避免使用Loop嵌套,无法避免的时候应该使用索引 |
使用FOR ALL ENTRIES in itab,那么内表必须进行检查确保它不为空 |
使用FOR ALL ENTRIES in itab,itab内表必须先排序再排重 |
使用CASE语句时,将最可能的值放在结构最顶端WHEN条件中 |
使用Select语句查询业务表,是否用ST05确认使用索引? |