在 SAP S/4HANA 的分析场景里,我们经常会碰到一种很有意思的情况。数据库里的基础数据其实都已经有了,销售金额、成本金额、订单数量、交货数量、座位数、已占用座位数也都可以通过 ABAP CDS Cube 暴露出来,但业务真正关心的数字往往并不是这些原始 Measure。
销售经理真正想看的可能是毛利率,财务人员关注的是费用占收入比例,供应链团队关心的是交付达成率,航空业务可能更关注座位利用率。它们有一个共同特点,它们通常并不存在于底层业务表中,而是要建立在若干已经聚合的 Measure 之上再次计算。
这正是Calculated Measure存在的地方。
SAP 对它的定义非常简洁,Calculated Measure 允许我们基于已经聚合的 Measure 继续进行查询和计算,从而派生出新的 KPI。现代 ABAP Analytics 中最关键的一点并不是会不会写一个除法公式,而是能否真正理解 Analytical Engine 的计算顺序。对于 Calculated Measure,系统会先聚合参与公式的 Measure,再执行公式,而不是先逐行算公式再聚合。SAP 官方文档明确说明,使用@Aggregation.default: #FORMULA后,系统会先聚合公式操作数,再根据聚合结果执行公式。
看似只是一个执行顺序的差异,实际上它决定了一个 KPI 到底有没有业务意义。
从一个座位利用率公式开始理解
假定我们的 Cube 里存在两个 Measure。
一个叫MaximumSeats,表示航班可以提供的最大座位数。</