SAP分析设计器中的级联过滤器

2020-08-16 18:38发布

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

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


专家们,

我在分析应用程序中添加了两个小部件("下拉过滤器"),即客户类型和客户ID。

我的要求是,当我选择"客户类型"说" ABC"时,与"客户类型= ABC"相关的所有客户ID仅在下拉过滤器-Custonmer ID中对我可见。 请让我知道如何实现。

下面是我目前完成的实现,但是我无法级联效果。

当前,我已经在Canvas的onInialization()方法中初始化了两个下拉过滤器,以使用后端可用的主数据填充它。

onInitailzation()方法:用主数据填充下拉过滤器

对于客户类型:

var i = 0;

var customerType = Chart_1.getDataSource()。getMembers(" Customer_Type");

for(i = 0; i

dropdown1.addItem(customerType [i] .id,customerType [i] .description);

}

对于客户ID:

var j = 0;

var customerID = Chart_1.getDataSource()。getMembers(" Customer_ID");

for(j = 0; j

dropdown2.addItem(customerID [i] .id,customerID [j] .description);

}

然后我在下拉过滤器 onSelect()方法中添加了代码,以将用户选择的键传递给全局变量VAR_CUSTOMER_TYPE和VAR_CUSTOMER_ID。

onSelect()方法下拉菜单1和下拉菜单2:

VAR_CUSTOMER_ID = dropdown_1.getSelectedKey();

VAR_CUSTOMER_TYPE = dropdown_2.getSelectedKey();

最后,我创建了一个按钮-应用过滤器,然后单击该按钮将过滤器应用于所有图表:

图表_1.getDataSource()。setDimensionFilter(" dropdown_1",VAR_CUSTOMER_ID);

图表_1.getDataSource()。setDimensionFilter(" dropdown_2",VAR_CUSTOMER_TYPE);

图表_2.getDataSource()。setDimensionFilter(" dropdown_1",VAR_CUSTOMER_ID);

图表_2.getDataSource()。setDimensionFilter(" dropdown_2",VAR_CUSTOMER_TYPE);

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

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


专家们,

我在分析应用程序中添加了两个小部件("下拉过滤器"),即客户类型和客户ID。

我的要求是,当我选择"客户类型"说" ABC"时,与"客户类型= ABC"相关的所有客户ID仅在下拉过滤器-Custonmer ID中对我可见。 请让我知道如何实现。

下面是我目前完成的实现,但是我无法级联效果。

当前,我已经在Canvas的onInialization()方法中初始化了两个下拉过滤器,以使用后端可用的主数据填充它。

onInitailzation()方法:用主数据填充下拉过滤器

对于客户类型:

var i = 0;

var customerType = Chart_1.getDataSource()。getMembers(" Customer_Type");

for(i = 0; i

dropdown1.addItem(customerType [i] .id,customerType [i] .description);

}

对于客户ID:

var j = 0;

var customerID = Chart_1.getDataSource()。getMembers(" Customer_ID");

for(j = 0; j

dropdown2.addItem(customerID [i] .id,customerID [j] .description);

}

然后我在下拉过滤器 onSelect()方法中添加了代码,以将用户选择的键传递给全局变量VAR_CUSTOMER_TYPE和VAR_CUSTOMER_ID。

onSelect()方法下拉菜单1和下拉菜单2:

VAR_CUSTOMER_ID = dropdown_1.getSelectedKey();

VAR_CUSTOMER_TYPE = dropdown_2.getSelectedKey();

最后,我创建了一个按钮-应用过滤器,然后单击该按钮将过滤器应用于所有图表:

图表_1.getDataSource()。setDimensionFilter(" dropdown_1",VAR_CUSTOMER_ID);

图表_1.getDataSource()。setDimensionFilter(" dropdown_2",VAR_CUSTOMER_TYPE);

图表_2.getDataSource()。setDimensionFilter(" dropdown_1",VAR_CUSTOMER_ID);

图表_2.getDataSource()。setDimensionFilter(" dropdown_2",VAR_CUSTOMER_TYPE);

付费偷看设置
发送
7条回答
风早神人
1楼-- · 2020-08-16 19:09

您好,Abhimanyu,

我以前遇到过这个问题。 不幸的是,您不能使用标准的过滤器功能,也不能使用getMembers的某些变体来获取结果集的成员。 getMembers API接受主数据条目,而不是经过过滤的结果集。 您需要迭代检查以查看所选的客户类型和每个客户ID在数据集中是否有效。

假设dropdown1是客户类型的下拉列表

假设dropdown2是客户ID的下拉列表

假设table1是一个存储客户数据的表,您将保留该数据以填充级联下拉列表

您需要将此脚本放置在dropdown1的onSelect脚本中:

//初始化
 var customer_type = dropdown1.getSelectedKey();
 var customer_id_list = table1.getDataSource()。getMembers(" Customer_ID");
 dropdown2.removeAllItems();
 dropdown2.addItem(" All"," All"); //假设您要输入"全部"客户ID
 var i = 0;

//初始化数据单元格以检查其有效性。 度量名称,Customer_Type和Customer_ID的初始值是任意的
 var cell = table1.getDataSource()。getData({" Customer_Type":customer_type," Customer_ID":""," Account":" [Account]。[parentId]。&[MEASURE_1]"});

//填充Customer_ID下拉列表
 对于(i = 0; i 
 

希望这会有所帮助!

一周热门 更多>