2022年SAP开发规范 .pdf
《2022年SAP开发规范 .pdf》由会员分享,可在线阅读,更多相关《2022年SAP开发规范 .pdf(19页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、ABAP 开发规范1/19 目录目录 . 1SAP开发规范 . 31说明 . 31.1内容说明 . 31.2规范目的 . 31.3使用说明 . 31.4使用对象 . 32一般规则 . 33代码管理 . 43.1程序标题 . 43.2子程序、模块标题 . 53.3编辑器设置 . 53.4代码格式 . 73.4.1使用规范化打印机 . 73.4.2查询SQL语句的写法 . 73.5变更记录管理 . 73.6代码注释 . 83.7子程序与函数模块 . 93.8其它注意事项 . 94数据库查询 . 94.1不要在 LOOP循环中使用SELECT语句 . 94.2取数的时候不能使用SELECTENDSE
2、LECT语句循环操作. 94.3尽量多使用内表 . 94.4SELECT 与 SELECT*比较 . 104.5外部检查 . 104.6SELECT SINGLE语句使用注意 . 104.7SELECT 语句中排序与 ABAP语句中排序比较 . 104.8SELECT DISTINCT语句使用 . 114.9批量更新数据库表 . 114.10FOR ALL ENTRIES 语句 . 114.11OPEN SQL与 NATIVE SQL比较 . 124.12表连接 . 125内表使用注意. 125.1内表定义 . 125.2内表使用 . 125.2.1修改内表中的字段值 . 12名师资料总结 -
3、 - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 19 页 - - - - - - - - - ABAP 开发规范2/19 5.2.2把一个内表附加到另一个内表后面 . 125.2.3删除内表中重复行 . 135.2.4根据条件删除内表中的行 . 135.2.5内表是否为空的判断 . 135.2.6读取内表行 . 135.2.7通过LOOP AT it_tab ASSIGNING 循环内表. 145.2.8通过平行光标来连接两个内表 . 145.2.9释放内表 . 156数据字典对象. 1
4、56.1建表规则 . 156.2创建数据元素 / 域的基本规则 . 166.3添加客户化字段到SAP表中 . 166.4索引维护 . 167文件处理 . 168SMART FORM. 179权限 . 1710其它注意事项. 1710.1消息类使用 . 1710.2子程序参数传递 . 1710.3局部变量与全局变量的使用比较. 1811代码检查 . 1912ABAP性能例子 . 19名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 19 页 - - - - - - - - -
5、 ABAP 开发规范3/19 SAP 开发规范1说明1.1 内容说明开发规范总的包含了以下三方面的内容SAP 开发规范,即本文档,主要内容为:说明开发中要注意的事项代码编写的规范开发中要遵循的规则性能有关的例子SAP 开发命名规范 ,主要为开发过程中涉及的命名规则涉及开发中的命名,统一命名规则,方便程序的沟通、阅读1.2 规范目的提高 SAP 项目中开发的效率、质量,实现标准化管理1.3 使用说明在客户有开发规范的情况下,请按照客户的开发规范进行开发如客户未有现成的开发规范,请按照公司的开发规范进行开发请确保在开发的时候遵循了以下规则,如模糊不清时, 请及时重新查阅。如有冲突的地方,请与项目上
6、的开发负责人进行确认1.4 使用对象任何在 SAP 系统进行开发的人员初学 ABAP 开发者2一般规则以下为开发过程必须遵守的一般规则,请遵守。请严格按照SAP 开发命名规范进行相关命名请遵循 SAP 项目管理流程来进行开发及开发管理在开发完成后,在开发系统中清除不需要的对象不可随便修改SAP 源代码,除非是客户化字段、用户出口等若确实需修改SAP 源代码,请与技术负责人确认,并进行严格记录、测试在程序中不要遗留下没有使用的变量,可以使用”Extended Program Check”进行检查当有文本输出时,通过维护文本符号来实现。使用文本符号方便翻译使用常数来代替固定数值或固定字符常数必须定
7、义为全局的。优点:可重复使用,只需修改一个地方请不要在代码中对组织架构(公司代码、工厂、采购组织等)的数据赋予固定值,组织架构的值可通过参数(Parameter) 、选择范围(Select-options) 、变式等方式来传值不要使用 TABLES 语句定义的数据结构,使用专门定义的工作区名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 19 页 - - - - - - - - - ABAP 开发规范4/19 TABLES 语句只用于Select-options 需要的时候
8、尽可能不要使用MOVE-CORRESPONDING语句,因为比较耗时在 SQL 语句执行完成后、内表操作语句执行完成、调用完函数等之后,检查返回码sy-subrc 的值,并做判断处理一般情况下为一个程序创建一个对应的请求,以防传输时混乱慎用 ABAP 中的宏,因为宏不易维护且不可调试所有的开发的程序必须分配对应的事务代码,从而可避免给用户分配SA38 或 SE38 的权限原则上一个程序的代码不能超过2000 行,超过2000 行请使用include program 确保可读性3代码管理在创建一般报表时,请拷贝报表模板程序,并在模板程序的基础上进行代码编写。模板程序主要包括了程序标题格式、事件关
9、键字等内容。方便程序编写并统一规范。3.1 程序标题每个程序标题必须包括了程序名称、程序名、开发日期、开发者、概要、变更记录(日期、变更者、传输请求号、修正内容)。请参考以下例子:例子*-* 程序名称:程序名称* 程序名: ZZZ*_* * 开发日期: 2012/MM/DD * 创建者:张三* 申请者:李四*-* *概要 : XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX * XXXXXXXXXXXXXXXXXXXXXXXX *-* *变更记录* 2012/ins-day By 张三 (Hand) DEVK90000 * Descriptio
10、n: * 1.初始开发* * 2012/ins-day By 张三 (Yahua) DEVK90010 * Description: * 1.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX * 2.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX * *-* REPORT ZZZ*_* NO STANDARD PAGE HEADING 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 19 页 - - - - - - - -
11、 - ABAP 开发规范5/19 LINE-SIZE 255 LINE-COUNT 65. 注意:请将可能详细的维护好程序标题。3.2 子程序、模块标题在子程序定义前面必须进行注释说明。说明内容包含:包括子程序名称、子程序功能描述、参数功能等。模块与子程序类似。子程序例子*-* * Form GET_COMPANY_CODE_DESCRIPTION * *-* * 通过传入的公司代码,得到公司代码描述* *-* * 传入参数: fu_bukrs 为公司代码*-* FORM get_company_code_description USING fu_bukrs CHANGING fu_butxt
12、. 模块例子*-* * MODULE SET_PFSTATUS OUTPUT * *-* * 设置屏幕 100 的 GUI 状态* *-* MODULE SET_PFSTATUS OUTPUT. 注意:请将可能详细的维护子程序、模块的标题信息。另:原则上一个FORM 的长度不能超过300 行,如果超过300 行,请尽量拆分为多个FORM ,确保程序的可读性。如:要从10 个表中取数,我们可以将其拆分为多个FORM ,其中取文本表的单独一个FORM ,当从某个表取字段过多( 或者取出即有部分处理逻辑) 时,我们甚至可以将其单独一个 FORM 。3.3 编辑器设置为了使原代码更易于解读,规定对编辑
13、器进行设置。设置路径为: SE38-实用程序 (U)- 设置 (E) 编辑器:设置使用新的编辑器、每行最长72 个字符长(注:抓图为ECC6.0 例子,其它版本请以实际为主)名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 19 页 - - - - - - - - - ABAP 开发规范6/19 “规范化打印机(pretty print ) ”设置:缩进、关键字大写名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - -
14、- 名师精心整理 - - - - - - - 第 6 页,共 19 页 - - - - - - - - - ABAP 开发规范7/19 3.4 代码格式3.4.1使用规范化打印机要求在代码编写完成后,点来格式化代码,使代码自动缩进、关键字大写等,在编写代码过程中使用该按钮,也有助于发现输入错误的语句。注意:如果规范化打印机不可用,则手工的调整代码,使代码结构化。3.4.2查询 SQL 语句的写法Open SQL 请按如下格式对齐,有助于阅读和查看SELECT field1 “ xxxfield2 “ xxxINTO TABLE it_mara FROM MARA WERE matnr =wa_
15、tab-matnr. SELECT,INTO,FROM等缩进两空格WHERE 缩进一空格字段 field1,field2 每个都进行换行, 并在字段名后注释其意义3.5 变更记录管理当程序传到生产机之后,开始进行变更管理。变更管理开始后,进行程序的修改时要注意以下:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 19 页 - - - - - - - - - ABAP 开发规范8/19 在程序的开始处的变更记录上记录以下内容日期修改者传输请求号修改内容及原因例子*-* *变
16、更记录* 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 修改结束例
17、子 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%左右。特殊的标记字段要在注释中说明其用法名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - -
18、 - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 19 页 - - - - - - - - - ABAP 开发规范9/19 根据项目语言使用情况选择用中文或英文进代码注释和文档说明在初次提交的代码中不要保留初注释掉的代码行在涉外的开发项目中,注释和说明要用英文3.7 子程序与函数模块程序中的代码要尽量实现模块化,即如果程序中多个地方将会用到相同的代码,那么将这些代码封装在子程序中,以便可以随时调用,同时也增加了程序的可读性和可维护性当相同的功能的代码可以被多个程序使用时,最好定义成函数模块避免调用外部程序中的子程序3.8 其它注意事项在每一个程序行中,最多
19、只有一个语句,避免一条程序行中包含多条语句的写法。4数据库查询在使用 SELECT 语句中,尽可能把握以下几个原则:尽可能的在Where 条件中包含多的索引字段作为条件Where 条件中的索引字段按表中的索引顺序排列尽可能的在Where 条件中包含多的条件,即使字段不是索引的4.1 不要在 Loop循环中使用 Select语句在循环中使用Select 语句将会频繁的访问表,尽量减少数据库访问的操作。以下语句是不建议的。LOOP AT it_tab INTO wa_tab. SELECT * FROM MARA INTO TABLE it_mara WERE matnr =wa_tab-matn
20、r. ENDLOOP. 4.2 取数的时候不能使用Select E ndselect语句循环操作例:错误正确SELECT * FROM dbtab MOVE-CORRESPONDING dbtab TO it_ab APPEND it_tab ENDSELECT.SELECT * FROM dbtab INTO TABLE itab. 注意:必须避免嵌套的Select,因为每条记录将连接一次数据库。4.3 尽量多使用内表为了提高程序的性能,通常先把数据库表中的数据取到内表中,在内表进行数据处理。减少重复访问相同数据表的情况。例:(错误 ) (正确 ) 名师资料总结 - - -精品资料欢迎下载
21、- - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 19 页 - - - - - - - - - ABAP 开发规范10/19 4.4 Select 与 Select*比较尽可能使用SELECT 来代替SELECT * ,减少数据传输量,当数据量大时, 前者速度会明显更快。例:不建议写法建议写法SELECT * FROM dbtab INTO TABLE it_tab WHERE . SELECT field1 field2 FROM dbtab INTO TABLE it_tab WHERE . 仅用于某种特殊情况
22、时,如表的字段数很少或数据记录不多当表中包含的大量字段时使用 Select 虽然会增加代码的工作量,但会减少内存的使用及网络的负担4.5 外部检查尽可能避免使用Select COUNT (*) 来确认表存在的记录数,因为该语句将会对表进行全扫描。4.6 Select single 语句使用注意当使用 Select Single 时,要求在where 条件语句中包含所有的关键字当不能确定所有关键字而能确定只有一条记录匹配时,可使用 Select . up to 1 rows来查询4.7 Select 语句中排序与 ABAP 语句中排序比较对数据排序有两种方式:一种为在数据库服务器中排序;一种为在
23、应用服务器中排序。不建议写法建议写法SELECT field1 field2 FROM dbtab INTO TABLE it_tab WHERE. ORDER BY field1. SELECT field1 field2 FROM dbtab INTO TABLE it_tab WHERE . SORT it_tab BY field1. 处理 A 处理 B 处理 C 处理 A 处理 B 处理 C 内表数据库数据库I/O 程序流名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10
24、 页,共 19 页 - - - - - - - - - ABAP 开发规范11/19 应用服务器排序更快4.8 Select distinct语句使用不建议写法建议写法SELECT DISTINCT field FROM dbtab INTO TABLE it_tab WHERE. SELECT field FROM dbtab INTO TABLE it_tab WHERE . SORT it_tab BY field1. DELETE ADJACENT DUPLICATES FROM it_tab COMPARING field. 需要在数据库服务器进行排序,且会影响整个系统性能如果没有合
25、适的索引使用 DISTINCT 语句时,数据库服务器经常不访问缓存.尽可能避免在SELECT 语句中使用GROUP BY, ORDER BY , DISTINCT 等功能。4.9 批量更新数据库表在更新数据库数据时,可以一条一条记录的更新,也可批量的更新多条记录。当更新记录数较多时,请采用批量更新的方式,有助于性能的提高。不建议写法建议写法LOOP AT it_tab INTO wa_tab. UPDATE dbtab SET field01 = wa_tab-field01 WHERE field2 = wa_tab-field2. ENDLOOP.LOOP AT it_tab INTO w
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年SAP开发规范 2022 SAP 开发 规范
限制150内