1、3.2.7 Native SQL 113.3 介绍 113.4 一般命名规则 113.5 ABAP程序 123.5.1 用户定制程序 123.5.2 ABAP语法 123.5.3 事件 153.5.4 文本信息 163.5.5 用户自定义的包含程序 163.5.6 本地对象 163.5.7 报表 163.5.8 事务代码 173.5.9 函数组及函数功能块 173.5.10 功能菜单 173.5.11 开发包 183.5.12 消息类 183.5.13 消息编码 193.5.14 消息的长文本 193.5.15 消息参数 193.5.16 消息类型代码 191 文档管理1.1 文档变更历史日期
2、版本变更人变更备注2 编码原则 2.1 程序编写过程创建程序 代码编写代码审核性能检查自行测试综合测试完成 创建程序:根据需要通过标准事务代码创建不同类型的程序、相应对象 代码编写:根据代码规范编写代码 代码审核:开发小组对开发的程序进行代码审核,要严格符合规范 性能检查:用标准的事务SLIN,SE30等对程序的运行效率进行检查 自行测试:开发人员用少量的测试数据对程序进行测试 综合测试:提交到业务功能组对程序进行全面的测试2.2 程序编写原则自定义开发的函数及子过程等程序,必须考虑函数及子过程等程序的重用性,保证开发的程序不会与现有程序功能重复。 代码用大写字母编写 尽量使用SAP标准程序(
3、例:系统标准的函数及子过程等程序) 自定义开发的函数及子过程等程序,必须考虑函数及子过程等程序的重用性,保证开发的程序不会与现有程序功能重复 尽可能使用SAP提供的模块化技术,提高效率,增强可读性 尽量不修改标准程序3 程序代码规发和说明3.1 整体框架 第一部分:注释部分,按照如下格式写明程序的功能和逻辑*&-&* 程序名称: & 程序描述: & 开发人员: & 创建日期: 程序功能:- 更改记录 - - & 日期 更改人. 传输请求号 主要更改内容描述 & 第二部分:程序头,在此写清楚程序的名称和相关参数、所用消息类示例:REPORT ZFIR0001 NO STANDARD PAGE H
4、EADINGLINE-SIZE 192 LINE-COUNT 58MESSAGE-ID Z001. 第三部分:变量、常量、内表等的定义。 示例:-* 数据定义 TABLES: T001, VBAK, VBAP. CONSTANTS: CNS_XXX1(5) TYPE C VALUE ABCDE. DATA: V_BUKRS LIKE BSEG-BUKRS. 第四部分:程序主体包含所用可用的事件,如 初始化 INITIALIZATION.-* 程序执行 START-OF-SELECTION. 程序结束 END-OF-SELECTION.3.2 命名规则所有ABAP开发程序要尽可能使用SAP提供的
5、模块化技术,以简化代码,提高开发效率。代码的模块化虽然可能使程序代码行数增加,但可以让程序的主逻辑清晰易读。模块化的程序更易于维护。SAP系统中主要的模块化技术: Source Code Modules (Include Programs) Subroutines Function modules Dialog modules Classes and methods推荐使用Subroutines, Function Modules和Source Code Modules提高模块化,在创建新的Function Modules之前,请务必确认系统中是否有可替代的函数可用。3.2.1 子程序 说明子
6、程序用于模块化和提高程序的可读性,主程序的各个事件中不应该出现代码逻辑,如IF, While等,而是应该包含一系列子程序的调用,而逻辑细节则应该在子程序中体现;不要在子程序中使用”TABLES”语句定义表工作区,而是应该在程序的头部数据定义部分;子程序的名称应尽可能简洁而且体现程序的主要功能,自程序要以FRM_开头。如: FRM_GET_DATA,子程序名称尽量避免使用PROCESS这个词,而应使用描述性更强的动词。FORM FRM_READ_CUSTOMER_NAME. ENDFORM. “ FRM_READ_CUSTOMER_NAME 参数传递 子程序参数命名规则USING: 前缀 P_,
7、P_XXX_TABCHANGING: 前缀 CH_,CH_XXX_TAB 按引用传递用USING或CHANGING指定子程序定义或调用时的参数,当按引用传递参数的时候,USING 和CHANGING作用相同。作为标准,我们要求用USING定义和调用子程序中不应被改变的变量,而用CHANGING定义在子程序中改变或输出的参数。 按值传递为了确保传入子程序的参数不会被改变,即使是在子程序中改变了,返回调用环境后参数值也将复原。之中情况下必须使用”VALUE”关键字指定按值传递,并使用USING传递参数。FORM . USING VALUE().PERFORM USING . 按值和结果传递参数仅当
8、子程序运行成功,才返回一个改变了的输出参数时,你必须按值和结果传递参数,这种情况下,必须使用CHANGING。FORM CHANGING VALUE() .PERFORM CHANGING . Pattern)创建CALL FUNCTION、 SUBMIT或Methord调用 使用模块化技术。 注释一个好的程序应该在没有文档的情况下被他程序员理解,良好的注释可以帮助用户理解程序。尽管在开发流程中我们规定了技术文档、功能文档的重要作用,但是考虑到有些因素、风险的不可控性,我们要求程序当中必须加入足够的注释。足够的注释可以使程序达到self-documenting的状态,即不需要参考其它文档。Se
9、lf-documenting Code包括业务说明、需求说明、技术说明、测试用例,测试用例可以保证程序的正确性和将来进行衰退测试。在每个程序块(Form定义的开始、一段逻辑较复杂的代码、尤其是包含动态字段、内表的代码段)前都要插入注释,用于说明为什么这么写代码,并且说明为何此段代码是必须的。注释的细节程度决定于代码的复杂性,相宜即可。例: 声明数据时,在数据对象的后面添加inline注释。TABLES: EKKO, “ Purchase order header EKPO. “ Purchase order item所有的子程序定义处必须给出详细的说明。较大的IF, LOOP, CASE和WHILE 结构的开始和结尾需给出说明,以便找到对应的开始,结束处。IF G_BELNR IS INITIAL. “Start of No document exists.Endif. “End of No document exists注释要结合上下文和程序环境,尽可能使其他人明白程序的逻辑。 ABAP语句格式 行宽与换行
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1