SAP Design Studio-计算交叉表中的行数不起作用

2020-09-19 03:51发布

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

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


您好,亲爱的社区,

我在计算交叉表中的记录/成员时遇到问题。 我有5个过滤条件:

项目,OEsG,Costcenter,Group和VOS。

示例:

我过滤项目='12345'或项目='56789'正常,计数也正常。 (我在TextBox中创建了计数记录,可以在其中看到行数)。 例如,在这里我得到了1000个成员的计数。 现在,我想使用300到400之间的过滤标准" VOS"过滤数字范围。

交叉表中的成员更改为例如500条记录,但是文本框中的计数仍显示为1000。这仅在我尝试过滤范围时发生。

当我使过滤器标准VOS = 300、310、320、320 ... 400时,它工作正常。

->交叉表中的行更改为500,并且文本框中的计数也更改为500。

应用范围时,我只有计数问题。

能帮我吗?

我用于记录计数的代码如下:

DS_1.reloadData();

DS_1.loadDataSource();

var getarray = DS_1.getMembers(" _ wHEBMOoLEeaB-JtworBC7A",20000);

var membercount = getarray.length;

DS_1.setText("行数:" + membercount);

DS_1.setVisible(true);

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

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


您好,亲爱的社区,

我在计算交叉表中的记录/成员时遇到问题。 我有5个过滤条件:

项目,OEsG,Costcenter,Group和VOS。

示例:

我过滤项目='12345'或项目='56789'正常,计数也正常。 (我在TextBox中创建了计数记录,可以在其中看到行数)。 例如,在这里我得到了1000个成员的计数。 现在,我想使用300到400之间的过滤标准" VOS"过滤数字范围。

交叉表中的成员更改为例如500条记录,但是文本框中的计数仍显示为1000。这仅在我尝试过滤范围时发生。

当我使过滤器标准VOS = 300、310、320、320 ... 400时,它工作正常。

->交叉表中的行更改为500,并且文本框中的计数也更改为500。

应用范围时,我只有计数问题。

能帮我吗?

我用于记录计数的代码如下:

DS_1.reloadData();

DS_1.loadDataSource();

var getarray = DS_1.getMembers(" _ wHEBMOoLEeaB-JtworBC7A",20000);

var membercount = getarray.length;

DS_1.setText("行数:" + membercount);

DS_1.setVisible(true);

付费偷看设置
发送
8条回答
小c菟菟
1楼 · 2020-09-19 04:11.采纳回答

嗨Vu

使用 getMembers()并不是对数据结果集中的记录进行计数的可靠方法,因为实际上 getMembers() 从主数据而不是数据结果集中获取成员。 您可以尝试以下一种替代方法:

1)在数据源初始视图中,选择一种度量并将 Calculate Totals As 选项设置为" Total Number of 详细值";

2)在数据源的"更改结果集时"事件脚本中,指定类似于以下内容的代码:

 var rowCount = DS_1.getData("  <度量技术ID>",{});
 TEXT_1.setText(rowCount.formattedValue);
 

问候,

穆斯塔法。

闻人可可
2楼-- · 2020-09-19 04:22

嗨,穆斯塔法,

我的问题是我无法将范围应用于setVariableValueExt()。

您有一个主意,如何将范围应用于setVariableValueExt()? 在我的"编辑查询规范"中,我具有针对所有过滤条件(项目,OEsG,VOS,组,成本中心)的"在列表中"查询过滤器。

与过滤器有关的第一件事始终是setVariableValueExt(),因为在"初始视图"中有太多数据,因此无法显示。 而且普通滤镜不适用于有缺陷的初始视图。 这就是为什么我首先必须使用setVariableValueExt()的原因。

哎,真难
3楼-- · 2020-09-19 04:21

嗨,穆斯塔法,

对不起,以后我会注意这一点。 顺便说一句,您回答得这么快真的很不错,这非常有帮助。

是的,我的数据源是一个由SAP Information Design Tool构建的Universe。 Universe处理一个Oracle数据库。

我要显示关键绩效指标的过滤器面板和交叉表具有不同的数据源。

此后,我将把筛选器面板的数据源描述为" FP_DS",并将交叉表的数据源描述为" CT_DS"。

为什么我们必须使用两个不同的数据源?

->因为关键绩效指标必须基于300.000多个数据集进行计算。 在这300.000个数据集中,我们要在交叉表中显示大约8列,但是只能在过滤器面板中过滤其中的5列(因此必须将所有8列都放入"编辑查询规范"中 ),因此有超过20.000种可能的组合->过滤器甚至不会显示要过滤的数据。 (交叉表也是如此)。

所以我们制作了两个不同的数据源。

FP_DS包含来自CT_DS的不同值的值列表(否则它将是所有可能组合的交叉连接,并且将超过20.000个允许的组合)。 在"筛选器面板"的"应用时"事件中,我们进行了如下操作:

CT_DS.setVariableValueExt(" pmProject",FP_DS.getFilterExt(" ext_key_of_project"));

我们必须使用setVariableValueExt而不是setFilterExt,因为我们需要首先减少CT_DS中的数据量,否则该过滤器将不适用。 但是,使用setVariableValueExt应用范围不再有效。

希望您也能帮助我解决这个问题。

此致

Vu

微wx笑
4楼-- · 2020-09-19 04:06

你好穆斯塔法,

最后,我得到了它的一些数组解决方法:

var filter = Convert.replaceAll(DS_BZD_FILTER_DERIV.getFilterText(" _ 6wq-cPNyEeam2IYRVom_Uw"),";",",");
var counter = 0;
var filterArray = filter.split(", ");
var filterString ="";
var min ="";
var max ="";
var loopMark = 0;

filterArray.forEach(function( element,index){

if(element.indexOf("-")== -1){
if(counter == 0)
{
filterString = element;
计数器=计数器+1;
}
其他
{
filterString = filterString +";" +元素;
}
}
其他{
min = element.substring(0,element.indexOf("-")-1);
max = element.substring(element.indexOf("-")+ 2);
var loopArray = DS_BZD_FILTER_DERIV.getMembers(" _6wq-cPNyEeam2IYRVom_Uw",100);

loopArray.forEach(function(element2,index2){
if(Convert.stringToInt(element2.text)> = Convert.stringToInt(min)&& Convert.stringToInt (element2.text)<= Convert.stringToInt(max)){
如果(counter == 0){
filterString ="" + element2.text;
counter = counter + 1;
}
else {
filterString = filterString +"; " + element2.text;
}
}
});
}
});

U_FZG_LIST.setVariableValueExt(" pmVOS",filterString);

梦想连接
5楼-- · 2020-09-19 04:19

嗨,穆斯塔法,

我的问题是我无法将范围应用于setVariableValueExt()。

您有一个主意,如何将范围应用于setVariableValueExt()? 在我的"编辑查询规范"中,我具有针对所有过滤条件(项目,OEsG,VOS,组,成本中心)的"在列表中"查询过滤器。

一只江湖小虾
6楼-- · 2020-09-19 04:01

似乎唯一的其他选择是 曾经在Universe IDT中重新定义了输入提示。

土豆飞人
7楼-- · 2020-09-19 04:26

Hi Vu,

感谢您共享过滤解决方案。 不幸的是,您不得不跳过那些麻烦。 因此,如果我理解正确,则脚本似乎将范围转换为由单个定界成员值组成的字符串,然后该字符串与输入提示定义兼容。 是吗?

问候,

穆斯塔法。

一周热门 更多>