SAP 阿巴普开发风格指南

阿巴普开发风格指南

这些旨在作为在业务场景中使用SAP 阿巴普进行编程的指南和说明。与标准相反,样式指南旨在指导程序员,而不是规定使用编程语言的唯一方法。在某些情况下,开发专业人员可能需要偏离这些准则,而该决定留给开发人员。

 

指南使用

进阶解决方案使用此样式指南来指导我们的开发,而ABAP则比其他任何语言都具有可读性,这使得分析人员和/或高级用户可以使用它。通过改善我们使用该语言的风格和方式,我们希望不仅使我们自己的开发团队,而且使未来的开发人员能够更轻松地更新我们的代码,并希望使分析人员更轻松地检查我们的代码并验证或理解该代码,变得更加容易。我们用来解决特定问题的方法。对于非高级解决方案客户,我们希望您觉得样式指南很有用,并总是很高兴获得社区的反馈,以扩大或改进样式指南的范围。样式指南非常棘手,开发人员是有见地的创意专业人员,因此请按照我们的参考方法进行处理,以作为其他人如何处理特定对象样式的参考。请享用!

一般命名约定

下列命名转换适用于整个准则,除非另有说明,否则应成为命名任何对象的一般规则。

  • 创建明显的名称。如果您无法大声朗读某人的名字,’这不是一个好人。 GLacct不会很明显,而glAccount会更好。除非广泛了解其含义,否则应避免使用首字母缩写词。 (考虑命名的一种好方法是,我们正在写给别人,然后是我们自己去审查。)
  • 使用大写字母或下划线表示新单词。在上面的示例中,我们使用glAccount。大写字母使读者清楚这些单词是单独的单词,比glaccount更具可读性。另一种选择是gl_account。注意:ABAP类构建器将所有属性强制为大写,因此使用起来很有意义“_”至少在使用ABAP语言时,不要使用大写字母来分隔单词。
  • 尽可能避免使用数字。我们不’希望有人误解O(零)。

SAP 阿巴普开发风格指南和标准

配套

(在4.6之前称为开发类 版本。)

通用规则

软件包是旧版本中开发类的后继者。它们更接近于UML软件包。包是用于收集所有开发类型并按用途分类的容器。软件包应描述项目中的功能。 SAP本身施加了一些限制,如下所示:
  • SAP标准对象使用以A-S或U-X开头的程序包名称。客户对象不能添加到这些包中。
  • 定制开发的永久对象使用以Y或Z开头的程序包名称。
  • 与其他存储库对象一样,如果在R / 3系统中安装了相关的名称空间,则包可以属于前缀名称空间。软件包以用斜杠(/)括起来的名称空间前缀开头。在这种类型的包中,您只能创建属于相同前缀名称空间的对象。
  • 程序包名称最多可以包含30个字符。
注意:包可以嵌套,因此可以进行大量分类。

建议的命名标准

 

包裹名字  

<Prefix><Application Area><Separator><Description>

 

 

词汇表

 

字首 Z,Y或名称空间

普通的客户开发对象应以Z为前缀。Y仅在对象位于本地且不会运输时才使用。当涉及名称空间时,它将用作前缀,即“/Prefix/FIDEV”.

应用领域 FI,PP.MM等

功能应用领域。注意:通常使用SAP’的应用领域,但其他领域也一样。

分隔器  “_” use an underscore
描述 描述 of package data / Project

例子

用于制定财务计划的定制软件包:
ZFI_ARIMP
用于本地开发的软件包将不被传输:(注意:我们不建议使用Y前缀。很少需要本地对象。)
YFI_ARIMP
在Acme公司的自定义名称空间中开发的软件包:
/ ACME / FI_ARIMP
注意:使用自定义名称空间时,不再需要Z或Y前缀。

阿巴普程序-非OOP

通用规则

识别处理块很重要,因此在修改程序时,可以将处理块纳入上下文。

#”’AT-SELECTION-SCREEN”’
#”’START-OF-SELECTION”’
#”’END-OF-SELECTION”’
#”’AT LINE-SELECTION”’

领先的实践是在代码中明确标识这些块,以简化维护,可读性和故障排除。

*————————————————————————
程序加载。“程序加载时调用一次
*————————————————————————

注释应支持ABAP编码。

通常,可以从功能规格文档中提取注释。他们还为分析代码的分析师提供了查看支持规范的功能的机会。

应注意确保评论不要过多。因此,注释不应长于其说明的代码。

=交易代码=
SAP中的交易代码用于快速访问交易。通常,事务代码比它们正在调用的程序短,尽管这不是规则。交易代码还提供了一种验证特定应用程序的用户授权的方法。

出于OO目的,事务代码启动对MAIN类和方法的调用。

交易代码应遵循与程序类似的准则。

建议的命名标准

阿巴普程序

 

词汇表

 

我正在写一份报告以审查材料ATP。尽管该程序可能名为ZSD_MaterialATP,但我使用上述指南来使用ZSDMATATP的事务代码,该代码更容易在命令框中键入。

全球课程

自定义类的命名约定。

通用规则

 

建议的命名标准

班级名称 <Prefix><Class 字首><Separator><Class Name>

 

词汇表

字首 Z,Y或名称空间。普通的客户开发对象应以Z为前缀。Y仅在对象位于本地且不会运输时才使用。当涉及名称空间时,它将用作前缀,即“/Prefix/FIDEV”.
Class 字首 FI,PP.MM等

功能应用领域。注意:通常使用SAP’的应用领域,但其他领域也一样。

分隔器  “_” use an underscore
班级名称 使用专有名词,例如COMPANY_CODE GENERAL LEDGER_ACCOUNT等。

 

例子

类应以其表示的对象命名。例如,使用上述命名约定来维护供应商的主数据类可以是ZCL_Vendor。定义客户的类可以是ZCL_CUSTOMER。可以有任何类型的变体。

 

 

 

持久类

通用规则

建议的命名标准

持久性类利用持久性服务并提供数据库表的抽象层。因为它们与标准类不同,所以一种领先的做法是以不同的方式标识它们,因此我们建议使用单独的命名准则。

 

词汇表

 

例子

一个用于管理对ZTAB表的持久性的类将命名为ZCL_PERS_ZTAB。

类属性

通用规则

与常规程序中的变量相似的类属性是对可以存储数据的存储位置的引用。实例化时,类的属性是为实例保留的内存块。

 

建议的命名标准

由于它们与实例隔离,因此属性在命名方面提供了更多灵活性,因此命名应描述属性。属性应使用以下命名约定。

属性名称 <Descriptive name>

 

词汇表

<Descriptive Name> 描述性属性名称,用于标识要捕获的值,请注意Pascal大小写。当使用多个作品时,首字母大写。

 

例子

国家/地区代码的属性可以是CountryCode。
标识文档是否已打印的布尔类型的属性可以是HasPrinted。
总分类帐帐户的属性可以是generalLedgerAccount。注意:我们不使用首字母缩写词GLaccount(尽管可以),因为它的描述性较低,全名非常清楚。
请记住,名称的长度不会影响性能。它仅对代码清晰重要,因此请根据需要使用尽可能多的字符。

在类的方法中引用属性时,请注意有关自引用的信息。使用我->引用属性不是必需的 阿巴普 本身,但通常是强调局部变量与可能已经可用的类属性之间区别的最佳实践。

面向对象的类开发

全球课程

自定义类的命名约定。

通用规则

 

建议的命名标准

班级名称 <Prefix><Class 字首><Separator><Class Name>

 

词汇表

字首 Z,Y或名称空间。普通的客户开发对象应以Z为前缀。Y仅在对象位于本地且不会运输时才使用。当涉及名称空间时,它将用作前缀,即“/Prefix/FIDEV”.
Class 字首 FI,PP.MM等

功能应用领域。注意:通常使用SAP’的应用领域,但其他领域也一样。

分隔器  “_” use an underscore
班级名称 使用专有名词,例如COMPANY_CODE GENERAL LEDGER_ACCOUNT等。

 

例子

类应以其表示的对象命名。例如,使用上述命名约定来维护供应商的主数据类可以是ZCL_Vendor。定义客户的类可以是ZCL_CUSTOMER。可以有任何类型的变体。

方法

通用规则

 

建议的命名标准

方法名称

 

词汇表

方法名称 方法名称。使用清晰的动词来描述该方法的功能,即PRINT。

 

例子

方法参数

通用规则

 

建议的命名标准

方法参数 <Type>_<参数说明>

 

词汇表

方法名称 参数类型。 E =导出,I =导入,依此类推。
<Parameter 描述> 传递的参数的描述性名称。

 

例子

一般分类帐帐户类具有为构造方法标识的服务器参数。他们是:

I_generalLedgerAccount
I_companyCode

类属性

通用规则

与常规程序中的变量相似的类属性是对可以存储数据的存储位置的引用。实例化时,类的属性是为实例保留的内存块。

 

建议的命名标准

由于它们与实例隔离,因此属性在命名方面提供了更多灵活性,因此命名应描述属性。属性应使用以下命名约定。

属性名称 <Descriptive name>

 

词汇表

<Descriptive Name> 描述性属性名称,用于标识要捕获的值,请注意Pascal大小写。当使用多个作品时,首字母大写。

 

例子

国家/地区代码的属性可以是CountryCode。
标识文档是否已打印的布尔类型的属性可以是HasPrinted。
总分类帐帐户的属性可以是generalLedgerAccount。注意:我们不使用首字母缩写词GLaccount(尽管可以),因为它的描述性较低,全名非常清楚。
请记住,名称的长度不会影响性能。它仅对代码清晰重要,因此请根据需要使用尽可能多的字符。

在类的方法中引用属性时,请注意有关自引用的信息。使用我->引用属性不是必需的 阿巴普 本身,但通常是强调局部变量与可能已经可用的类属性之间区别的最佳实践。

持久类

通用规则

建议的命名标准

持久性类利用持久性服务并提供数据库表的抽象层。因为它们与标准类不同,所以一种领先的做法是以不同的方式标识它们,因此我们建议使用单独的命名准则。

 

词汇表

 

例子

一个用于管理对ZTAB表的持久性的类将命名为ZCL_PERS_ZTAB。

 

错误类别

通用规则

错误类是专门用于捕获类错误的类。

建议的命名标准

字首 ZCX_object name

词汇表

 

例子

最好,对象名称与它链接到的类对象名称相同,因此进一步说明该示例,ZCL_generalLedgerAccount类具有一个称为ZCX_generalLedgerAccount的错误类。

=变量命名=

全局对象与局部对象
在ABAP对象中,可以在类实例中隔离变量。在标准过程代码中,开发人员应确保它们将可用变量限制为仅需要访问它的模块。因此,所有变量都应在模块本地,除非该变量将在模块之间使用。

字典对象

数据库表

您的内容在这里。内联或在“内容设置”模块中编辑或删除此文本。您还可以在模块设计设置中为该内容的各个方面设置样式,甚至可以在模块高级设置中将自定义CSS应用于此文本。

观看次数

您的内容在这里。内联或在“内容设置”模块中编辑或删除此文本。您还可以在模块设计设置中为该内容的各个方面设置样式,甚至可以在模块高级设置中将自定义CSS应用于此文本。

Table 类型s

您的内容在这里。内联或在“内容设置”模块中编辑或删除此文本。您还可以在模块设计设置中为该内容的各个方面设置样式,甚至可以在模块高级设置中将自定义CSS应用于此文本。

结构体

您的内容在这里。内联或在“内容设置”模块中编辑或删除此文本。您还可以在模块设计设置中为该内容的各个方面设置样式,甚至可以在模块高级设置中将自定义CSS应用于此文本。

数据元素

您的内容在这里。内联或在“内容设置”模块中编辑或删除此文本。您还可以在模块设计设置中为该内容的各个方面设置样式,甚至可以在模块高级设置中将自定义CSS应用于此文本。

您的内容在这里。内联或在“内容设置”模块中编辑或删除此文本。您还可以在模块设计设置中为该内容的各个方面设置样式,甚至可以在模块高级设置中将自定义CSS应用于此文本。

准备开始了吗?

固定在Pinterest上