CAP/Fiori对Fiori工作清单页面中的多个实体执行绑定操作

2020-08-15 06:29发布

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

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


尊敬的专家,

我正在尝试为Fiori工作清单页面中的多个实体运行自定义操作。 我发现以内联方式(针对1个实体)运行动作可以正常工作,但是对多个选定实体全局注释动作却无法实现。

这是我的服务定义:

 service ResellerService @(path:'manage-packages'){
     实体Apps作为db.Apps上的投影;
     实体Orders作为db.Orders上的投影;
     实体OrderItems作为db.OrderItems上的投影
         动作{
             动作包装()返回字符串;
         }
     ;
 }

 

以下是带有内联渲染的操作的Fiori工作清单注释:

用@(注释ResellerService.OrderItems
     用户界面:{
         订单项:[
             {$ Type:" UI.DataField",值:ID,标签:" {i18n> ID}"},
             {$ Type:" UI.DataField",值:parent.externalreference,标签:" {i18n> Order Reference}"},
             {$ Type:'UI.DataField',值:app.app,标签:'{i18n> App}'},
             {$ Type:'UI.DataField',值:app.description,标签:'{i18n> Description}'},
             {$ Type:'UI.DataField',值:数量,标签:'{i18n>免费数量}'},
             {$ Type:'UI.DataFieldForAction',
                 标签:" {i18n>创建许可证包}",
                 行动:" ResellerService.EntityContainer/OrderItems_packaging",
                 内联:true}
         ]
     }
 );

 

这将按预期方式进行渲染,并在行基础上调用动作按预期方式工作-有点奇怪的行为是,实体ID是在查询参数中而不是在有效负载中提交的,但是它可以工作。

但是,如果我将操作注释更改为非内联:

 {$ Type:'UI.DataFieldForAction',
  标签:" {i18n>创建许可证包}",
  行动:" ResellerService.EntityContainer/OrderItems_packaging",
  内联:false} 

该元素确实通过全局操作呈现了预期的效果:

但是,如果我现在在工作清单中选择一行或几行,那么在将任何内容发送到后端之前,都会出现以下错误(例如,选择了2行)。

如果我仍然选择继续,则将调用该操作,但是有效载荷为空且没有查询参数,因此我的后端无法知道用户为该操作调用的行。

由于该操作旨在将不同的项目捆绑在一起,因此内联调用是不可行的。

任何人都可以帮助调用多个实体的动作吗? 我有什么想念的吗?

最诚挚的问候,

Manuel

(50.0 kB)

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

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


尊敬的专家,

我正在尝试为Fiori工作清单页面中的多个实体运行自定义操作。 我发现以内联方式(针对1个实体)运行动作可以正常工作,但是对多个选定实体全局注释动作却无法实现。

这是我的服务定义:

 service ResellerService @(path:'manage-packages'){
     实体Apps作为db.Apps上的投影;
     实体Orders作为db.Orders上的投影;
     实体OrderItems作为db.OrderItems上的投影
         动作{
             动作包装()返回字符串;
         }
     ;
 }

 

以下是带有内联渲染的操作的Fiori工作清单注释:

用@(注释ResellerService.OrderItems
     用户界面:{
         订单项:[
             {$ Type:" UI.DataField",值:ID,标签:" {i18n> ID}"},
             {$ Type:" UI.DataField",值:parent.externalreference,标签:" {i18n> Order Reference}"},
             {$ Type:'UI.DataField',值:app.app,标签:'{i18n> App}'},
             {$ Type:'UI.DataField',值:app.description,标签:'{i18n> Description}'},
             {$ Type:'UI.DataField',值:数量,标签:'{i18n>免费数量}'},
             {$ Type:'UI.DataFieldForAction',
                 标签:" {i18n>创建许可证包}",
                 行动:" ResellerService.EntityContainer/OrderItems_packaging",
                 内联:true}
         ]
     }
 );

 

这将按预期方式进行渲染,并在行基础上调用动作按预期方式工作-有点奇怪的行为是,实体ID是在查询参数中而不是在有效负载中提交的,但是它可以工作。

但是,如果我将操作注释更改为非内联:

 {$ Type:'UI.DataFieldForAction',
  标签:" {i18n>创建许可证包}",
  行动:" ResellerService.EntityContainer/OrderItems_packaging",
  内联:false} 

该元素确实通过全局操作呈现了预期的效果:

但是,如果我现在在工作清单中选择一行或几行,那么在将任何内容发送到后端之前,都会出现以下错误(例如,选择了2行)。

如果我仍然选择继续,则将调用该操作,但是有效载荷为空且没有查询参数,因此我的后端无法知道用户为该操作调用的行。

由于该操作旨在将不同的项目捆绑在一起,因此内联调用是不可行的。

任何人都可以帮助调用多个实体的动作吗? 我有什么想念的吗?

最诚挚的问候,

Manuel

(50.0 kB)
付费偷看设置
发送
2条回答
hengyuye
1楼 · 2020-08-15 07:16.采纳回答

因此,根据我自己的尝试和错误,看来我所缺少的是:

1。 无法为Fiori中的多个实体调用绑定动作(不确定,但无法使其起作用)

2。 Fiori Elements仅将实体关键字段自动映射到动作参数(不会弹出用户),而不会将非关键字段映射到动作参数

我得到了以下解决方法:

将操作定义为未绑定,并向Fiori WorkList模板添加ListReport控制器扩展,以便我可以对操作参数进行客户端控制。 我正在使用

从UI5扩展API调用操作

https://sapui5.hana.ondemand.com/#/api/sap.suite.ui.generic.template.ListReport.extensionAPI.ExtensionAPI%23methods/invokeActions

Cikesha
2楼-- · 2020-08-15 07:00

你好 曼努埃尔,

我也一直在研究动作,发现您的问题和答案是有帮助的。 感谢您为撰写问题和发表您自己的发现而付出的努力。 享受CAP!

一周热门 更多>