ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

ABAP CDS Hierarchy 深度解析,从父子关系到 RAP Treeview 的层级数据建模

ABAP CDS Hierarchy 深度解析,从父子关系到 RAP Treeview 的层级数据建模

在 SAP S/4HANA 项目里,有一类数据看上去只是普通数据库记录,真正使用时却完全不能按照普通二维表来理解。

组织架构就是很典型的一种。

数据库里可能只有员工编号、姓名、上级员工编号这样的字段。从关系数据库角度看,每一行仍然只是一条普通记录,但业务人员看到的却是一棵树。最上面是 CEO,下面是事业部负责人,再往下是部门经理、团队负责人和普通员工。一个节点的位置并不是由某个固定的Level1、Level2、Level3字段决定,而是由员工和上级员工之间不断递归形成的父子关系决定。

产品分类、成本中心、利润中心、功能位置、项目 WBS、地理区域、物料分类甚至权限目录,也经常具有同样的结构。

如果完全依赖传统 ABAP 代码处理这类关系,通常需要不断查询父节点和子节点,再在 ABAP 内存里递归拼装结果。数据量稍微增大,代码复杂度、数据库访问次数和运行时间都会变得很难控制。

ABAP CDS Hierarchy 正是为这类问题准备的。

SAP HANA 数据库自身提供了处理层级数据的能力,而 ABAP CDS 将其中一部分能力封装成 ABAP 数据模型可以直接使用的设计期对象。层级关系可以在数据库侧计算,不需要先把全部原始数据搬到 ABAP Application Server 再进行递归处理。SAP 官方文档也明确说明,CDS hierarchy 可以作为全局可复用的设计期对象,被 ABAP 程序、其他 CDS entity 以及 RAP business object 使用。

这使hierarchy不再只是查询技巧,而成为 ABAP 数据模型的

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进