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 OBJECT 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_found.

ENDTRY.

DATA ls TYPE sflight.

READ itab INTO ls INDEX 2.  "不推荐的写法

IF sy-subrc <> 0.

ENDIF.

表达式的写法比关键字更加简洁、可读,推荐尽量使用表达式代替关键字,比如:

Open SQL语句抽取字段尽量竖排,方便查看

SELECT  carrid

connid

fldate

seatsocc

seatsmax

FROM    sflight

INTO TABLE sflight_tab

WHERE 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 的名称按

下表编写

程序类型

命名规则

Events(TOP-OF-PAGE 等)

ZXXXXE01

Subroutines(Form routines)

ZXXXXF01

PAI Modules

ZXXXXI01

Global Data

ZXXXXTOP

Input Help

ZXXXXH01

其中: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_<parameter name>

EXPORTING parameters EX_<parameter name>

CHANGING parameters CH_<parameter name>

返回参数 RE_<result>

变量定义顺序

************************************************************************

*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 OF T_AUFK,

AUFNR LIKE AUFK-AUFNR, "Order number

AUART LIKE AUFK-AUART, "Order type

LOEKZ LIKE AUFK-LOEKZ, "Deletion flag

OBJNR LIKE AUFK-OBJNR, "Object number

END 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

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

子屏幕编号范围:3000-4999

注释规则

任何全局变量要简单解释作用或使用地方

任何函数超过30 行的函数或form 必须在关键位置加注释,解释操作意图

消息提示使用规则

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

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

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

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

ABAP 的代码规范标准相关推荐

  1. ABAP的代码规范标准

    ABAP代码编写要求 1.单元格式 ************************************************************************ * Copyrig ...

  2. Java 阿里官方代码规范标准手册终极版下载

    由于我们 Andorid 也是使用 Java 来开发的,所以在大部分命名风格上也是遵从 Java 的命名规范,Java 统一规范标准有助于提高行业编码规范水平,提高我们的开发质量和效率,大大降低代码维 ...

  3. 阿里官方Java代码规范标准解析 - 基本数据类型与包装数据类型的使用标准

    关于基本数据类型与包装数据类型的使用标准 1) 所有的POJO类属性必须使用包装数据类型.  2) RPC方法的返回值和参数必须使用包装数据类型.  3) 所有的局部变量推荐使用基本数据类型. 说明: ...

  4. 阿里官方Java代码规范标准《阿里巴巴Java开发手册 终极版 v1.3.0》下载

    转载:https://www.cnblogs.com/han-1034683568/p/7680354.html

  5. php 代码规范 工具,PHP工具篇:PHPStorm IDE使用CodeSniffer代码规范化管理

    PHPStorm IDE使用CodeSniffer进行代码规范化管理 PHP_CodeSniffer是一个优秀的代码风格检测工具,定义了一系列的代码规范(通常使用官方的代码规范标准,比如PHP的PSR ...

  6. 射手科技公开课第一辑 『项目管理和代码规范』

    射手玩的东西越来越全面了,从当年的字幕下载站,到播放器,到射手科技,发展的思路值得借鉴和思考. 射手科技成立3个月以来,我们内部已经组织了不少培训.每次内部培训我们都留有录像和录音,以便后续参与项目的 ...

  7. SAP ABAP Netweaver服务器的标准登录方式讲解

    最近Jerry把这个公众号之前发布的总共230篇文章按照类别整理了一系列合集出来,比如所有的ABAP文章,放在了这个合集里:汪子熙的ABAP合集. 本文继续介绍ABAP里的一个知识点:ABAP Net ...

  8. Python 代码规范

    前言 Python 学习之旅,先来看看 Python 的代码规范,让自己先有个意识,而且在往后的学习中慢慢养成习惯 目录 Python代码规范 一.简明概述 1.编码 如无特殊情况, 文件一律使用 U ...

  9. Python代码规范和命名规范

    http://www.imooc.com/article/19184?block_id=tuijian_wz#child_5_1 Python代码规范和命名规范 前言 Python 学习之旅,先来看看 ...

最新文章

  1. element select 自动展开_原生js 让select下拉框自动展开 可用size 属性来代替展开动作...
  2. leetcode--下一个更大元素II--python
  3. 微信小程序----调用用户信息
  4. 在我方某前沿防守地域 matlab,蒙特卡洛方法模拟小例子
  5. quot;streambufquot; ambiguous symbol的问题如何解决
  6. kali 更新源_kali安装避坑
  7. 墨迹天气android,墨迹天气Android产品分析
  8. MiningZhiDaoQACorpus,580万百度知道问题,980万问答对数据挖掘项目
  9. 20 WBS要素xxxxxx有不同的存货估价
  10. 陕西机关事业单位工勤计算机考试成绩,2020年陕西省机关事业单位工人技术等级岗位考核公告发布 6月22日开始报名 9月中旬以后考核...
  11. [Ubuntu] 16.04 卸载旧内核并禁止内核更新
  12. vue 登录页面记住密码功能
  13. Win10安装MySQL5.7(图文详解)
  14. length()函数_奇怪的Haskell实验——length的实现是?
  15. 周立功USBCAN-2E-U的驱动安装及上位机安装
  16. 智慧农业:农业物联网实施方案
  17. 信息学奥赛一本通(C++版)在线评测系统 1157:哥德巴赫猜想
  18. Android 裁剪摄像头预览窗口-SurfaceView
  19. HTC6950新手基本操作方法
  20. 21年杭州云栖大会参会总结-安全相关内容

热门文章

  1. git的添加git add、更新git pull、删除git rm 、克隆git clone
  2. 阿里云磁盘挂载,挂载点提示异常:mount: /data: wrong fs type, bad option, bad superblock on /dev/vdb, missing codepag
  3. Windows 8 Beta 建行网银问题解决方案
  4. 信息教室服务器,探究电子教室服务器功能及硬件要求
  5. 苹果系统广讯通服务器,广讯通怎么设置服务器地址
  6. Squid代理(ACL过滤模块、日志分析、反向代理)!
  7. (一)算法基础——枚举
  8. Excel 表格中快速找到单元格相同的内容
  9. 用友、金蝶、神州数码ERP的优势、劣势?
  10. DV IP证书该怎么采购