《ABAP的代码规范标准.pdf》由会员分享,可在线阅读,更多相关《ABAP的代码规范标准.pdf(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、ABAP 的代码规范标准1.写与写 ABAP是种写不敏感的语。这然会引起个问题:使写还是写?SAP给出的ABAP编辑器为我们提供了4种选项:(全部)写(全部)写(关键字)写(关键字)写建议选择(关键字)写,让代码的其余部分保持写,这么做的好处如下:()阅读写字母组成的本阅读写字母组成的本要难。()程序的读者通常会对关键字极为熟悉(即使不熟悉,也有档可看),其他可能对写出的关键字不太可能熟悉。这两个理由使得,相关键字,我们更需要让代码的关键字保持良好的可读性。因此,关键字的写是种必然的选择。在此基础上,让关键字保持写,可以帮助我们区分关键字和关键字。当然,由于关键字亮的功能的存在,也可以不通过写
2、区别它们,所以(全部)写同样是种可的选项,部分SAP标准代码也是这样的风格。2.缩进 SE38的代码编辑器提供了动缩进的功能,别忘了点击“格式优化”(Pretty Printer),所有的代码会得到同样的缩进.然后再根据个喜好进微调。3.表达式vs关键字 ABAP是门包含有量关键字的语。SAP似乎意识到了关键字过多带来的不便,在尝试着在近期的更新中引更多表达式的写法。实例化对象 DATA(e_receiver) = NEW event_receiver( ).推荐的写法 DATA e_receiver TYPE REF TO event_receiver. 不推荐的写法 CREATE OBJE
3、CT e_receiver.*调法(可以看到,传统的写法居然要5.)val = object-method( parameter = a ) 建议的写法CALL METHOD object-method 不建议的写法 EXPORTING parameter = a RECIEVING return = val.*访问内表*访问内表SELECT * INTO TABLE DATA(itab) FROM sflight UP TO 10 ROWS ORDER BY carrid.TRY. DATA(ls) = itab 2 . 推荐的写法 CATCH cx_sy_itab_line_not_fou
4、nd.ENDTRY.DATA ls TYPE sflight.READ itab INTO ls INDEX 2. 不推荐的写法IF sy-subrc 0.ENDIF.表达式的写法关键字更加简洁、可读,推荐尽量使表达式代替关键字,如:Open SQL语句抽取字段尽量竖排,便查看SELECT carrid connid fldate seatsocc seatsmaxFROM sflightINTO TABLE sflight_tabWHERE seatsmax sflightseatsocc.4.命名规则 ABAP程序通常使系列前缀来为变量命名,如:LT_ = Local internal t
5、ableLS_ = Local structure(work area)LR_ = Local referenceGT_ = Global internal tableGS_ = Global structure(work_area)GR_ = Global reference 这样做是有好处的,通常的ABAP编辑器不具备动提类型的功能,合理前缀可以降低阅读代码的智负担;另,如上节所述,如果为变量取个和数据类型/数据库字段完全相同的名字,会在某些情况下产意外的混淆(当然这个naming convention各个项有所不同)。如:DATA s1 LIKE sflight.DATA s2 TYPE
6、 sflight.以上这段代码会声明两个相同的结构s1, s2DATA sflight TYPE i.DATA s1 LIKE sflight.DATA s2 TYPE sflight.如果声明过个名为sflight的i类型变量,则使like的语句会声明个i类型的s1,使type的语句会声明个有着sflight类型的结构s2.但是前缀的滥也会导致很多问题,合理的ABAP代码中应该尽量避免多余的变量名前缀。5.单长度 有种观点认为,单的代码长度不应超过72个字符。体上,对于ABAP代码,这么做没什么不好。如图,80个字符已经稍稍超出了编辑器核区域的边界(虽然远未达到编辑器持的最长度)。如果只是打
7、开单个编辑器窗的话,这种长度还可以接受,但如果要并排打开2个窗,部分代码也许会法直接显。此外,在SAP的代码较具中,过长的单内容是法直接展的: 这种情况下,需要点击具栏中的按钮换页,不利于阅读。如果能有意限制单代码的长度,就可以避免处于这种不利的情况。6.不定义带表头的内表 ABAP提供了关键字with header line来创建代表头的内表。 DATA: LT_SFLIGHT TYPE STANDARD TABLE OF SFLIGHT WITH HEADER LINE. 但是同个名字代表两样不同的东西本来就是很不好的事情,容易混淆、为了让代码有更好的可读性,最好放弃带表头的内表。7.主程
8、序表头注释Copyright 2018 Wiwi Dongguan * All Rights Reserved *-* Program Name : ZXXXXX * Project : WiwiSAP Implementation Project * Program Title: * Created by : DEVXX * Created on : 2019/06/18 * Version : 1.0 * Function Description: * *-* Data Table List: *如维护操作的表,数据计算来源等表*-* Refrence Table List: *如联络处描
9、叙,输帮助等到的表*-* Modification Log: * Date Programmer Correction Number DesingDoc Number * YYYY/MM/DD XXXXXXXX DEVK9nnnnnn *注意:版本修改信息中设计档版本有对应的档则必须填写。8.包含及程序命名规则 对于复杂的程序,可以将其编写为多个INCLUDE,不同作的代码放在不同的INCLUDE 中,各个INCLUDE 的名称按下表编写程序类型Events(TOPOFPAGE 等)Subroutines(Form routines)PAI ModulesGlobal DataInput He
10、lp命名规则ZXXXXE01ZXXXXF01ZXXXXI01ZXXXXTOPZXXXXH01其中:ZXXXX 为程序名。事件代码必须遵循编写顺序InitializationAt Selection-Screen OutPutAt Selection-ScreenSTART-OF-SelectionAt Select-Screen on XXXXAt Select-Screen on value request for XXXXXAt Select-Screen on help request for XXXXX共函数的格式* Function Name : XXXXX * Created by
11、 : DEVXX * Created on : 2018/12/18 * Function Description: * *-*参数说明 * *-* Modification Log: * Date Programmer Description * YYYY/MM/DD XXXXXXXX *函数的格式* Form Name : XXXXX * Created by : DEVXX * Created on : 2019/06/18 * Form Description: * *-*参数说明 * *-* Modification Log: * Date Programmer Descriptio
12、n * YYYY/MM/DD XXXXXXXX *9.变量命名规则Type Name:T_Internal tables (global): gt_Internal Tables (Local):it_作区(structure): wa_全局变量: g_局部变量: l_Ranges = r_Selection screen parameter: p_select-options : s_函数参数命名规则:IMPORTING parameters IM_EXPORTING parameters EX_CHANGING parameters CH_返回参数 RE_变量定义顺序*DATA DECLA
13、RATION *-* CONSTANTS *-*CONSTANTS:C_TOTAL(8) TYPE C VALUE WA_TOTAL.*-*TABLES *-*TABLES: AFKO, Order header data PP ordersAFPO, Order itemJEST, Object statusRESB, Reservation/Dependent RequirementsAUFK, Order master dataMAKT, Material DescriptionsTJ02T. System status texts*-* TYPES OR TYPE-POOLS *-*T
14、YPES: BEGIN OF T_AUFK,AUFNR LIKE AUFK-AUFNR, Order numberAUART LIKE AUFK-AUART, Order typeLOEKZ LIKE AUFK-LOEKZ, Deletion flagOBJNR LIKE AUFK-OBJNR, Object numberEND OF T_AUFK.*-* INTERNAL TABLES AND WORK AREAS *-*DATA: I_AUFK TYPE T_AUFK OCCURS 0,WA_AUFK TYPE T_AUFK.*-* GLOBAL VARIABLES *-*DATA: G_FLAG.10.屏幕编号规则选择屏幕编号范围:1000-1999录屏幕编号范围:1999屏幕编号范围:30004999注释规则任何全局变量要简单解释作或使地任何函数超过30 的函数或form 必须在关键位置加注释,解释操作意图消息提使规则消息请使ZDEV 的标准的消息本;如果标准消息本中没有的请找管理员增加,不得维护;注释的创建期和修改期必须认真填写为实际期Status 命名规则为:Menu+屏幕号,共的为Menu+Main