目录目录 (1)SAP开发规范 (3)1说明 (3)1.1内容说明 (3)1.2规范目的 (3)1.3使用说明 (3)1.4使用对象 (3)2一般规则 (3)3代码管理 (4)3.1程序标题 (4)3.2子程序、模块标题 (5)3.3编辑器设置 (5)3.4代码格式 (7)3.4.1使用规范化打印机 (7)3.4.2查询SQL语句的写法 (7)3.5变更记录管理 (7)3.6代码注释 (8)3.7子程序与函数模块 (9)3.8其它注意事项 (9)4数据库查询 (9)4.1不要在L OOP循环中使用S ELECT语句 (9)4.2取数的时候不能使用S ELECT......E NDSELECT语句循环操作 (9)4.3尽量多使用内表 (9)4.4S ELECT <FIELD>与S ELECT*比较 (10)4.5外部检查 (10)4.6S ELECT SINGLE语句使用注意 (10)4.7S ELECT 语句中排序与ABAP语句中排序比较 (10)4.8S ELECT DISTINCT语句使用 (11)4.9批量更新数据库表 (11)4.10F OR A LL E NTRIES 语句 (11)4.11O PEN SQL与N ATIVE SQL比较 (12)4.12表连接 (12)5内表使用注意 (12)5.1内表定义 (12)5.2内表使用 (12)5.2.1修改内表中的字段值 (12)5.2.2把一个内表附加到另一个内表后面 (12)5.2.3删除内表中重复行 (13)5.2.4根据条件删除内表中的行 (13)5.2.5内表是否为空的判断 (13)5.2.6读取内表行 (13)5.2.7通过LOOP AT it_tab ASSIGNING <fs>循环内表 (14)5.2.8通过平行光标来连接两个内表 (14)5.2.9释放内表 (15)6数据字典对象 (15)6.1建表规则 (15)6.2创建数据元素/域的基本规则 (15)6.3添加客户化字段到SAP表中 (16)6.4索引维护 (16)7文件处理 (16)8SMART FORM (17)9权限 (17)10其它注意事项 (17)10.1消息类使用 (17)10.2子程序参数传递 (17)10.3局部变量与全局变量的使用比较 (18)11代码检查 (19)12ABAP性能例子 (19)SAP开发规范1说明1.1内容说明开发规范总的包含了以下三方面的内容《SAP开发规范》,即本文档,主要内容为:说明开发中要注意的事项代码编写的规范开发中要遵循的规则性能有关的例子《SAP开发命名规范》,主要为开发过程中涉及的命名规则涉及开发中的命名,统一命名规则,方便程序的沟通、阅读1.2规范目的提高SAP项目中开发的效率、质量,实现标准化管理1.3使用说明在客户有开发规范的情况下,请按照客户的开发规范进行开发如客户未有现成的开发规范,请按照公司的开发规范进行开发请确保在开发的时候遵循了以下规则,如模糊不清时,请及时重新查阅。
如有冲突的地方,请与项目上的开发负责人进行确认1.4使用对象任何在SAP系统进行开发的人员初学ABAP开发者2一般规则以下为开发过程必须遵守的一般规则,请遵守。
请严格按照《SAP开发命名规范》进行相关命名请遵循《SAP项目管理流程》来进行开发及开发管理在开发完成后,在开发系统中清除不需要的对象不可随便修改SAP源代码,除非是客户化字段、用户出口等若确实需修改SAP源代码,请与技术负责人确认,并进行严格记录、测试在程序中不要遗留下没有使用的变量,可以使用”Extended Program Check”进行检查当有文本输出时,通过维护文本符号来实现。
使用文本符号方便翻译使用常数来代替固定数值或固定字符常数必须定义为全局的。
优点:可重复使用,只需修改一个地方请不要在代码中对组织架构(公司代码、工厂、采购组织等)的数据赋予固定值,组织架构的值可通过参数(Parameter)、选择范围(Select-options)、变式等方式来传值不要使用TABLES语句定义的数据结构,使用专门定义的工作区TABLES语句只用于Select-options需要的时候尽可能不要使用MOVE-CORRESPONDING语句,因为比较耗时在SQL语句执行完成后、内表操作语句执行完成、调用完函数等之后,检查返回码sy-subrc的值,并做判断处理一般情况下为一个程序创建一个对应的请求,以防传输时混乱慎用ABAP中的宏,因为宏不易维护且不可调试所有的开发的程序必须分配对应的事务代码,从而可避免给用户分配SA38或SE38的权限原则上一个程序的代码不能超过2000行,超过2000行请使用include program确保可读性3代码管理在创建一般报表时,请拷贝报表模板程序,并在模板程序的基础上进行代码编写。
模板程序主要包括了程序标题格式、事件关键字等内容。
方便程序编写并统一规范。
3.1程序标题每个程序标题必须包括了程序名称、程序名、开发日期、开发者、概要、变更记录(日期、例子*----------------------------------------------------------------------** 程序名称:程序名称* 程序名: ZZZ*_** 开发日期:2012/MM/DD* 创建者:张三* 申请者:李四*----------------------------------------------------------------------**概要: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX* XXXXXXXXXXXXXXXXXXXXXXXX*----------------------------------------------------------------------**变更记录* 2012/ins-day By 张三(Hand) DEVK90000* Description:* 1.初始开发** 2012/ins-day By 张三(Yahua) DEVK90010* Description:* 1.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX* 2.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX**----------------------------------------------------------------------*REPORT ZZZ*_*NO STANDARD PAGE HEADINGLINE-SIZE 2553.2子程序、模块标题在子程序定义前面必须进行注释说明。
说明内容包含:包括子程序名称、子程序功能描述、参数功能等。
模块与子程序类似。
注意:请将可能详细的维护子程序、模块的标题信息。
另:原则上一个FORM的长度不能超过300行,如果超过300行,请尽量拆分为多个FORM,确保程序的可读性。
如:要从10个表中取数,我们可以将其拆分为多个FORM,其中取文本表的单独一个FORM,当从某个表取字段过多(或者取出即有部分处理逻辑)时,我们甚至可以将其单独一个FORM。
3.3编辑器设置为了使原代码更易于解读,规定对编辑器进行设置。
设置路径为:SE38->实用程序(U)->设置(E)编辑器:设置使用新的编辑器、每行最长72个字符长(注:抓图为ECC6.0例子,其它版本请以实际为主)“规范化打印机(pretty print)”设置:缩进、关键字大写3.4代码格式3.4.1使用规范化打印机要求在代码编写完成后,点来格式化代码,使代码自动缩进、关键字大写等,在编写代码过程中使用该按钮,也有助于发现输入错误的语句。
注意:如果规范化打印机不可用,则手工的调整代码,使代码结构化。
3.4.2查询SQL语句的写法Open SQL请按如下格式对齐,有助于阅读和查看SELECT field1 “xxxfield2 “xxx INTO TABLE it_mara FROM MARAWERE matnr =wa_tab-matnr.SELECT,INTO,FROM等缩进两空格WHERE缩进一空格字段field1,field2每个都进行换行,并在字段名后注释其意义3.5变更记录管理当程序传到生产机之后,开始进行变更管理。
变更管理开始后,进行程序的修改时要注意以下:在程序的开始处的变更记录上记录以下内容日期修改者传输请求号修改内容及原因例子*----------------------------------------------------------------------**变更记录* 2012/ins-day By 张三(Hand) DEVK90000* Description:* 1.初始开发** 2012/ins-day By 张三(Yahua) DEVK90010* Description:* 1.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX* 2.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX**----------------------------------------------------------------------*在修改的程序代码处,要通过类似如下注释包括起修改的内容****2012/01/08 张三规格变更 Chg 修改开始* 修改原因:*****2012/01/08 张三规格变更 Chg 修改结束例子1****2012/01/08 张三规格变更 Ins 修改开始* 修改原因:*****2012/01/08 张三规格变更 Ins 修改结束例子2****2012/01/08 张三规格变更 Del 修改开始* 修改原因:*****2012/01/08 张三规格变更 Del 修改结束修改标识意义Ins新增Chg修改Del删除注意:在删除代码时,只是注释,不要实际物理的删除代码。
3.6代码注释数据声明和程序的逻辑部分必须要有注释,逻辑部分的注释尽量控制在整个程序代码的10%~20%左右。
特殊的标记字段要在注释中说明其用法根据项目语言使用情况选择用中文或英文进代码注释和文档说明在初次提交的代码中不要保留初注释掉的代码行在涉外的开发项目中,注释和说明要用英文3.7子程序与函数模块程序中的代码要尽量实现模块化,即如果程序中多个地方将会用到相同的代码,那么将这些代码封装在子程序中,以便可以随时调用,同时也增加了程序的可读性和可维护性当相同的功能的代码可以被多个程序使用时,最好定义成函数模块避免调用外部程序中的子程序3.8其它注意事项在每一个程序行中,最多只有一个语句,避免一条程序行中包含多条语句的写法。