当前位置:主页 > 网络与CDN > 安全市场 >

分布式存储_gbase数据库_促销

基于SAP NW 7.4 sp13

我们最近需要使用anyDB上ECC的约20个源表,快速创建约200列与销售订单相关数据的提取。通过相对直接的数据提取,很少或没有计算的列或复杂的转换,但时间很短,我们决定使用CDS视图专门收集数据。

SCN中的其他博客警告甚至建议不要在anyDB系统上使用CDS,例如CDS视图,但是在我们的案例中,这种方法真的很管用。开发速度快,测试/调试非常容易,企业系统开发,卓越的性能,我们现在有多个可重复使用的数据模型用于销售订单标题和行相关数据。

此链接也是AnyDB中CD开发的优秀文档。

AnyDB上的ABAP CD

必须彻底测试所有CD视图的性能和高效的数据库执行。下面的示例来自ECC系统,其中客户值的设置对于每个销售订单是唯一的,这在您的等效系统中可能不是这种情况。

我们需要确保每个销售订单和销售订单行的条目是唯一的,大数据在线,但是还要求包含多个客户/合作伙伴功能数据(例如,风控大数据,销售对象、收货方、收货方等)。

使用SQL中的条件聚合将多行透视成具有相应列标题的较少行(例如单个行)是一段时间以来所有rdbms中常用的方法,尤其是在pivot/unpivot等专用SQL函数可用之前。

我想在本博客中展示的是我们如何使用条件聚合在ABAP CDS视图中完成此任务,同时避免了将记录带入ABAP和多次循环迭代以产生相同的输出。

要获得每个销售订单事务的一条记录,我们需要将BP函数值(例如发货地国家)拆分到Select语句上它自己的单个字段中。

我们通过使用下面的CASE语句来实现这一点。

我们现在每个BP函数都有单独的字段和相关的字段值。每个BP函数也有一行,在下面的示例中,大数据的现状,一行表示销售对象,为Bill To分隔行,其中只填充Bill To字段。

将每个BP函数的行聚合到每笔交易的一行。

我们通过使用MAX函数和一个group by来实现这一点,如下所示。

现在在Vbeln上查询此视图将给您一行,什么是云,其中所有关联的BP值将拆分为单独的行列。

我希望这能为人们提供一个如何使用CDS视图应用条件聚合的工作示例,上面的这些视图是在非HANA基础数据库上创建的。提取方法的执行速度比同一卷的标准BAPI销售订单详细信息调用快很多个数量级。

猜你喜欢

微信公众号