相关服务中串联值属性的带有列表选择器的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条回答
Haoba3210
2020-08-14 17:42

嗨,比尔。

通过仅发送具有setValue()函数返回值的JSON数组,解决了该问题。

关于使用过滤器操作,最初我尝试使用它,但是它迫使我分配一个可过滤的对象(在这种情况下,列表页面中的相关对象表)。 这样可以避免在相关的QueryOptions规则上影响查询的行为。 实际上,我试图在主页上为该Filterable对象使用一个虚拟对象表,但是那里从未传递过on过滤器成功操作。 最终,我通过正常的导航操作实现了这一点,并且效果很好。

感谢您的快速回复和所有帮助。

最好的问候

爱德华多

---附加评论:

之所以没有使用"筛选器操作",是因为"查询选项"不适用于我们,仅在iOS中,当我们为哪个实体提供服务时,DataQueryBuilder()(无法避免默认的MDK搜索) 支持参数,如下所示:

//InputParams( ='')/结果

此实体是使用Hana后端中的" xsodata"工件创建的。

希望并希望您能对此进行审核,以避免我们实施某些变通办法。

感谢和问候

Eduardo

一周热门 更多>