从单独查询中的数据开始,在单独查询中的两个日期之间运行求和表

2020-09-09 01:11发布

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

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


查询1提供开始日期和结束日期参数,以及初始值。<查询>查询2按日期(日期和金额)保存交易数据。

所需的最终结果是一个数据表,该数据表以查询1的开始日期和查询1的初始值开始。尽管查询1的结束日期,我仍需要为查询2中的每个条目添加一行。

>例如,查询1为2018年第三季度(2018年10月1日至2018年12月31日)。 初始值为100,000

查询2具有以下内容
10/15/2018 50,000

11/7/2018 -10,000

2018年12月6日5,000

必需的最终结果表
10/1/2018-10/15/2018 100,000

10/15/2018-11/7/2018 150,000

11/7/2018-12/6/2018 140,000

2018/12/6-2018/12/31 145,000

任何帮助将不胜感激。 谢谢。



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

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


查询1提供开始日期和结束日期参数,以及初始值。<查询>查询2按日期(日期和金额)保存交易数据。

所需的最终结果是一个数据表,该数据表以查询1的开始日期和查询1的初始值开始。尽管查询1的结束日期,我仍需要为查询2中的每个条目添加一行。

>例如,查询1为2018年第三季度(2018年10月1日至2018年12月31日)。 初始值为100,000

查询2具有以下内容
10/15/2018 50,000

11/7/2018 -10,000

2018年12月6日5,000

必需的最终结果表
10/1/2018-10/15/2018 100,000

10/15/2018-11/7/2018 150,000

11/7/2018-12/6/2018 140,000

2018/12/6-2018/12/31 145,000

任何帮助将不胜感激。 谢谢。



付费偷看设置
发送
14条回答
shere_lin
1楼-- · 2020-09-09 01:30

嗨,Veronica,

对此保持沉默。

您可能已经找到一个 自己解决,但万一您不在这里,您将可以找到解决方案 预期的结果。

我们需要运行三个查询 而不是仅仅两个,否则我们很难同步 数据正确:

查询1(Acct Start): [帐号],[开始日期],[初始金额]

查询2(Acct结束): [帐号],[结束日期]

查询3(付款): [帐号],[日期],[金额]

运行 三个查询,按如下所示合并帐号和日期:

1。 合并所有[帐户 编号]维度合并为一个[帐户编号]合并维度,使[帐户] 数字(Acct起始)]源尺寸

2。 合并[日期],[结束 日期]和[开始日期]合并为一个[日期]合并维度,使[日期(Acct 付款)]源维度

在下一步中, 创建四个度量变量:

1。 [全额] = [金额] + [初始 金额]

这只是合并了 将查询1和查询3中的两个度量合并为一个度量,这样我们就可以仅对一个度量变量使用RunningSum()。

2。 [Running Sum] = NoFilter(Previous(RunningSum([Full 金额];([[Account Number]));([[Account Number]); 1))

我们正在与 Previous()函数以确保我们在每一行中分配正确的值 根据其开始日期和结束日期(请参见下一个变量)。 NoFilter()函数非常重要,因为稍后您将需要应用表格过滤器。

3。 [Date From] = NoFilter(If(IsNull(Previous([Amount];([Account Number]); 1))和IsNull(Previous([Initial Amount];([Account Number]); 1)))然后 ([开始日期])其他上一个([日期];([帐户号]); 1))

我们需要注意一点 创造性地将正确的开始日期(开始日期)与相关的结束日期配对 日期(日期到,即日期)。 为了做到这一点,我们逐行进行 根据金额和初始金额进行验证,并从查询中分配开始日期 1两者都没有值,或者没有上一个([Date])值 其中包含"金额"或"初始金额"的值。 同样,我们需要NoFilter()函数作为包装器。

4。 [隐藏我的筛选器] = [日期] > Max([开始日期])In([帐户号])

此变量的作用是 一个帮助程序变量来处理包含交易日期的那些行 小于每个帐号中的开始日期。

现在您有了 创建了四个可以继续创建报表的变量:

1。 打开一个新报告 标签,然后将以下对象拖到报表画布上:

[Acct Start]。[Account 编号],[日期自],[日期]和[运行总金额]

可以从上面的屏幕截图中看到,我们可以根据需要确定开始日期和结束日期。 但是我们仍然需要 处置以红色框住的行:

为此,您现在 对表块应用过滤器:[隐藏我的过滤器]等于1

最后,插入一个 部分,使用[帐号]合并对象并调整该部分和/或 表格布局以适应您的需求。

如果要检索 数百个帐号,我也会考虑在 [帐号]用于优先于报告选项卡进行快速导航。 在我的 意见,最好同时使用Input Control和Report Map。

让我知道您的情况。

问候,

Tom

当学会了学习
2楼-- · 2020-09-09 01:42

您好,维罗妮卡

此外,您在4月23日下午9:30发表评论,在4月25日下午回复了我,我不确定我是否正确理解该限制。 如果您查看我在3月26日提供的说明/描述中的样本数据集,您会注意到22222-2帐户在开始日期之前进行了两次交易,在我看来,没有其他行。 也许您可以提供屏幕截图以突出显示问题?

亲切的问候

Tom

一周热门 更多>