点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
大家好,
im在Fiori Elements的" ListReport"中面临一个奇怪的问题,希望您能帮助我解决问题。 :)
我的要求是根据关联为启动表提供一些过滤器选项。 (例如,列表显示了一些SalesOrder标头,并且在对象页面上还提供了SalesOrder项目。现在,用户只想查看其中产品" XY"中包含项目的SalesOrder标头)
研究了CDS帮助后,我认为以下代码将起作用:
定义视图ZCDS_C_SalesOrder_00 从ZCDS_I_SalesOrder_00中选择为SalesOrder 将[0 .. *]与ZCDS_C_SalesOrderItems_00关联为_Items.SalesOrderUUID = SalesOrder.SalesOrderUUID上的_Items { .... @ UI.selectionField:[{元素:'_Items.Product',位置:2}] _项, }
但是不幸的是,即使在"更多过滤器"下,产品过滤器仍无法在过滤器栏中看到。
CDS帮助(指向帮助的链接)对UI.selectionField.element表示以下内容:
注释关联时必须使用,该值是关联视图元素的路径。 如果要过滤未在CDS视图中定义但在另一个CDS视图中定义的列的表,请使用此选项。
示例:您定义一个销售订单视图,您要在其中筛选业务伙伴的来源国。 但是,这些国家/地区信息不会保留在销售订单视图中,而是会保留在业务伙伴视图中。
所以我认为这正是我正在寻找的东西,但事实并非如此。 :-D
有人知道如何通过CDS注释实现要求吗?
与往常一样,任何信息都会受到赞赏。
感谢您的帮助!
Sascha
您好 Sascha Weidlich ,
在检查您的情况时,发现了以下两件事:
1。 SAP UI5不支持搜索基数1 .. *的关联,它仅支持1..1。 因此,您无法检查项目,但是我们可以根据业务伙伴国家(1..1)检查销售订单,如帮助中给出的示例。
https://帮助。 sap.com/doc/saphelp_nw75/7.5.5/zh-CN/17/d5ee74dd4e4e8f802aaf4fdd51fbc6/frameset.htm
2。 因此,我直接发送了项目过滤器,直接测试了odata服务。 但这返回了错误。
memberaccess运算符的左手表达基数错误(很多人不允许)
所以我想只支持1..1基数搜索。
BR,
Mahesh
经过一些进一步的调查,我发现即使在服务中生成的注释也是正确的。 所以我认为这与UI5有关,但我不知道如何解决此问题?
嗨,Sascha,我想知道您"偷偷摸摸"的解决方法的结果;)您是否正在使用基于CDS的oData? 过滤有效吗?
最诚挚的问候
嗨,萨沙,
我们在开发的应用程序中有类似的要求。
关联视图的主视图基数为0:*。
我创建了与您提到的视图相似的视图,并对其进行了测试。
但是,当有多个相同产品的项目时,我发现销售订单重复条目。
请在下面找到代码和屏幕截图。
能否请您告诉我们您是否能够实现同样的目标?
如果是这样,请告诉我步骤。
马丁·索默 Susmitha Pritam Durai Sascha Weidlich Sunil Kumar Maurya
您可以使用以下博客作为参考,以使用虚拟元素
>https://blogs.sap.com/2020/01/16/filtering-on-association-property-in-fiori-element-app-via-abap-cds-virtual-elements/
或者您可以使用表函数通过string_aggr函数将所有可搜索字段连接为一行,并使用"包含"过滤器从用户界面中进行搜索。
谢谢,
Mahesh
@ Susmitha Pritam Durai ,首先,这种方法不好,因为它更改了Root节点,意味着Header CDS已经更改,将重复相同的主键。
实现DPC_EXT的get_entitySet方法,或者如果您正在使用RAP,则可以使用自定义查询实现。
如果可能,不确定 Susmitha Pritam Durai ,
,但是请检查这种方法是否可行,使用amdp和table函数,并使用字符串聚合函数将多个项目行列连接为单个列,也许用户从UI中选择的任何内容都可以使用contains 并过滤掉? 不确定是否可以。
一周热门 更多>