SAP HANA列出层次结构第3级中的所有物料

时间:2019-04-11 20:10:01

标签: sap hana

SAP HANA 1.0。

图形计算视图。

两个问题:

使用Hana建模工具:

1)如何编写一个图形计算视图,该视图将为我提供CN1003产品层次结构中的所有物料,并同时显示CN1003的文本描述?

我知道我可以使用MARA.PRDHA获取材料的层次结构,并使用T179T获取层次结构的文本;但似乎我需要生成一个计算列以仅包含前6个字符,然后进行过滤。但最佳做法表明不要对计算所得的列进行过滤。那么什么是正确的方法呢?有没有我可以加入的表,可以用来分解层次结构?因此我可以过滤“ CN”和“ 1003”的前两个段?

例如: 玛拉

+-------+--------------+
| MATNR |    PRDHA     |
+-------+--------------+
| 12345 | CN1003       |
| 12346 | CN10034231   |
| 12347 | CN1003423112 |
| 12348 | CN1002       |
| 12349 | FK1003       |
+-------+--------------+

T179T

+--------------+----------+
|    PRODH     |  VTEXT   |
+--------------+----------+
| CN1003       | Widgets  |
| CN1002       | Magnets  |
| CN10034231   | Tall     |
| CN1003423112 | Red      |
| FK1003       | Minerals |
+--------------+----------+

预期结果:

+-------+---------+
| MATNR | VTEXT   |
+-------+---------+
| 12345 | Widgets |
| 12346 | Tall    |
| 12347 | Red     |
+-------+---------+

2)在图形计算视图中:将varchar(8)字段的语义类型设置为最新的目的是什么?我认为这会将“ date” varchar(8)字段转换为日期数据类型,以供“计算”视图中的Universe使用;但显然不是。因此,我是否必须使用计算列将此非日期日期转换为实际日期数据类型,这是否不是最佳选择,因为我再次在计算列上进行过滤?那么,如何将我的字符串日期更改为日期呢?还是我应该要求用户输入字符串日期,这在我的报告BI Universe中似乎是UI的错误选择。 Hana为什么不只将日期存储为日期!?

1 个答案:

答案 0 :(得分:1)

这是两个写得很好的问题-谢谢。

对于第二个问题,答案很简单:计算视图中字段的语义属性实际上只是前端工具“使用它做正确的事”的指示。它主要由SAP前端工具使用,而AFAIK并没有被其他任何工具广泛使用。

关于日期数据存储:这是SAP ABAP 独特性的设计决策,已经制定了数十年。它允许SAP ABAP将日期/时间信息存储在任何受支持的DBMS上,并保证以明确定义的语义以完全相同的方式取回数据。 ABAP数据类型称为DATSTIMS,它们以字符格式表示日期/时间信息。

如果要基于实际日期(甚至基于日期/时间信息的层次结构)启用过滤,则SAP工具(如SAC)开箱即用。另外,您可以提供一个值帮助视图,该视图将执行选择的数据类型转换,并将过滤条件转换回DATS / TIMS格式。

这样,与其余查询处理相比,转换工作量最小。

关于第一个问题,我不确定在这里是否遇到了问题。 可以通过简单的文本联接(或常规联接)将文本与层次结构标识符匹配。 您的过滤可以轻松地(再次)基于基于文本表的值帮助视图,该文本表向最终用户显示分解后的(双关语)字符串部分。 根据选择,从文本表到部件表的联接将仅包括所选记录。

同样,仅在较小的表(具有较小字典的表)上进行一次转换工作。

没有硬性规定要求您必须预先计算SAP HANA中的每个数据转换。反之亦然。通过在值助手视图中提到的临时转换,您可以避免在大型表上进行不必要的转换,而无需其他预先计算的结构。

我可以提供的另一点是,根据我的经验,在确定实际性能问题之前引入预先计算的列和索引确实没有用。 但是,考虑何时,何地以及为什么要转换数据并据此进行设计确实值得一试。

相关问题