ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

把 ABAP CDS 推进到 SAP HANA 原生计算层,CDS Table Function 与 AMDP 的完整实现

2026/10/8 2:11:59 拓冰建站 浏览量
把 ABAP CDS 推进到 SAP HANA 原生计算层,CDS Table Function 与 AMDP 的完整实现 在 SAP S/4HANA 项目里,很多数据模型一开始都可以很舒服地停留在普通 ABAP CDS View 这一层。关联几个业务表,定义 Association,做字段计算,再暴露成 OData 服务,绝大多数查询型需求已经能够解决。但业务逻辑稍微往数据库计算方向走深一点,情况就开始变化。财务场景里可能需要根据基准日期计算付款到期日,再计算这个日期落在哪个自然周。分析场景里可能要求使用 SAP HANA 特有的日期函数、窗口函数或者复杂 SQL 表达式。还有一类需求更直接,查询产生的数据需要在数据库函数内部进行计算、转换甚至排序,而这些能力当前并不一定能够直接通过纯 CDS DDL 表达出来。此时,把逻辑搬回 ABAP Application Server 再逐行计算并不是理想路线。SAP HANA 已经拥有强大的 SQLScript 计算能力,更合理的设计是继续坚持 code pushdown,让 SAP HANA 完成它擅长的数据密集型运算,同时仍然让上层 ABAP 程序把结果当作普通 CDS 数据源消费。连接这两个世界的机制就是 CDS Table Function。SAP 官方文档对它的定位非常明确,CDS Table Function 可以把数据库原生函数引入 CDS 数据模型,具体实现通过 ABAP Managed Database Procedures,也就是 AMDP 完成,而真正运行在数据库里的代码使用 SQLScript 编写。Table Function 返回的是表状结果,因此还可以继续作为其他 CDS Entity 或 ABAP SQL 的数据源。从开发者视角看,整个调用关系可以压缩成一条非常清晰的链路