笔者的ABAP 开发教程曾经介绍过 ABAP 发展历程中的一些重要时间节点:
比如 7.40 这个重要的里程碑版本,ABAP 语言的新特性在这一版本里可以说是井喷式的引入:
那么开发人员如何知道自己使用的 ABAP 系统,到底是哪个版本呢?
笔者总结了以下五种方法。
1. 利用 SAP GUI 系统菜单查看版本信息
在经典 SAP GUI 界面中,可以通过「系统菜单」查看 ABAP 版本号。这是最常见且直观的方法之一。
登录 SAP GUI 后,点击顶部菜单的「System->Status」,在弹出对话框中,可以看到关于当前 ABAP 系统的概要信息。
点击 Product Version 右侧的放大镜图标,打开的窗口列出了系统各个 Software Component 软件组件及其版本号。
列表中的 SAP_BASIS 代表了 AS ABAP 的基础版本(SAP_BASIS).
SAP_ABA 则代表应用组件版本。下图的例子代表 ABAP 版本号为 750 或者 7.50
2. 事务码 SM51
在 SM51 事务码中,选择应用服务器实例并在菜单中选择 Release Notes,即可看到系统内核版本和 ABAP 版本等详细信息。
这种方法尤其适用于需要检查所有应用服务器的版本一致性时使用,例如一台逻辑应用服务器,背后由多台物理服务器实例组成,需要核对各实例版本一致性的场景。
通过 SM51 查看的是系统内核版本,通常可据此推断 ABAP 版本,因为 ABAP 语言版本与内核版本密切相关。
下图展示当前系统的内核版本是 753.
3. 使用 ABAP 系统字段获取版本号
ABAP 提供了系统字段 (System Fields) 来标识系统环境,其中就包含表示版本号的字段。最重要的一个是 sy-saprl,代表当前 AS ABAP 的发布版本。
下面是一个例子:
4. 查询系统表获取版本信息
SAP 数据库中有一些表存储了系统组件和版本的信息。其中最关键的表之一是 CVERS(Component Versions).
该表记录了 ABAP 系统中各软件组件的发布和支持包状态,被广泛用于检索 ABAP 平台版本。
下图展示了 SAP_ABA 和 SAP_BASIS 的版本,和我们用方法1 查询到的数据一致。
5. 利用 Function Module 获取系统版本
RFC_SYSTEM_INFO:这是 RFC,常用于从外部系统查询 SAP 系统信息。
它返回一个包含系统诸如系统 ID、主机、数据库、操作系统以及 SAP 版本等信息的结构。
第三方监控工具和集成中间件经常调用该函数来获取 SAP 系统版本。例如,通过 RFC_SYSTEM_INFO 可以直接获得 ABAP 内核版本号(位于下图字段 RFCSAPRL)、补丁号、IP 地址等信息。
对于有 RFC 访问权限的用户或程序来说,这是获取 SAP 系统版本最简单直接的方法之一,因为只需一次调用即可得到一系列关键信息。
另一个本地执行的 Function Module BDL_SYSTEM_INFO,能抽取当前系统的各项信息,包括 SAP 系统版本、操作系统类型、数据库版本等。
顺便说一句,SAP NetWeaver 时代(对应传统 ECC 系统)与 S/4HANA 时代的版本表示会略有不同,但获取 ABAP 版本的方法基本类似。
主要差异在于版本号的含义和组件命名上。
NetWeaver ABAP 版本:对于 ECC 或独立的 ABAP 系统,常用 SAP_BASIS 发布号来表示 ABAP 版本。例如 SAP_BASIS 740 对应 NetWeaver 7.4;SAP_BASIS 750 对应 NetWeaver 7.5。ECC6.0 不同增强包版本其实对应不同的 SAP_BASIS 版本,比如 ECC6.0 EHP0 对应 SAP_BASIS 700,EHP8 对应 SAP_BASIS 750 等。
S/4HANA ABAP 平台:从 S/4HANA 开始,SAP 将 ABAP 平台版本改以年份标识,并使用「ABAP Platform」这一术语。例如 ABAP Platform 2020 对应的 SAP_BASIS 版本是 7.55,ABAP Platform 2021 对应 7.56。实际上 S/4HANA 每一次大的发行版(如 1709、1809、1909、2020、2021 等)都有相应的 ABAP 内部版本号。例如 S/4HANA 1909 的 ABAP 平台是 7.54,S/4HANA 2021 是 7.56。在系统状态中,S/4HANA 系统会多出一些组件,比如 S4CORE(S/4 核心组件)及其版本,但 ABAP 内核版本仍通过 SAP_BASIS 来体现,如下图所示:
关于 ABAP Platform 的更多介绍,请参阅笔者之前的文章:
从 ABAP Netweaver 到 ABAP Platform,我们一直在努力