首页
学习
活动
专区
圈层
工具
发布

如何搞清楚 SAP S4HANA 公有云使用的 ABAP 语言的版本号?

有朋友咨询,想知道他们公司正在使用的 SAP S/4HANA 公有云,后台基于的 ABAP 编程语言到底是哪一个版本?

这个问题看似简单,背后其实牵扯到了三个容易混淆的概念:

语言版本

产品版本

ABAP release

这三个概念如果不区分清楚,在实际项目中很容易出现这样一种情况:

有人嘴上说自己在确认ABAP 版本号,结果他查到的是S/4HANA Cloud 2602,另一个人查到的是ABAP for Cloud Development,还有人去问SAP_BASIS 多少。

三个人都觉得自己没错,但彼此说的根本不是一回事。

本文咱们就针对这三个概念来说一说。

SAP 官方在ABAP release的术语定义里讲得很清楚,ABAP不是独立发布的,它是随具体产品一起交付的,像SAP S/4HANA Cloud Public Edition、SAP BTP ABAP environment这类产品各自带着对应的ABAP release走,不存在一个脱离产品单独漂浮着的ABAP 版本号。

文档的原话是:

ABAP is not released standalone but is shipped together with SAP products such as SAP BTP ABAP environment, SAP S/4HANA Cloud Public Edition and SAP S/4HANA, SAP S/4HANA Cloud Private Edition.

官方文档地址:

https://help.sap.com/doc/abapdocu_latest_index_htm/latest/en-US/ABENABAP_RELEASE_GLOSRY.html

因此以 SAP 旗舰级产品 SAP S/4HANA Public Cloud 的最新版本 2602 为例,如果问的是其后台所依托的那个数值化ABAP release,那么 SAP 官方ABAP Keyword Documentation的News for ABAP Release 9.1x对照表已经给出了答案:

SAP S/4HANA Cloud Public Edition 2602 对应的是ABAP release 9.18,对应的 kernel release 是918。

https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/ABENNEWS-91.html

同一张官方表里还能看到2508对应9.16,2511对应9.17,到2602就是9.18。

这套命名已经不是很多 ABAP 老项目里常挂在嘴边的7.52、7.54、7.56那种节奏了。

因为9.1x ABAP releases是基于7.9x演进出来的,所以你如果硬想把它往传统7.xx脉络上挂,那么应该理解为它属于新的7.9x代际,而不是7.5x那一支。

https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/ABENNEWS-91.html

不过,光知道9.18还不够,因为这位朋友问题里用了ABAP 语言的版本号这个说法。

在SAP S/4HANA Public Cloud语境,项目里真正每天会碰到的,往往不是9.18这个数字,而是ABAP language version。

SAP 官方在ABAP Language Versions和相关术语页里提到,ABAP language version是开发对象上的语言约束,用来决定哪些语法、哪些对象访问方式、哪些 API 使用方式被允许。

在使用 ABAP 这门编程语言进行 API 开发时,支持下面两种 ABAP Language Versions:

ABAP for Cloud Development

Standard ABAP

https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/ABENABAP_LANGUAGE_VERSIONS.html

除了 ABAP API 开发领域之外,ABAP 编程语言还有另一个子集,名叫 ABAP for Key Users.

顾名思义,这种 ABAP 专门提供给 Key User 在 SAP Fiori 的可扩展性应用里实现扩展逻辑,典型入口就是 Custom Fields and Logic 与 Custom Business Objects。

它的运行方式也很特别,不是在传统的 ABAP Workbench 里写代码,而是在 Fiori 环境中的 Web 编辑器里完成。

因此就有了下面这张表:

表中可以看出,在 SAP S/4HANA Public Cloud 和 SAP BTP ABAP 环境里,仅能使用 ABAP for Cloud Development 和 ABAP for Key Users,无法使用 ABAP On-Premise 环境下经典的 Standard ABAP.

因此,在 SAP BTP ABAP 环境或 SAP S/4HANA 公有云里创建的 ABAP 对象,其 ABAP Language 被强制设定为 ABAP for Cloud Development:

而 SAP S/4HANA Private Cloud 因为同时支持三种版本的 ABAP,所以在下拉菜单里可以看到全部三种可选项:

所以,回到本文开头的问题,最准确的回答不是一句单薄的SAP S/4HANA 2602 的 ABAP 基于 9.18。

更严谨的讲法应该是这样,SAP S/4HANA Public Cloud 2602这一产品版本,对应的后台数值化ABAP release是9.18,但你在开发对象层面真正看到和设置的ABAP language version,对开发者扩展来说是ABAP for Cloud Development,对Key User Extensibility场景来说则是ABAP for Key Users。

有点啰嗦,是不是?但这确实是最严谨的回答。

很多 ABAP 老顾问和开发会在这里踩坑,也在情理之中。

长期做ABAP On-Premise开发的老司机,早就形成了一个肌肉记忆,想看后台版本,就去看SAP_BASIS、看System Status、看7.xx。

可到了ABAP Cloud世界,时代变了,SAP 自己的术语体系已经换挡了,我们也需要更新自己的知识储备了。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/ONk3oCsKAdw46kEx-u_dBafg0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。
领券