在交叉表中将当年数据与上一年数据进行比较

2020-09-15 06:53发布

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

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


嗨,

我正在尝试在包含年初至今(YTD)数据和去年(LYTD)数据的水晶报表中创建交叉表。

例如,对于日期范围:开始日期= 04/01/2018和结束日期05/31/2018,我需要能够得到以下结果:

………………2018年4月………….2018年5月………………年初至今………….LYTD(2017年4月+2017年5月)

订单………..25……………………..15………………..40………………..…36………………

产品………30…………………….40………………70………………………………..

任何建议将不胜感激。

谢谢

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

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


嗨,

我正在尝试在包含年初至今(YTD)数据和去年(LYTD)数据的水晶报表中创建交叉表。

例如,对于日期范围:开始日期= 04/01/2018和结束日期05/31/2018,我需要能够得到以下结果:

………………2018年4月………….2018年5月………………年初至今………….LYTD(2017年4月+2017年5月)

订单………..25……………………..15………………..40………………..…36………………

产品………30…………………….40………………70………………………………..

任何建议将不胜感激。

谢谢

付费偷看设置
发送
3条回答
黑丝骑士
1楼 · 2020-09-15 06:56.采纳回答

嗨,Alisia,

涉及太多步骤,但是您可以执行以下操作:

1。 设置带有交叉表的报表,该报表仅显示2018年4月和2018年5月的数据。我相信您已经根据需要进行了此设置?

插入"报告标题b"部分,并将交叉表移至该部分。 "报表标题a"部分将用于保存子报表。

2。 右键单击"总计"列标题>选择计算所得成员>插入子代。

3。 空白列应作为交叉表的第一列插入。 右键单击交叉表>高级计算>计算所得成员左上方的空白。

突出显示"计算所得成员"下的值("请输入描述")>在右侧找到"属性"框。 选择"插入评估"值作为"之后",然后单击"确定"。

这会将新的空白列移至交叉表的末尾。

4。 右键单击此新列的空白列标题单元格>计算所得成员>编辑ColumnValue公式,然后使用以下代码:

 DateTime(1890,01,01,00,00,00)

5。 再次右键单击列标题单元格>计算所得成员>编辑标题公式>输入以下内容:

" YTD" 

6。 右键单击此新列中的零值之一>计算所得成员>编辑计算公式>使用此代码:

 GetTotalValueFor("日期字段用作列")

用"交叉表"列中使用的数据库字段替换"用作列的日期字段"。 请注意,该字段是如何用双引号引起来的,而不是通常的大括号" {}"

7。 重复步骤2和3,以便在末尾插入新的空白列。 这将用于显示LYTD。

8。 插入此新列之后,重复步骤4并使用下面的ColumnValue代码:

 DateTime(1990,01,01,00,00,00)

9。 对该新列重复步骤5,并将其标题命名为:

" LYTD" 

10。 保存此报告的其他副本,并将其命名为"子报告"。 因此,您现在拥有同一份报告的两个副本。

11。 打开原始报告。

转到"插入子报表">选择"选择现有报表">单击"浏览",然后打开名为"子报表"的报表>单击"确定",并将其放在"报表标题a"上。

12。 双击子报表,以进入其设计模式。

13。 修改其选择公式,使其始终根据所选的日期范围返回上一年的数据。

14。 禁止除具有交叉表的部分以外的所有部分。

15。 右键单击标记为"总计"的行>选择行总计>单击取消总计。

16。 右键单击"总计"列>"常用"选项卡下的值之一,然后单击"抑制"旁边的公式按钮,然后使用以下代码:

共享的stringvar数组s;
 共享数字var x:= x + 1;
 redim保留s [x];  s [x]:=
 totext(CurrentFieldValue);
 正确; 

17。 右键单击交叉表左上方的空白>"交叉表专家">"自定义样式">"设置网格线格式">取消选中"显示网格线"

18。 右键单击"行值">"格式字段"之一,然后选择"抑制"

右键单击"摘要值">"格式字段">选择"抑制"

右键单击"列值">"格式字段">"选择抑制"

右键单击"总计"标签>"格式"字段>取消

您现在应该有一个空白报告

19。 返回主报表>右键单击" LYTD"列下的值之一>格式字段>单击"显示字符串"旁边的公式按钮>使用此代码:

共享的stringvar数组s;
 如果Year(GridRowColumnValue("日期字段用作列"))= 1900,则//用正确的数据库字段替换"日期字段用作列",并用双引号引起该示例
 s [CurrentRowIndex]其他
 totext(CurrentFieldValue);  

转到"部门专家">突出显示"报告标题a">单击"为以下部分加注"

就是这样!

请注意,主报表和子报表都应以相同的顺序返回相同的行,以使其正常工作。

让我知道这是怎么回事。

-Abhilash

梦想连接
2楼-- · 2020-09-15 07:13

非常感谢Abhilash !!!

Baoming ROSE
3楼-- · 2020-09-15 07:11

首先,您需要控制所选数据,假设您要使用结束日期参数 而不是当前日期

将参数{?EndDate}创建为日期类型

在选择语句中

((({YourdateField}> = date(year({?EndDate}),1,1)和{YourdateField} <= {?EndDate}))//今年的数据

OR

({YourdateField}> = date(year({?EndDate})-1,1,1)和{YourdateField} <= dateadd(" y",-1,{?EndDate}))//今年 数据

检查dateadd的语法以减去一年,此计算机上没有Crystal。 如果要使用其他过滤条件,则需要使用上面定义的所有括号。

对于交叉表,创建公式@Month

如果year({YourdateField})= Year(currentdate)-1,则为'LYTD'

其他

totext(Month({YourdateField})," 00",0,"")&"/"&Totext(Year({YourdateField}),0,"")////格式为05/2018。 您不能使用May/2018,因为数据无法正确排序

使用此公式作为CT中的列标题

伊恩

一周热门 更多>