Fiori Elements:根据关联属性进行过滤

2020-08-25 09:02发布

         点击此处--->   EasySAP.com群内免费提供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

         点击此处--->   EasySAP.com群内免费提供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

付费偷看设置
发送
7条回答
lukcy2020
1楼 · 2020-08-25 09:35.采纳回答

您好 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

蓋茨
2楼-- · 2020-08-25 09:29

经过一些进一步的调查,我发现即使在服务中生成的注释也是正确的。 所以我认为这与UI5有关,但我不知道如何解决此问题?

 
   <收藏>
      to_Items/Product 
   
  
空代码
3楼-- · 2020-08-25 09:45

嗨,Sascha,我想知道您"偷偷摸摸"的解决方法的结果;)您是否正在使用基于CDS的oData? 过滤有效吗?

最诚挚的问候

微wx笑
4楼-- · 2020-08-25 09:32

嗨,萨沙,

我们在开发的应用程序中有类似的要求。

关联视图的主视图基数为0:*。

我创建了与您提到的视图相似的视图,并对其进行了测试。

但是,当有多个相同产品的项目时,我发现销售订单重复条目。

请在下面找到代码和屏幕截图。

能否请您告诉我们您是否能够实现同样的目标?

如果是这样,请告诉我步骤。

定义视图ZC_SO_HEAD
   从I_SalesDocument中选择作为头
   将[0 .. *]与ZC_SO_ITEM关联为_Items.SalesDocument = $ projection.SalesDocument上的_Items
   [0..1]与ZC_SO_ITEM的关联,作为_VHItems.SalesDocument = $ projection.SalesDocument上的_VHItems
 {
 ....

       @ ObjectModel.association.type:[#TO_COMPOSITION_CHILD]
       @ UI.selectionField:[{元素:'_Items.Material',位置:4}]
       _项,
       _VHItems
 } 

5楼-- · 2020-08-25 09:39

马丁·索默 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

四川大学会员
6楼-- · 2020-08-25 09:33

@ Susmitha Pritam Durai ,首先,这种方法不好,因为它更改了Root节点,意味着Header CDS已经更改,将重复相同的主键。
实现DPC_EXT的get_entitySet方法,或者如果您正在使用RAP,则可以使用自定义查询实现。

SC_Yao
7楼-- · 2020-08-25 09:44

如果可能,不确定 Susmitha Pritam Durai

,但是请检查这种方法是否可行,使用amdp和table函数,并使用字符串聚合函数将多个项目行列连接为单个列,也许用户从UI中选择的任何内容都可以使用contains 并过滤掉? 不确定是否可以。

一周热门 更多>