禁止具有NULL值的列。 压制后也不应显示空格

2020-09-03 00:51发布

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

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


在我的子报告中,在提到的列列表之外(假设60列),我应该 仅显示具有值的列,并且如果该列的所有行的值均为NULL,则该列需要取消显示。

在列上进行有条件抑制后,将显示带有空白空间的列。 我不希望显示空白区域。

请参阅附件以获取预期格式

(56.5 kB)

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

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


在我的子报告中,在提到的列列表之外(假设60列),我应该 仅显示具有值的列,并且如果该列的所有行的值均为NULL,则该列需要取消显示。

在列上进行有条件抑制后,将显示带有空白空间的列。 我不希望显示空白区域。

请参阅附件以获取预期格式

(56.5 kB)
付费偷看设置
发送
2条回答
SAP小菜
1楼-- · 2020-09-03 01:08

这是一个挑战,因为,如您所见,仅压制该列仍留有该列所在的空间。

为此,您基本上必须为每个列编写三个公式, 一个用于确定列中是否有数据,一个用于列标题,另一个用于列数据。 这些公式可能写起来很冗长乏味,但是逻辑并不难。

1。 对于每个字段,创建一个类似于用于抑制当前字段的公式,但是如果有数据,则返回1,如果没有数据,则返回0。 在此示例中,我将其称为{@ Field1HasData},{@ Field2HasData}等。

2。为每个列标题创建一个公式,如下所示:

  {@ Col1Header}
 -------------
 NumberVar ColNum:= 1;
 本地StringVar ColHeader:="";
 如果{@ Field1HasData} = 1,则
   ColHeader:="字段1标头";
 否则,如果{@ Field2HasData} = 1,则
 (
   ColNum:= 2;
   ColHeader:="字段2标头";
 )
 否则,如果{@ Field3HasData}则
 (
   ColNum:= 3;
   ColHeader:="字段3标头";
 )
 ...
 否则,如果{@ Field60HasData} = 1,则
 (
   ColNum:= 60;
   ColHeader:=" Field 60 Header";
 );
 ColHeader
 --------------


 {@ Col2Header}
 --------------
 NumberVar ColNum;
 本地号码Var OldColNum:= ColNum;
 本地StringVar ColHeader:=""
 如果ColNum <60,则
 (
   如果OldColNum = 1且{@ Field2HasData} = 1,则
   (
     ColNum:= 2;
     ColHeader:="字段2标头";
   )
   否则,如果OldColNum = 2且{@ Field3HasData)= 1
   (
     ColNum:= 3;
     ColHeader:="字段3标头";
   )
   ...
   否则,如果{@ Field60HasData} = 1,则
   (
     ColNum:= 60;
     ColHeader:=" Field 60 Header";
   )
 );
 ColHeader 

为每个标头创建一个公式,从上一个公式中删除第一个" if"语句。

3。 为每个值创建一个类似于其标题公式的公式,但返回字段值而不是其标题。 这里的技巧是所有返回的值必须具有相同的数据类型。 因此,如果所有字段都有数字,则可以只使用这些值。 但是,如果数据类型不止一种,则需要将每个非字符串值转换为字符串。

4。 将每个标题和值公式放在报表中后,在抑制公式中,将抑制该列的标题是否为""。 例如,对于{@ Col1Header}和{@ Col1Value},抑制公式为:

 {@ Col1Header} ="" 

-Dell

吹牛啤
2楼-- · 2020-09-03 01:28
< p>感谢您证明戴尔方程式。 我们将尝试使用您共享的公式并更新您。

一周热门 更多>