在组中的多个列上排序

2020-09-12 19:08发布

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

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


我有一个报告,其中包含数据(学生姓,名,学生证和收集的分数总和),该报告按3个不同的列分组-诊所和学科以及学生证最终用户需要在运行时灵活地按任何列(学生的姓,名,学生ID和收集的分数)进行排序。 我无法使用参数和功能来执行此操作,因为收集的总和点被弄乱了,并且检索到的数据无效。

随附的报告设计副本。

此外,如果将学生的姓,名和学生ID串联在文本对象中,是否可以动态地进行相同的排序?

任何指导将不胜感激。

预先感谢,马里尼

grp-sort.jpg (74.4 kB)

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

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


我有一个报告,其中包含数据(学生姓,名,学生证和收集的分数总和),该报告按3个不同的列分组-诊所和学科以及学生证最终用户需要在运行时灵活地按任何列(学生的姓,名,学生ID和收集的分数)进行排序。 我无法使用参数和功能来执行此操作,因为收集的总和点被弄乱了,并且检索到的数据无效。

随附的报告设计副本。

此外,如果将学生的姓,名和学生ID串联在文本对象中,是否可以动态地进行相同的排序?

任何指导将不胜感激。

预先感谢,马里尼

grp-sort.jpg (74.4 kB)
付费偷看设置
发送
8条回答
SAP砖家
1楼 · 2020-09-12 19:18.采纳回答

您好,马里尼

请查看是否有效:

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

如果{?Sort} ='FirstName',则{PRODUCER.FirstName}

2。 使用以下代码创建一个名为" @SortLastName"的公式:

如果{?Sort} ='LastName',则{PRODUCER.LastName}

3。 使用以下代码创建一个名为" @SortProviderID"的公式:

如果{?Sort} ='ProviderId',则{PRODUCER.Producer}

4。 使用以下代码创建一个名为" @SortRelValue"的公式:

如果{?Sort} ='RVU',则{GRADITEM.RelValue}

5。 转到"插入摘要"选项>选择@SortFirstName作为"要汇总的字段">选择"最大"作为"求和"功能>将摘要字段放在组页脚#3上。

6。 对@SortLastName和@SortProviderID字段重复步骤5。 确保汇总功能设置为"最大"。

7。 对@SortRelValue重复步骤5,但是,将摘要函数选择为'SUM'。

8。 转到"组排序专家">选择要进行排序的组(通常是最上面的组)>在"为此组排序"下选择"全部">在"基于"中的每个公式字段的下方添加一个 摘要列表>为每个功能选择升序还是降序。

-Abhilash

浮生未央
2楼-- · 2020-09-12 19:32

很棒的Abhilash !! 这个解决方案是多么救星。

再次非常感谢

马里尼

Violet凡
3楼-- · 2020-09-12 19:25

如果收集的总和是一个要转换为文本以进行排序的数字,则必须在左侧加'0'才能使其正确排序。 例如,如果该字段中的最大位数为3,则可以使用如下公式进行排序:

right('00'+ {MyTable.SumPoints},3)

这样,字符串始终包含3个字符,小于100的数字在开始时用0填充,使它们成为3个字符。

例如,如果将数字转换为 字符串,您将得到以下排序:

1
11
2
3
300
4

但是,如果您使用 0,您将得到以下排序:

001
002
003
004
011
300

哪个是正确的顺序。

此外,是的,您可以将名称附加在一起以进行排序,但是由于某些姓氏比其他名称具有更多的字符,因此您可能无法获得真正想要的排序,因此您必须在每个字段的右侧填充 带空格的值以获得正确的排序。 有点像数字示例,但是相反。

-Dell

wang628962
4楼-- · 2020-09-12 19:29

谢谢克里斯蒂的快速回答,但是我该如何动态地做到这一点? 尤其是因为组排序顺序不显示任何列,而是"点数之和"。

Alawn_Xu
5楼-- · 2020-09-12 19:32

您说您有一个用于此的参数。 您将创建一个返回字符串的公式,然后对该字符串进行排序。 公式如下:

 Switch(
  {?SortParam} ='名称',{MyTable.LastName} +','+ {MyTable.FirstName},
  {?SortParam} ='StudentID',{MyTable.StudentID},
  {?SortParam} ='聚集点',对('00'+ ToText({MyTable.SumPoints},0),3)
  是的,'
 )

Switch语句就像一组带有成对元素的if ... then ... else ...语句集。 每对中的第一个元素是要查找的条件,第二个是条件为真时的操作。 如果其他条件都不为真,那么最后的"真"就是该做什么。 如果学生ID字段以数字形式存储在数据中,而不是以字符串形式存储,则还必须将其转换为字符串-所有返回值必须为相同的数据类型。 查看ToText()的帮助以获取所有参数。

-Dell

昵称总是被占用
6楼-- · 2020-09-12 19:33

您将在"公式编辑器"中创建公式,然后对其进行排序。 您可以张贴您正在使用的确切公式吗?

Baoming ROSE
7楼-- · 2020-09-12 19:31

我已将公式添加到页面标题中,但排序不起作用。

一周热门 更多>