Technology Blogs by SAP
Learn how to extend and personalize SAP applications. Follow the SAP technology blog for insights into SAP BTP, ABAP, SAP Analytics Cloud, SAP HANA, and more.
cancel
Showing results for 
Search instead for 
Did you mean: 
Former Member
0 Kudos

在前一篇blog,我介绍了在NW7.4出现之前是如何用ABAP与HANA结合开发应用。虽然通过简单地对比我们已经看到了性能的巨大提升,但是,依然有一些问题:

  • 使用ADBC繁琐,麻烦
  • HANA特有的模型对象没办法天然地与ABAP结合

那么这篇blog里我要介绍NW 7.4新引入的一种DDIC对象,可以让我们像访问普通DDIC表/视图那样访问HANA的模型。

还是回到之前的那个简单地业务场景,计算距离交货日期的汇总天数。我们通过HANA特有的函数,利用ADBC写了SQL,这样我们已经大幅地缩减了执行时间,但是4~5倍的样子似乎并不像SAP说得那么厉害,而且ADBC写起来太麻烦了。

那么我们首先在HANA层面解决这个问题:

HANA叫做内存内计算,所以我们利用calculated attribute将距离交货日期作为一个calculated attribute创建出来。由于我的场景过于简单,只有一张表,所以不适用于analytic view或者calculation view,我们这里只要选用attribute view作为模型类型。

120

这样一来我们可以将open_days作为数据库表字段一样做SUM就可以得到我们想要的结果了。

那么下面我们就利用NW7.4的新的DDIC对象 external view建立一个ABAP到HANA模型之间的桥梁,把HANA模型变得像ABAP DDIC对象一样易于访问。

210

38

创建的过程直观且简单,只需要命名external view的名字以及连接的HANA view就可以了。需要强调的是,这个过程只能在eclipse的ABAP开发环境中进行,SAPGUI的ABAP编辑器并没有提供创建的功能。但是创建成功的对象在eclipse环境和SAPGUI SE11中都可以访问,在SAPGUI SE11中还可以浏览数据。

现在我们从ABAP里,利用OPEN-SQL像访问普通的DDIC对象一样获得结果吧。整个ABAP代码,与使用ADBC相比变得异常简洁。

data open_days type i.

select sum( open_days ) into open_days from ZV_SO_OPENDAYS.

WRITE: ‘Total number of open days: ‘ , open_days.

我们对运行结果也进行了profiling,如下:

44

神马,0.19秒? 是的,提高了52倍。这还是在我们只用到了JOIN ENGINE和CALC ENGINE的情况下。如果一个复杂的场景,彻底发挥HANA CALC ENGINE/OLAP ENGINE的威力,将erp跑在HANA的优势和好处就完全体现出来了。

性能本身就是成本!更佳的性能已经是一种低成本的体现。