1.前言
最近项目HANA部分的开发用的比较多,之前很少用图形化计算视图,最近研究了下,发现有些小功能对于图形化视图的性能提升,还有建模便利性都有很大帮助,今天发现了一个小功能,就是视图中的参数,不但只可以定义传统的直接输入的参数,还有几种类型
2参数的几种类型
如图,新建参数的时候,可以选择几种类型:
1.直接: 就是直接建一个参数 可以手动输入传参
2.列: 从表中的字段中引用一个列段参数
3.源自表:从一张表中引用字段的数据来作为参数(今天主要讲的就是这种)
4.静态列表:不知道干啥的,不知道咋用
5.源自存储过程:从存储过程中用字段的数据来作为参数
3.源自表参数的详细用法和使用场景
以上几种方式大家可以根据字面意思自己去试一下,我今天在项目中主要用到,第三种源自表的参数,记录一下使用场景和用法
3.1.需求
两张表,一张ACDOCA,一张时间配置表ZBWT_REPORT_DATE,需求就是限制ACDOCA中的期间,小于时间配置表中维护的期间,比如时间配置表维护一个202301,那么我ACDOCA的值就只取2023.01之前的数据。
如果用脚本视图,直接select,from两个表,各自取出期间限制字段即可,很简单的逻辑
SELECT ACDOCA*
FROM ACDOCA,ZBWT_REPORT_DATE
WHERE ACDOCA.FISCYEARPER < ZBWT_REPORT_DATE.FISCYEARPER
3.2 原做法
但是用图形化,把他两关联起来就麻烦了,我能想到的就是各自给一个字段常数1,然后ACDOCA左关联时间配置表,合成一个表后再限制期间,如图,可以说开发上看着就很繁琐,性能上acdoca全表需要去跟配置表做关联,性能也很差。
3.3 优化方法:参数引用表数据
基于上面那么麻烦,我就想能不能简化点,后面乱点发现了参数的几种类型,基于参数引用表数据的方法,实现如下:
新建一个期间参数,如图引用时间配置表的期间字段,该参数即赋值为期间参数
随后直接在图形化视图中,用参数进行限制即可,创建一个过滤,如图
整体开发一步搞定
4.总结
开发简洁性:不用多讲,两者一看就知道了,后一种看起来都简洁很多 ,少了好几块
性能:第二种直接限制ACDOCA源表时间范围,从数据量考虑,再上层如果还有逻辑处理性能也会大大提升
参考资料:介绍了性能问题
Improve SAP HANA calculation view performance via Derived from Table Input Parameter | SAP Blogs