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

Eduardo,

在这种情况下,自动过滤器将对您不起作用。 筛选器操作当前仅支持与指定字段的完全匹配。 我们对路线图进行了增强,以支持过滤器的数据查询构建器,但在此之前,您需要实现自己的自定义过滤器作为解决方法。

在过滤器页面中,您将不希望将列表选择器映射为返回值,而是可能将所选值存储在上一页(列表页面)的客户端数据中。 在列表页面上,您将需要为查询选项编写一条规则,以检查存储的过滤器值并解析并根据您的自定义逻辑(在这种情况下,应用为子字符串)应用于查询选项。

通过使用一些其他规则,您将能够实现过滤器相同的基本行为。

-Bill

一周热门 更多>