每天根据带有日期间隔的表生成无间隔数据

2020-09-10 13:48发布

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

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


您好,我的数据模型基于ABAP CDS VIEWS(发行:Netweaver 751 SP02,HANA数据库)。 SAP Analytics Cloud将通过实时数据连接使用此数据模型!

最后,我想创建一个每日报告。 但是,我的数据不完整,即某些天没有条目。 最后的值只是在这里传输。 以下示例说明了我的要求:

来源表(源)

我通过左(外部)联接将SAP标准日历(如左表)链接到源表。 至少我整天都这样:

但是如何更新各个值? 结果应为下表:

使用SQL函数LEAD/LAG并没有使我真正地走得更远,因为我在多行代码之间存在空白,并且这些函数仅涉及"相邻行"。

有什么想法吗?

非常感谢!

最诚挚的问候,

战栗

(2.5 kb)

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

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


您好,我的数据模型基于ABAP CDS VIEWS(发行:Netweaver 751 SP02,HANA数据库)。 SAP Analytics Cloud将通过实时数据连接使用此数据模型!

最后,我想创建一个每日报告。 但是,我的数据不完整,即某些天没有条目。 最后的值只是在这里传输。 以下示例说明了我的要求:

来源表(源)

我通过左(外部)联接将SAP标准日历(如左表)链接到源表。 至少我整天都这样:

但是如何更新各个值? 结果应为下表:

使用SQL函数LEAD/LAG并没有使我真正地走得更远,因为我在多行代码之间存在空白,并且这些函数仅涉及"相邻行"。

有什么想法吗?

非常感谢!

最诚挚的问候,

战栗

(2.5 kb)
付费偷看设置
发送
5条回答
哎,真难
1楼 · 2020-09-10 14:32.采纳回答

您好-这是我目前解决上述问题的方法。

我已经使用SQL脚本创建了一个表函数,在其中选择了所有交易数据。 我还添加了一个列,该列按公司代码,银行,帐户和日期对行号进行计数。

这是在表函数视图的方法实现中SQL的样子:

Table函数CDS视图如下:

我还创建了一个视图,在该视图中我将masterdata表与SAP标准日历结合在一起。 在以下屏幕截图中,此视图称为/SERR/I_M_MD_PER_DATE。 重要的是打开条件,我在日期相关列上设置了<=条件,这是为了将以前的值设置为原始数据中没有值的字段。

在表格功能视图中,我的每日主数据和事务数据之间存在左外部联接。

除了已经提到的视图外,我还必须创建另一个视图,该视图返回" Max"值。 该视图在上面的视图中仅选择具有最大聚合的键值。

最后一步需要使用此视图-尺寸视图。 在最后一步,您必须通过内部联接将"最大视图"与" daily-masterdata-transactiondata"视图联接。 同样重要的是关于行号的开启条件。

目前,它是这样工作的。

最后一个内部联接是必需的,因为lef-outer-join会生成不需要的条目。 使用"最大值"值可以再次从数据中丢弃错误的条目。

最诚挚的问候,

Thorsten

SAP小菜
2楼-- · 2020-09-10 14:41

我真的很想看看如何使用CDS来实现。
拥有这种功能非常有用。

J。

能不能别闹
3楼-- · 2020-09-10 14:36

如果这是您想要的

然后我使用SQL达到了这样的目的

很抱歉您读为VALUE的VLAUE的错字; 我使用SQL的Windows函数,不确定是不是可以在ABAP中使用这些函数,因为我在HANA Side的SQL上有更多的了解

SELECT DATEVAL,VLAUE,SUM(VLAUE)超过(按分区划分,按顺序划分)RUNNNG_VAL,来自

SELECT *,RANK()超过(按运行顺序排序)来自

(SELECT *,SUM(VLAUE)OVER(ORDER BY DATEVAL)RUNVAL

测试日期-在此替换您的表名和列名

按日期排序)

按日期排序

shere_lin
4楼-- · 2020-09-10 14:38

您好。 我尝试过,但是不幸的是我的问题有点复杂。 我还有其他维度(不仅是日期),例如公司代码,银行和帐户。 我还有另一个关键指标列,该列也必须进行更新。 如果有人再次找到时间和乐趣,您可以使用ANIRUDDHA SHINDE的方法(RANK,PARTITION)来做到这一点吗? 同样是一个源表和一个结果表-您可以更好地理解我的挑战。 该表的键将是CalendarDate,Company,Bank和Account。

来源:

现在,所有这些数据都是每天进行的(请注意-这是一张表-我仅将数据并排放置以得到紧凑视图)

最后,结果(也是一张表):

非常感谢您。

最诚挚的问候,

欢迎

悻福寶寶
5楼-- · 2020-09-10 14:29

非常感谢您的回复! 我将使用ABAP CDS进行尝试。 同时,我也找到了解决方案,但您的情况看起来好得多。

我将尽快在这里提供我的解决方案,如果ABAP CDS可以根据您的建议,我会通知您!

谢谢!

最好的问候

催眠

一周热门 更多>