SAP实施项目文档开发ABAP开发规范v10文档格式.docx
《SAP实施项目文档开发ABAP开发规范v10文档格式.docx》由会员分享,可在线阅读,更多相关《SAP实施项目文档开发ABAP开发规范v10文档格式.docx(28页珍藏版)》请在冰豆网上搜索。
3.2.7NativeSQL11
3.3介绍11
3.4一般命名规则11
3.5ABAP程序12
3.5.1用户定制程序12
3.5.2ABAP语法12
3.5.3事件15
3.5.4文本信息16
3.5.5用户自定义的包含程序16
3.5.6本地对象16
3.5.7报表16
3.5.8事务代码17
3.5.9函数组及函数功能块17
3.5.10功能菜单17
3.5.11开发包18
3.5.12消息类18
3.5.13消息编码19
3.5.14消息的长文本19
3.5.15消息参数19
3.5.16消息类型代码19
1文档管理
1.1文档变更历史
日期
版本
变更人
变更备注
2编码原则
2.1程序编写过程
创建程序代码编写代码审核性能检查自行测试综合测试完成
●创建程序:
根据需要通过标准事务代码创建不同类型的程序、相应对象
●代码编写:
根据代码规范编写代码
●代码审核:
开发小组对开发的程序进行代码审核,要严格符合规范
●性能检查:
用标准的事务SLIN,SE30等对程序的运行效率进行检查
●自行测试:
开发人员用少量的测试数据对程序进行测试
●综合测试:
提交到业务功能组对程序进行全面的测试
2.2程序编写原则
自定义开发的函数及子过程等程序,必须考虑函数及子过程等程序的重用性,保证开发的程序不会与现有程序功能重复。
●代码用大写字母编写
●尽量使用SAP标准程序(例:
系统标准的函数及子过程等程序)
●自定义开发的函数及子过程等程序,必须考虑函数及子过程等程序的重用性,保证开发的程序不会与现有程序功能重复
●尽可能使用SAP提供的模块化技术,提高效率,增强可读性
●尽量不修改标准程序
3程序代码规发和说明
3.1整体框架
第一部分:
注释部分,按照如下格式写明程序的功能和逻辑
*&
------------------------------------------------------------------------------------------------------&
*
程序名称:
&
程序描述:
&
开发人员:
&
创建日期:
程序功能:
---------------更改记录 ---------------------------------------------&
日期更改人.传输请求号主要更改内容描述 &
第二部分:
程序头,在此写清楚程序的名称和相关参数、所用消息类
示例:
REPORTZFIR0001NOSTANDARDPAGEHEADING
LINE-SIZE192
LINE-COUNT58
MESSAGE-IDZ001.
第三部分:
变量、常量、内表等的定义。
示例:
---------------------------------------------------------------------*
数据定义
TABLES:
T001,VBAK,VBAP.
CONSTANTS:
CNS_XXX1(5)TYPECVALUE'
ABCDE'
.
DATA:
V_BUKRSLIKEBSEG-BUKRS.
第四部分:
程序主体包含所用可用的事件,如
初始化
INITIALIZATION.
----------------------------------------------------------------------*
程序执行
START-OF-SELECTION.
程序结束
END-OF-SELECTION.
3.2命名规则
所有ABAP开发程序要尽可能使用SAP提供的模块化技术,以简化代码,提高开发效率。
代码的模块化虽然可能使程序代码行数增加,但可以让程序的主逻辑清晰易读。
模块化的程序更易于维护。
SAP系统中主要的模块化技术:
∙SourceCodeModules(IncludePrograms)
∙Subroutines
∙Functionmodules
∙Dialogmodules
∙Classesandmethods
推荐使用Subroutines,FunctionModules和SourceCodeModules提高模块化,在创建新的FunctionModules之前,请务必确认系统中是否有可替代的函数可用。
3.2.1子程序
◆说明
子程序用于模块化和提高程序的可读性,主程序的各个事件中不应该出现代码逻辑,如IF,While等,而是应该包含一系列子程序的调用,而逻辑细节则应该在子程序中体现;
不要在子程序中使用”TABLES”语句定义表工作区,而是应该在程序的头部数据定义部分;
子程序的名称应尽可能简洁而且体现程序的主要功能,自程序要以FRM_开头。
如:
FRM_GET_DATA,子程序名称尽量避免使用PROCESS这个词,而应使用描述性更强的动词。
FORMFRM_READ_CUSTOMER_NAME.
…
ENDFORM.“FRM_READ_CUSTOMER_NAME
◆参数传递
●子程序参数命名规则
USING:
前缀‘P_’,‘P_XXX_TAB’
CHANGING:
前缀‘CH_’,‘CH_XXX_TAB’
●按引用传递
用USING或CHANGING指定子程序定义或调用时的参数,当按引用传递参数的时候,USING和CHANGING作用相同。
作为标准,我们要求用USING定义和调用子程序中不应被改变的变量,而用CHANGING定义在子程序中改变或输出的参数。
●按值传递
为了确保传入子程序的参数不会被改变,即使是在子程序中改变了,返回调用环境后参数值也将复原。
之中情况下必须使用”VALUE”关键字指定按值传递,并使用USING传递参数。
FORM….USING…VALUE(<
pa_date>
).
PERFORM…USING<
g_date>
.
●按值和结果传递参数
仅当子程序运行成功,才返回一个改变了的输出参数时,你必须按值和结果传递参数,这种情况下,必须使用CHANGING。
FORM…CHANGING…VALUE(<
)..
PERFORM…CHANGING….<
●局部变量
在子程序中使用局部变量,子程中用到的,在程序其他地方定义的变量通过参数的形式传递近来。
子程序中对全局变量的操作须谨慎,这样会降低子程序的可靠性,如果子程序中使用了全局变量,请考虑使用参数方式传递近来。
●创建子程序
创建子程序的时候,先创建PERFORM语句,然后双击创建子程序;
所有的子程序都必须按照这种方式创建,并且在定义的前面编写详细的注释,如果参数的名称清晰易懂,则不需要额外的说明;
子程序中仅允许使用局部变量和参数,包括不能调用使用了全局变量的字程序。
◆程序格式标准
程序格式是良好代码的一个重要方面,格式良好的程序更加易于维护。
●在合适的地方换行,保持可读性和格式良好
●在逻辑上相对独立的代码片断之间插入空行
●Event,Control,如Form,Module等声名或INCLUDE关键字放在新一行的开始,在此之前,须撰写注释
●每个语句行缩进2个字符位置
●基于可读性考虑,每个ABAP语句要放在新行。
避免如下形式的代码:
‘if(x=1).X=0.endif.’
●使用PRETTYPRINT自动格式化代码。
(但是第一次Release之后不允许使用)
●使用ABAPeditorpattern命令:
(Edit>
Pattern)创建CALLFUNCTION、SUBMIT或Methord调用
●使用模块化技术。
◆注释
一个好的程序应该在没有文档的情况下被他程序员理解,良好的注释可以帮助用户理解程序。
尽管在开发流程中我们规定了技术文档、功能文档的重要作用,但是考虑到有些因素、风险的不可控性,我们要求程序当中必须加入足够的注释。
足够的注释可以使程序达到‘self-documenting’的状态,即不需要参考其它文档。
Self-documentingCode包括业务说明、需求说明、技术说明、测试用例,测试用例可以保证程序的正确性和将来进行衰退测试。
在每个程序块(Form定义的开始、一段逻辑较复杂的代码、尤其是包含动态字段、内表的代码段)前都要插入注释,用于说明为什么这么写代码,并且说明为何此段代码是必须的。
注释的细节程度决定于代码的复杂性,相宜即可。
例:
声明数据时,在数据对象的后面添加inline注释。
TABLES:
EKKO,“Purchaseorderheader
EKPO.“Purchaseorderitem
所有的子程序定义处必须给出详细的说明。
较大的IF,LOOP,CASE和WHILE结构的开始和结尾需给出说明,以便找到对应的开始,结束处。
IFG_BELNRISINITIAL.“StartofNodocumentexists
….
Endif.“EndofNodocumentexists
注释要结合上下文和程序环境,尽可能使其他人明白程序的逻辑。
◆ABAP语句格式
●行宽与换行