1.大写与小写ABAP是一种大小写不敏感的语言。这自然会引起一个问题:使用大写还是小写?SAP给出的ABAP编辑器为我们提供了4种选项:

(全部)大写

(全部)小写

(关键字)大写

(关键字)小写

建议选择(关键字)大写,让代码的其余部分保持小写,这么做的好处如下:

(一)阅读大写字母组成的文本比阅读小写字母组成的文本要难。

(二)程序的读者通常会对关键字极为熟悉(即使不熟悉,也有文档可看),而其他人可能对写出的非关键字不太可能熟悉。这两个理由使得,相比关键字,我们更需要让代码的非关键字保持良好的可读性。因此,非关键字的小写是一种必然的选择。在此基础上,让关键字保持大写,可以帮助我们区分关键字和非关键字。当然,由于关键字高亮的功能的存在,也可以不通过大小写区别它们,所以(全部)小写同样是一种可行的选项,部分SAP标准代码也是这样的风格。

2.缩进SE38的代码编辑器提供了自动缩进的功能,别忘了点击“格式优化”(Pretty Printer),所有人的代码会得到同样的缩进...然后再根据个人喜好进行微调。

3.表达式vs关键字

ABAP是一门包含有大量关键字的语言。SAP似乎意识到了关键字过多带来的不便,在尝试着在近期的更新中引入更多表达式的写法。

"实例化对象

DATA(e_receiver) = NEW event_receiver( )."推荐的写法

DATA e_receiver TYPE REF TO event_receiver. "不推荐的写法

CREATE OBJECTe_receiver.*调用方法(可以看到,传统的写法居然要5行...)

val = object->method( parameter = a ) "建议的写法

CALL METHOD object->method "不建议的写法

EXPORTINGparameter=a

RECIEVING

return=val.*访问内表

SELECT * INTO TABLE @DATA(itab) FROMsflight

UPTO 10 ROWS ORDER BYcarrid.TRY.DATA(ls) = itab[ 2 ]. "推荐的写法

CATCHcx_sy_itab_line_not_found.ENDTRY.DATA ls TYPEsflight.READ itab INTO ls INDEX 2. "不推荐的写法

IF sy-subrc <> 0.ENDIF.

表达式的写法比关键字更加简洁、可读,推荐尽量使用表达式代替关键字,比如:Open SQL语句抽取字段尽量竖排,方便查看

SELECTcarrid

connid

fldate

seatsocc

seatsmaxFROMsflightINTO TABLEsflight_tabWHERE seatsmax < sflight~seatsocc.

4.命名规则

ABAP程序通常使用一系列前缀来为变量命名,比如:

LT_ = Local internal table

LS_ = Local structure(work area)

LR_ = Local reference

GT_ = Global internal table

GS_ = Global structure(work_area)

GR_ = Global reference

这样做是有好处的,一方面,通常的ABAP编辑器不具备自动提示类型的功能,合理前缀可以降低阅读代码的心智负担;另一方面,如上一节所述,如果为变量取一个和数据类型/数据库字段完全相同的名字,会在某些情况下产生意外的混淆(当然这个naming convention各个项目有所不同)。

比如:

DATA s1 LIKE sflight.

DATA s2 TYPE sflight.

"以上这段代码会声明两个相同的结构s1, s2

DATA sflight TYPE i.

DATA s1 LIKE sflight.

DATA s2 TYPE sflight.

"如果声明过一个名为sflight的i类型变量,则使用like的语句会声明一个i类型的s1,使用type的语句会声明一个有着sflight行类型的结构s2..

但是前缀的滥用也会导致很多问题,合理的ABAP代码中应该尽量避免多余的变量名前缀。

5.单行长度

有种观点认为,单行的代码长度不应超过72个字符。大体上,对于ABAP代码而言,这么做没什么不好。

如图,80个字符已经稍稍超出了编辑器核心区域的边界(虽然远未达到编辑器支持的最大长度)。如果只是打开单个编辑器窗口的话,这种长度还可以接受,但如果要并排打开2个窗口,一部分代码也许会无法直接显示。

此外,在SAP自身的代码比较工具中,过长的单行内容是无法直接展示的:

这种情况下,需要点击工具栏中的按钮换页,不利于阅读。如果能有意限制单行代码的长度,就可以避免处于这种不利的情况。

6.不定义带表头的内表

ABAP提供了关键字with header line用来创建代表头的内表。

DATA: LT_SFLIGHT TYPE STANDARD TABLE OF SFLIGHT WITH HEADER LINE.

但是用同一个名字代表两样不同的东西本来就是很不好的事情,容易混淆、为了让代码有更好的可读性,最好放弃带表头的内表。

7.主程序表头注释

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: **如联络处描叙,输入帮助等用到的表*----------------------------------------------------------------------**Modification Log: **************************************************************************Date Programmer Correction Number DesingDoc Number **YYYY/MM/DD XXXXXXXX DEVK9nnnnnn *************************************************************************

注意:版本修改信息中设计文档版本有对应的文档则必须填写。

8.包含及子程序命名规则

对于复杂的程序,可以将其编写为多个INCLUDE,不同作用的代码放在不同的INCLUDE 中,各个INCLUDE 的名称按下表编写

其中:ZXXXX 为程序名。事件代码必须遵循编写顺序

Initialization

At Selection-Screen OutPut

At Selection-Screen

START-OF-Selection

At Select-Screen on XXXX

At Select-Screen on value request for XXXXX

At Select-Screen on help request for XXXXX

共用函数的格式*************************************************************************Function Name : XXXXX **Created by : 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 Description **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 DECLARATION **************************************************************************----------------------------------------------------------------------**CONSTANTS **----------------------------------------------------------------------*

CONSTANTS:

C_TOTAL(8) TYPE C VALUE 'WA_TOTAL'.*----------------------------------------------------------------------**TABLES **----------------------------------------------------------------------*

TABLES: AFKO, "Order header data PP orders

AFPO, "Order item

JEST, "Object status

RESB, "Reservation/Dependent Requirements

AUFK, "Order master data

MAKT, "Material Descriptions

TJ02T. "System status texts*----------------------------------------------------------------------**TYPES OR TYPE-POOLS **----------------------------------------------------------------------*

TYPES: BEGIN OFT_AUFK,

AUFNRLIKE AUFK-AUFNR, "Order number

AUART LIKE AUFK-AUART, "Order type

LOEKZ LIKE AUFK-LOEKZ, "Deletion flag

OBJNR LIKE AUFK-OBJNR, "Object number

END OFT_AUFK.*----------------------------------------------------------------------**INTERNAL TABLES AND WORK AREAS **----------------------------------------------------------------------*

DATA: I_AUFK TYPE T_AUFK OCCURS 0,

WA_AUFKTYPET_AUFK.*----------------------------------------------------------------------**GLOBAL VARIABLES **----------------------------------------------------------------------*

DATA: G_FLAG.

10.屏幕编号规则

选择屏幕编号范围:1000-1999

录入屏幕编号范围:1-999

子屏幕编号范围:3000-4999

注释规则

任何全局变量要简单解释作用或使用地方任何函数超过30 行的函数或form 必须在关键位置加注释,解释操作意图

消息提示使用规则

消息请使用ZDEV 的标准的消息文本;

如果标准消息文本中没有的请找管理员增加,自己不得维护;

注释里的创建日期和修改日期必须认真填写为实际日期

Status 命名规则为:Menu+屏幕号,共用的为Menu+Main

abap 编号_ABAP——编码规范相关推荐

  1. 《阿里巴巴编码规范(JAVA)》学习认证考后感

    image.png <阿里巴巴 Java 开发手册>是阿里巴巴集团技术团队的集体智慧结晶和经验总结,经历了多次大规模一线实战的检验及不断完善,系统化地整理成册,回馈给广大开发者. 本手册的 ...

  2. 【浙大网新图灵通讯】无废话简单高效C#编码规范20100611

    无废话简单高效C#编码规范20100611   自己看自己的代码啥问题也没有,但是一个团队.N多个人.N多年的代码,就比较难维护.难阅读了,什么样的不好的习惯.错误漏洞能出来的就全出来了. 第1章   ...

  3. 最全面的C/C++编码规范总结

    2019独角兽企业重金招聘Python工程师标准>>> 对于不同的编程语言来说,具体的编码规范可以有很大的不同,但是其宗旨都是一致的,就是保证代码在高质量完成需求的同时具备良好的可读 ...

  4. 软件项目质量保证——编码规范

    目录 一 编码规范的作用 二 编码规范不是"物神" 三 编写编码规范的一些建议 四 编码规范参考 作为软件开发者,我们可以开发低等级的软件,但不能开发低质量的软件.所以,如何实施质 ...

  5. mysql schema命名规范_数据库设计 命名及编码规范

    http://blog.csdn.net/seusoftware/archive/2010/04/24/5524414.aspx 引用 一.综述 命名和编码过程中,定义有意义的名称,以易于理解.方便书 ...

  6. 团队项目开发编码规范

    团队项目开发"编码规范"之一:概述 "程序员.程序员"顾名思义就是来编程序的人员.他们和一般工作人员是一样的,都需要合作,可能为了一个大型项目程序会有十人以上或 ...

  7. .Net基础——程序集与CIL HttpClient封装方法 .Net Core 编码规范 C#中invoke和beginInvoke的使用 WebServeice 动态代理类...

    .Net基础--程序集与CIL 1. 程序集和CIL: 程序集是由.NET语言的编译器接受源代码文件产生的输出文件,通常分为 exe和dll两类,其中exe包含Main入口方法可以双击执行,dll则需 ...

  8. [转]PHP编码规范

    注:这是10年前的一篇PHP编码规范,最早发布于清华水木BBS,现在好像都找不到完整的版本了,但至今看起来仍是非常有参考意义.个人会根据经验做一些调整.文中对于命名一段的描述极大的曾启发了个人的编程体 ...

  9. [推荐]php编码规范

    原文:http://www.leadbbs.com/a/a.asp?B=212&ID=600021 推荐]php编码规范 Xinsoft,2003-10-30 22:31:00 1. 介绍 1 ...

最新文章

  1. 直播APP常用动画效果
  2. html5 canvas雨点打到窗玻璃动画
  3. ARM裸机篇---启动代码分析
  4. 再议《反驳 吕震宇的“小议数据库主键选取策略(原创)” 》
  5. Androi App缓存管理
  6. 信息学奥赛一本通(1233:接水问题)
  7. 判断一个变量是否是Array类型
  8. IDEA Maven 聚合项目(多模块)搭建--最精简
  9. Swing JTree用法总结
  10. python 虚拟环境 mac_Mac下安装Python虚拟环境Virtualenv
  11. Linux指令系统文件复制到U盘
  12. 一维离散余弦变换(DCT)及其反变换(IDCT)公式的一种推导
  13. 401832-00-4,Thalidomide-O-PEG4-Amine在EDC或HATU存在下与NHS酯基或羧酸反应的合成化合物
  14. Java Class
  15. java中的tomcatserverlet
  16. Arduino Uno 实验6——LM35温度传感器
  17. 阿里云计算重磅公布云原生裸金属方法:裸金属+容器,此方法解锁云计算的新方式
  18. 电脑微信的文件在哪里?单独导出某个人的微信聊天记录教程
  19. centos7-汉化vim帮助指令文档
  20. 服务器ups运行时间,图文告诉你关于UPS电源的一些基础知识

热门文章

  1. 【世界是自己的,与他人毫无关系】--杨绛
  2. linux高性能服务器编程第八章(高性能服务器程序框架)
  3. 【解决方案】如何实现AI自动识别高空抛物行为?
  4. 移动云计算的一些思考
  5. matasploit框架漏洞利用
  6. 带SN切换流程_SN异常释放率KPI优化指导书
  7. 超实用的多功能工具箱小程序源码+支持流量主
  8. DNS协议隧道之iodine
  9. sql server服务器怎么配置文件,配置 SSAS 以生成内存转储文件 - SQL Server | Microsoft Docs...
  10. 电脑键盘的详细键值表