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

聊聊各种 SAP ABAP 系统底层支持的数据库类型

笔者的ABAP 开发教程里,有读者提到这个问题,专门写一篇文章来聊聊。

基于 ABAP 技术栈的 SAP 产品,底层到底支持哪些数据库?笔者在 SAP 开发领域工作了 18 年,亲身经历了 anyDB Suite on HANA S/4HANA only on HANA 的迁移轨迹。

SAP ERP(ECC)与 SAP Business Suite 7

SAP ERP ECC 与 SAP CRM,SAP SRM 7.x 等均归属于 SAP Business Suite 7。这一代产品建立在 SAP NetWeaver 基础上,长期支持多数据库平台的 anyDB 策略:Oracle Database、IBM Db2(含 LUW、z/OS、i 平台变种)、Microsoft SQL Server、SAP MaxDB、SAP ASE 均在列。

https://help.sap.com/docs/SAP_NETWEAVER_750/ccc9cdbdc6cd4eceaf1e5485b1bf8f4b/840cb892edfbc34290c1685132006662.html

SAP Help 的 Supported Databases 文档与 System Copy 的目标数据库清单,直接罗列了 Oracle、Microsoft SQL Server、IBM Db2、SAP MaxDB、SAP ASE 等平台;此外,SAP NetWeaver 官方维护策略也明确 Business Suite 7 可运行在 SAP 自有数据库与第三方数据库的平台组合上,具体组合需以 SAP 官网PAM(Product Availability Matrix) 显示为准。

https://support.sap.com/en/release-upgrade-maintenance.html

SAP S/4HANA

进入 S/4HANA 时代,数据库策略发生本质变化:S/4HANA 只支持 SAP HANA 数据库。这一点在 SAP 官方的 Getting Started with SAP S/4HANA 2023 文档中写得很直接:全新安装的 SAP S/4HANA 需要运行在 SAP HANA 数据库之上。

SAP Sales Cloud & Service Cloud

也就是以前所说的 SAP Cloud for Customer,这类 SAP 自研的 SaaS 产品,官网明确标注为 powered by SAP HANA,这意味着服务端持久化层以 SAP HANA 为基础,无需客户自建或自控数据库。

在更大的 SAP 云平台谱系中,SAP HANA Cloud 是 SAP BTP 的数据库管理基石,提供 DBaaS 能力,承载事务型与分析型混合负载。

如何在系统内判断当前数据库类型?

对一线开发与运维人员而言,有时候需要精确判断,我眼前这套系统到底跑在什么数据库上?

ABAP 提供了多层手段,既能判定当前标准连接数据库,也能识别二级连接的数据库类型。

最直接的办法就是读取系统字段 sy-dbsys.

sy-dbsys 是 ABAP 运行时填写的系统字段,表示当前中央数据库系统,如果打印出 HDB 则代表 HANA 数据库。

也可以使用工具类 CL_DB_SYS,其静态构造函数对 sy-dbsys 做了封装:

还可以使用另一个工具类 CL_ABAP_DBFEATURES 对当前数据库支持的特性进行嗅探。

当代码需要根据数据库能力切换实现路径时,可用 CL_ABAP_DBFEATURES 在运行时判定某能力是否可用,例如 AMDP、参数化视图,使用 SELECT 读取内表等特性。

比如笔者之前文章介绍的一个 ABAP 新特性:

每日5分钟,学习一个 ABAP 冷门知识点 (3):ABAP 内表也能用 SELECT 来读取了?

这个特性只在 ABAP 7.52 及以上的版本才能使用。

那么可以在 ABAP 代码里首先判断当前的 ABAP 是否支持这个新特性,如果支持,使用新语法;否则降级成传统的写法。

伪代码如下:

IF cl_abap_dbfeatures=>use_features(   VALUE #( ( cl_abap_dbfeatures=>itabs_in_from_clause ) ) ).   " 使用新语法读取 ABAP 内表数据ELSE.   " 兜底实现,使用传统语法ENDIF.

如果系统通过事务 DBCO 配置了二级数据库连接,可读取表 DBCON 的 DBMS 字段来识别远端数据库厂商与连接信息。

关于 ABAP 数据库二级连接,服务连接等概念的理解和应用,请参阅笔者之前的文章:

你知道吗?ABAP 在同一进程开多条数据库连接原来这么简单

玩转 ABAP 多数据库连接:标准连接、二级连接与服务连接的实战指南

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

相关快讯

领券