相关服务中串联值属性的带有列表选择器的MDK筛选器操作

2020-08-14 17:23发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嗨,团队。 我正在开发一个MD...

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

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


嗨,团队。

我正在开发一个MDK应用程序,试图应用从列表选择器自动继承的某些过滤器,而该过滤器是在与可过滤对象表相关的过滤器操作中调用的过滤器页面中的。

对于该属性为直接值的列表选择器,它可以按预期工作。

例如:

FilterProperty:" COUNTRY_ID"

为OData服务/实体生成的过滤器:" $ filter = COUNTRY_ID eq'US'"

但是,当在相关的OData服务/实体中具有连接值的属性时,当前存在一种情况。

属性值示例:TAG_CONCAT ='H00002,H00035,H00435,H00878'

如果我们在列表选择器中通过以下方式设置FilterProperty:

FilterProperty:" TAG_CONCAT"

为OData生成的过滤器类似于:" $ filter =(TAG_CONCAT eq'H00035'或TAG_CONCAT eq'H00878')"

在大多数情况下,它们不会检索所需的行。

针对这种情况的解决方案(在Fiori/Web中的等效应用程序中实现)是使用Odata函数" substringof"以使条件如下:

" $ filter =(substringof('H00035',TAG_CONCAT)或substringof('H00878',TAG_CONCAT))"

我已经在列表选择器中尝试过这种方式:

FilterProperty:" substringof(,TAG_CONCAT)"

但是正在生成类似以下的过滤器:

" $ filter =(substringof(,TAG_CONCAT)eq'H00035'或substringof(,TAG_CONCAT)eq'H00878'))

并且不起作用。

我已经研究了一些地方,以尝试覆盖或更改生成的过滤器,因此我可以对其进行修复,并保留"列表选择器"功能,以及通常的"过滤器页面"功能,但没有成功。

我也尝试过在对象表透明度的查询选项中添加一些过滤器,但似乎如果它已与操作中的"可过滤"对象相关,则QueryOptions中的过滤器将被丢弃。

在这种情况下,请评论可能的选项或解决方法。

在此先感谢您的帮助。

最好的问候

爱德华多

4条回答
大简至美
2020-08-14 17:39 .采纳回答

如果希望自定义过滤器页面以与标准过滤器页面相同的方式显示,则仍可以使用"过滤器操作"。 我将如何在OnLoaded中设置当前过滤器。 这是我的自定义过滤器的示例。

通过调用以下内容并将yearFilter存储到上一页中的Client Data中,我得到要存储的选择器值

 let yearFilter = clientAPI.evaluateTargetPath('#Page:CustomFilter/#  Control:YearPicker/#Value'); 

因为我允许从列表选择器中进行多个选择,所以我在OnLoaded中设置给控件的值必须是返回值的数组。 由于我存储在客户数据中的数组包含返回值和显示值,因此我需要构造一个新的返回值数组以设置到选择器。

导出默认函数SetFilterDefaults(context){
   让prevPage = context.evaluateTargetPathForAPI('#Page:-Previous');
   让clientData = prevPage.getClientData();
   让yearFilter = clientData.yearFilter;
   让yearPicker = context.evaluateTargetPathForAPI('#Page:CustomFilter/#Control:YearPicker');
   如果(yearFilter && yearFilter [0]){
     让我们选择= [];
     for(让i = 0; i                                                                     

一周热门 更多>