CAP-从UI调用绑定的功能/动作

2020-08-18 20:55发布

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

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


大家好,
我正在使用NodeJs的CAP创建一个简单的批准方案,在该方案中,经理可以批准/拒绝其员工转发的请求。

由于fiori抱怨"未知操作",因此我目前正在全力以赴地从Fiori UI(列表报告/对象页面)调用绑定操作。

这是我的服务定义:

 service PlanningService @(
     要求:"经过身份验证的用户",
     路径:"计划",
     impl:" ./handlers/planning-service.js"
 ){


     @(限制:[{授予:['READ','WRITE'],发送至:'manager',其中:'approver_ID = $ user'},{授予:['WRITE'],发送至:'admin'}]  )
     实体MyApprovals作为db.AccessRequest上的投影
         动作{
             操作approveRequest()返回String;
             动作rejectRequest()返回String;
     };
 } 

我想从UI调用" approveRequest"或" rejectRequest",这是我在注释文件中所做的(为简洁起见,这里仅UI.LineItem):

使用@(注释srv.PlanningService.MyApprovals
   用户界面:{
        //为简洁起见,删除了其他注释元素
         订单项:[
             {$ Type:" UI.DataField",值:initiator.eMail},
             {$ Type:" UI.DataField",值:accessDate},
             {$ Type:" UI.DataField",值:locationFloor.location.name},
             {$ Type:" UI.DataField",值:locationFloor.name},
             {$ Type:" UI.DataField",值:requestStatus,严重性:严重性},
             {
               $ Type:'UI.DataFieldForAction',
//不知道在这里放置什么
操作:'srv.PlanningService.EntityContainer/MyApprovals_approveRequest',
标签:'Approve',
确定:true }, {
$ Type:'UI.DataFieldForAction', //不知道在这里放置什么
动作:'srv.PlanningService.EntityContainer/MyApprovals_rejectRequest',
标签:'拒绝',确定:true
} ] } )

我在Action标记中设置的只是我进行的1000次尝试中的最新一次...无论我在那儿进行了什么设置,Fiori都抱怨。
从REST客户端测试操作非常完美。

我无法在互联网上找到任何东西作为示例...我发现的唯一一个是在这里:Github 。 看一下代码的第96行,其语法与我使用的语法完全相同。

有人暗示任何人吗? 它应该很简单,但是我真的无法解决它:)

最好

罗伯托。

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

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


大家好,
我正在使用NodeJs的CAP创建一个简单的批准方案,在该方案中,经理可以批准/拒绝其员工转发的请求。

由于fiori抱怨"未知操作",因此我目前正在全力以赴地从Fiori UI(列表报告/对象页面)调用绑定操作。

这是我的服务定义:

 service PlanningService @(
     要求:"经过身份验证的用户",
     路径:"计划",
     impl:" ./handlers/planning-service.js"
 ){


     @(限制:[{授予:['READ','WRITE'],发送至:'manager',其中:'approver_ID = $ user'},{授予:['WRITE'],发送至:'admin'}]  )
     实体MyApprovals作为db.AccessRequest上的投影
         动作{
             操作approveRequest()返回String;
             动作rejectRequest()返回String;
     };
 } 

我想从UI调用" approveRequest"或" rejectRequest",这是我在注释文件中所做的(为简洁起见,这里仅UI.LineItem):

使用@(注释srv.PlanningService.MyApprovals
   用户界面:{
        //为简洁起见,删除了其他注释元素
         订单项:[
             {$ Type:" UI.DataField",值:initiator.eMail},
             {$ Type:" UI.DataField",值:accessDate},
             {$ Type:" UI.DataField",值:locationFloor.location.name},
             {$ Type:" UI.DataField",值:locationFloor.name},
             {$ Type:" UI.DataField",值:requestStatus,严重性:严重性},
             {
               $ Type:'UI.DataFieldForAction',
//不知道在这里放置什么
操作:'srv.PlanningService.EntityContainer/MyApprovals_approveRequest',
标签:'Approve',
确定:true }, {
$ Type:'UI.DataFieldForAction', //不知道在这里放置什么
动作:'srv.PlanningService.EntityContainer/MyApprovals_rejectRequest',
标签:'拒绝',确定:true
} ] } )

我在Action标记中设置的只是我进行的1000次尝试中的最新一次...无论我在那儿进行了什么设置,Fiori都抱怨。
从REST客户端测试操作非常完美。

我无法在互联网上找到任何东西作为示例...我发现的唯一一个是在这里:Github 。 看一下代码的第96行,其语法与我使用的语法完全相同。

有人暗示任何人吗? 它应该很简单,但是我真的无法解决它:)

最好

罗伯托。

付费偷看设置
发送
2条回答
Baoming ROSE
1楼-- · 2020-08-18 21:44

第二次更新:
我的问题没有任何意义,或者在任何情况下都有适当的解决方法。
绑定动作(顾名思义)绑定到其实体,因此我们可以找到 网址中所有必需的键。

使用CAP很容易,因为:

 const requestId = req.params [0]; //基于索引

因此,工作和问题均已解决:)

最好,
罗伯托。

shere_lin
2楼-- · 2020-08-18 21:57

更新:
经过一些调整,动作被触发了。
我改变了两件事:

  • 从服务中删除名称空间,因此可以直接通过
  • 进行引用
  • 从DataFieldForAction注释中删除了"确定"标签
  • 为了获得更好的可用性,请将" Inline"标签添加到DataFieldForAction批注中

结果现在是这样:

哪个提出了另一个问题...是否可以自动提供输入参数? 用户在他/她想要批准的元素的行上单击"批准"按钮,因此再次请求一些东西是没有意义的。

我确实尝试应用我阅读的内容此处,但似乎不起作用。

一周热门 更多>