在一个运行 SAP S/4HANA 的企业系统里,业务人员每天都会产生大量事务数据。销售订单不断创建,采购订单不断变化,库存持续移动,会计凭证不断过账,生产订单从创建走向确认和结算。对于 ABAP 开发人员而言,这些数据最初看起来往往只是数据库表中的一行行记录。但当业务部门提出销售额按公司、区域、客户、产品和月份自由切换分析,或者财务部门希望从集团收入一路下钻到公司代码、利润中心甚至单张凭证时,问题已经不再属于普通的列表查询。
这正是 ABAP Analytics 要解决的问题。
ABAP Analytics 并不是在 ABAP 系统旁边额外安装一个报表框架,而是把分析能力直接建立在 ABAP Cloud、ABAP CDS 和 SAP HANA 之上。业务数据仍然存在于应用系统中,开发人员通过 ABAP CDS 建立具有业务语义的多维模型,再由 Analytical Engine 对这些模型执行聚合、过滤、层级导航和公式计算,最后把结果提供给 SAP Fiori、SAP Analytics Cloud 等分析客户端。
SAP 官方目前对 Embedded Analytics 的描述也强调了这一点,分析查询可以直接运行在业务数据之上,不必先把数据复制到外部数据仓库。这样得到的分析结果能够反映 ABAP 系统中最新的业务状态。
这与传统 ABAP 报表开发的思路存在很大的差异。
过去开发一个销售统计程序,很容易形成这样的代码结构。ABAP 程序读取 VBAK、VBAP、KNA1、MARA 等数据库表,在程序里做 JOIN、LOOP、READ TABLE、COLLECT 和各种 SUM,最后把结果塞进 ALV。业务又提出按销售组织分析,就修改 SELECT。又要求按照国家分析,再增加 JOIN。