每12个月自动更新最近12个月的消费量

2020-09-02 01:00发布

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

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


嗨,

我在多个报表中使用了过去几个月的物料消耗,但是必须在新月初开始编辑每个报表,这样才能再次拉近最近12个月的消耗。

我正在寻找一种方法来进行更新,而无需我每月编辑公式。

可以从表MVER中提取数据。 每个月的总计可以从GSV01- GSV13字段中获取。

如果当前月份为2019年9月

我需要从2018年9月到2019年8月的消费量!

到目前为止,我每个月都这样计算:

2019年8月:

如果{MVER.GJAHR} =" 2019"
然后是{MVER.GSV08}
否则0

一直到2018年9月:

如果{MVER.GJAHR} =" 2018"
然后是{MVER.GSV09}
否则0

最后我通常将它们加在一起:

2019年8月+ 2019年7月+ 2019年6月.... 2018年9月

我可以将上个月设置为开始日期(19年8月),然后再返回12个月吗? 如果是,该怎么办?

如果这是一个日期字段,例如日/月/年,我知道该怎么做,但是随着日期在两个不同的字段中分开,我就没了主意。

感谢Jacky

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

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


嗨,

我在多个报表中使用了过去几个月的物料消耗,但是必须在新月初开始编辑每个报表,这样才能再次拉近最近12个月的消耗。

我正在寻找一种方法来进行更新,而无需我每月编辑公式。

可以从表MVER中提取数据。 每个月的总计可以从GSV01- GSV13字段中获取。

如果当前月份为2019年9月

我需要从2018年9月到2019年8月的消费量!

到目前为止,我每个月都这样计算:

2019年8月:

如果{MVER.GJAHR} =" 2019"
然后是{MVER.GSV08}
否则0

一直到2018年9月:

如果{MVER.GJAHR} =" 2018"
然后是{MVER.GSV09}
否则0

最后我通常将它们加在一起:

2019年8月+ 2019年7月+ 2019年6月.... 2018年9月

我可以将上个月设置为开始日期(19年8月),然后再返回12个月吗? 如果是,该怎么办?

如果这是一个日期字段,例如日/月/年,我知道该怎么做,但是随着日期在两个不同的字段中分开,我就没了主意。

感谢Jacky

付费偷看设置
发送
6条回答
槿木_熙
1楼 · 2020-09-02 01:04.采纳回答

您好,杰基,

您能尝试一下吗?

1。 使用以下代码创建一个名为@ Month1的公式:

共享编号var month1;
 month1:=
 如果toText(year(DateAdd(" m",-11,Minimum(MonthtoDate())-1)),'#')= {MVER.GJAHR}
 然后
 (
 选择Month(DateAdd(" m",-11,Minimum(MonthtoDate())-1))
 情况1:{MVER.GSV01}
 案例2:{MVER.GSV02}
 情况3:{MVER.GSV03}
 案例4:{MVER.GSV04}
 案例5:{MVER.GSV05}
 案例6:{MVER.GSV06}
 案例7:{MVER.GSV07}
 案例8:{MVER.GSV08}
 案例9:{MVER.GSV09}
 案例10:{MVER.GSV10}
 案例11:{MVER.GSV11}
 案例12:{MVER.GSV12};
 );
 month1; 

2。 创建12个这样的公式,只需更改每个公式中DateAdd()中的值,然后将月份的共享numbervar变量增加1。

E.g。 对于@ Month2,您将拥有:

共享号码var month2;
 month2:=
 如果toText(year(DateAdd(" m",-10,Minimum(MonthtoDate())-1)),'#')= {MVER.GJAHR}
 然后
 (
 选择Month(DateAdd(" m",-10,Minimum(MonthtoDate())-1))
 。
 。
 。

对于@ Month3,应为:

共享数var month3;
 month3:=
 如果toText(year(DateAdd(" m",-9,Minimum(MonthtoDate())-1)),'#')= {MVER.GJAHR}
 然后
 (
 选择月份(DateAdd(" m",-9,最小值(MonthtoDate())-1))
 。
 。
 

,对于@ Month12,它将是:

共享的数字var month12;
 month12:=
 如果toText(year(DateAdd(" m",0,Minimum(MonthtoDate())-1)),'#')= {MVER.GJAHR}
 然后
 (
 选择月份(DateAdd(" m",0,最小值(MonthtoDate())-1))
 。
 。
 

3。 然后,您可以在报表上显示每个公式字段,甚至可以使用另一个公式创建最终的总和,如下所示:

共享数字var month1;
 共享号码var month2;
 共享号码var month3;
 共享号码var month4;
 共享号码var month5;
 共享号码var month6;
 共享号码var month7;
 共享号码var month8;
 共享号码var month9;
 共享号码var month10;
 共享号码var month11;
 共享号码var month12;
 month1 + month2 + month3 + month4 + month5 + month6 + month7 + month8 + month9 + month10 + month11 + month12; 

-阿比拉什

落灬小鱼
2楼-- · 2020-09-02 01:01

嗨Jacky,

您能否提供更多有关GSV01- GSV13字段如何存储不同年份数据的信息?

是否可以在此处提供示例数据集?

-Abhilash

95年老男孩
3楼-- · 2020-09-02 01:02

你好Abhilash,

所有消耗数据都存储在表中:MVER。

我用

选择年份

{MVER.GJAHR} =" 2019"(或2018 ...)

该表还具有GSV..fields,其中

GSV01 =一月

GSV02 =二月

...

GSV012 =十二月

GSV字段仅存储该月的数据,但是与MVER.GJAHR(年份)字段相关,我可以指定可以查看哪一年的月份消耗量。

正如我到目前为止所说的,我这样计算每个月的消费量:

如果{MVER.GJAHR} =" 2019"
然后是{MVER.GSV08}
否则0

在过去的12个月中,我做同样的事情,然后累积总和,最后在过去的12个月中只剩下1个字段。

例如现在是9月,其中将包括从2018年9月到2019年8月的月份。

10月是2018年10月至2019年9月。

这有帮助吗?

Jacky

CJones
4楼-- · 2020-09-02 01:21

嗨Abhilash,

昨晚我尝试了您的想法,并且效果很好。 我将手动生成的月份中的所有数字与您的公式生成器中生成的所有数字进行了比较。最终的总和也适用。

非常感谢您的帮助。

关于此,我还有一个问题。.如果我对项目号有一个分组,我想找到最终总消耗量的最大值。 该字段无法概括,我也无法使用运行总计功能。 所以我一直在寻找解决方法,并尝试了以下方法:

字段1(详细信息)

//Test_1
共享StringVar数组x;

x:= x + totext({@ Final sum});
1

字段2(放置在页脚中)

EvaluateAfter({@ Test_1});
打印记录;
共享StringVar数组x;

最大值(x);

它不起作用,因为"数组的维数必须是1到1000之间的整数。"

但是我在其中有些字段的值为0-因为第1个月和第2个月可能没有消耗,但第3到5个月等等。

您还有其他想法吗? 也许我只是想变得复杂。

谢谢

Jacky

南山jay
5楼-- · 2020-09-02 01:20

对于一个组,您首先需要"重置"所有变量:

1。 使用以下代码创建一个公式,并将其放在组页脚上:

共享编号var month1:= 0;
 共享号码var month2:= 0;
 共享号码var month3:= 0;
 共享号码var month4:= 0;
 共享号码var month5:= 0;
 共享号码var month6:= 0;
 共享号码var month7:= 0;
 共享号码var month8:= 0;
 共享号码var month9:= 0;
 共享号码var month10:= 0;
 共享号码var month11:= 0;
 共享号码var month12:= 0; 

2。 创建一个公式以将组总计存储在数组中。 将其放置在组页脚上:

共享的数字var array max_s;
 共享数字var x:= x + 1;
 redim保留max_s [x];
 max_s [x]:= {@最终和};
 '';
//其中{@Final sum}是显示每个组12个月总金额的公式。

3。 创建一个公式以显示最大值:

共享数var array max_s;
 最大值(max_s);
 
clever101
6楼-- · 2020-09-02 01:12

嗨Abhilash,

很抱歉收到您的答复,但我想在您提供反馈之前就测试一下您的想法,并且出门呆了几天。

非常感谢您的帮助。 实际上,这将在每个月初节省我很多时间-谢谢您。

Jacky。

一周热门 更多>