经常我们会碰到需要从SAP S/4HANA Cloud里抽取数据的情况,通常我们一般开发自定义CDS视图,并发布成OData API来做数据抽取。这种方法的优点是提取的数据是基于与分析和事务应用程序相同的语义层,并提供了高质量和一致性。但除了自开发CDS视图,实际上SAP提供了标准的通信场景(Communication Scenario)来帮助完成数据抽取,甚至是增量(Delta)的数据抽取。
请看下图:
通信场景SAP_COM_0531就是基于OData的CDS数据抽取,可以快速地抽取各种业务数据到SAP BW,HANA或第三方系统。
以下是简要步骤介绍:
- 首先,我们创建基于SAP_COM_0531的通信安排(Communication Arrangement):
2. 通过调用以下链接,可以获得所有支持数据抽取的标准CDS和它们的URL:
https://<host>/sap/opu/odata4/sap/cdi/default/sap/cdi/0001/Providers
3. 这边我们以Billing Document Item(c_billingdocitembasicdex_1)为例,调用以下链接,即可获取系统中的全部Billing Document Item数据:
https://<host>/sap/opu/odata4/sap/cdi_cds/cdi_cds/sap/c_billingdocitembasicdex_1/0001/Facts
4. 如果在调用抽取数据的链接时,在Header上加上参数Prefer:odata.track-changes,即可在返回的结果的最后获得一个更新的deltalink,deltalink用来获取系统的增量数据。
需要注意的是,必须是以dex结尾的CDS视图才能够实现增量数据的抽取。
5. 然后我们去系统中创建一条新的billing document,以测试增量(delta)数据抽取。创建Billing Document 90000957,如下图所示:
6. 调用之前的deltalink,即可获取只有增量数据的返回信息,获得只返回Billing Document 90000957的结果。
https://<host>/sap/opu/odata4/sap/cdi_cds/cdi_cds/sap/c_billingdocitembasicdex_1/0001/Facts?$deltatoken=XXXX
7. 同时,你可以注意到,在返回结果的最后,会生成一个更新的deltalink。当你想要获取下一次增量数据的时候,调用这个更新的deltalink即可:
以上就是如何借助SAP标准通信场景SAP_COM_0531来实现SAP S/4HANA Cloud业务数据的全量抽取和增量抽取的介绍。如您也有类似需求,也可借助这一场景来快速实现您的需求。感谢阅读!