在当前表和历史记录表之间动态切换数据基础中的表

2020-09-22 12:33发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我有两个完全相同的表"

  1. 一个表包含了许多年前的所有数据(甚至是当前数据),并且
  2. 另一个只有最近3个月的数据

我希望数据基础可以根据用户过滤的时间框架在两个相同的表之间动态切换。

  • 如果日期范围在过去3个月内,请使用表#1
  • 否则,默认为表#2。

这可以实现吗?

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我有两个完全相同的表"

  1. 一个表包含了许多年前的所有数据(甚至是当前数据),并且
  2. 另一个只有最近3个月的数据

我希望数据基础可以根据用户过滤的时间框架在两个相同的表之间动态切换。

  • 如果日期范围在过去3个月内,请使用表#1
  • 否则,默认为表#2。

这可以实现吗?

付费偷看设置
发送
2条回答
小灯塔
1楼-- · 2020-09-22 12:49

不是直接的,但是有选项。

使用@Aggregate_Aware(@AA),您可以基于查询中选择的对象将查询从摘要表切换到详细表。 在您的情况下,除非包括特定对象,否则所有查询都将默认为当前表,在这种情况下,将使用历史记录表。 这不会根据日期值自动切换表,而是使用户能够通过选择对象来选择要使用的表。

另一种替代方法是创建一个派生表,该派生表对当前表和历史表进行UNION,并根据日期对每个表进行过滤。 用伪代码:

选择*
 来自历史记录,其中@prompt('输入日期'...)<(今天-90天)
工会 选择 * 从当前 其中@prompt('输入日期'...)> =(今天-90天)

仅当数据库识别到(1 = 0)条件并快速不返回任何结果时,这才适用于提示。

过去我见过一种 really hack-ish方法,但我不确定它是否适用于较新的版本。 在这里,您可以在Universe中添加一个表,并使用@Prompt()将其重命名。 该表的名称从字面上看就像@Prompt('Select table','A',{'CURRENT','HISTORY'})。 当用户选择"当前"时,将使用该表。 与第一个选项一样,它不会根据日期范围动态选择表,但也不需要在查询中包含特殊对象。

我能想到的唯一真实的方法是根据输入的值动态选择表,这是存储过程Universe。 您可以创建一个将数据参数作为输入的存储过程,并查询适当的表。 可以完成此任务,但是存储过程Universe的功能非常有限。

Haoba3210
2楼-- · 2020-09-22 12:53

谢谢,乔。

@AA为我解决了这个问题。

我在顶部添加了两个过滤器:

1。 包括所有历史记录(过滤器为1 = 1或1为空,两个事实表都包含在表列表中)。

2。 从...开始显示数据(包括提示动态SQL选择日期/时间)。

如果用户未选择任何一个过滤器,则默认为从活动时态表中拉出,这将需要99%的用户。

如果用户需要显示历史记录,则可以轻松地将其拖入上方的过滤器#1中。

但是,这很快让我感到困惑,因为我有两个事实表,它们是时间表。 更不用说我也有两个与此相关的核心宇宙。 完成所有上下文是一场噩梦。

但是设置不兼容项很容易。

宇宙中几乎所有度量/维度中的90%来自两个事实表,因此我不得不将@AA添加到所有这些事实/表中。

尽管如此,它仍然有效。

非常感谢!

一周热门 更多>