将实体绑定到odata操作?

2020-08-14 15:07发布

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

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


当我从列表中选择一个项目时,我正在尝试执行更新odata操作。 我知道该项目已绑定到页面

 {
 "属性":{
 " IsActive":" true"
 },
 "目标":{
 " EntitySet":" CompanyProfiles",
 " ReadLink":" {@ odata.readLink}",
 "服务":"/img/DOEDocumentMonitoring/Services/DOEDocumentMonitoring.service"
 },
 " _Type":" Action.Type.ODataService.UpdateEntity"
 }

 

这是mu update odata操作。 如何将所选项目绑定到此? 是否需要在查询选项中传递ID,例如" $ filter = Id eq?" ? 在这里我该怎么做? 当前,当我执行它时,我得到一个错误:

错误:查询应该只返回一个实体。 它返回了4 

我认为发生的是odata操作正在尝试更新所有4个项目,因此我应该以某种方式将所选项目绑定到该操作。

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

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


当我从列表中选择一个项目时,我正在尝试执行更新odata操作。 我知道该项目已绑定到页面

 {
 "属性":{
 " IsActive":" true"
 },
 "目标":{
 " EntitySet":" CompanyProfiles",
 " ReadLink":" {@ odata.readLink}",
 "服务":"/img/DOEDocumentMonitoring/Services/DOEDocumentMonitoring.service"
 },
 " _Type":" Action.Type.ODataService.UpdateEntity"
 }

 

这是mu update odata操作。 如何将所选项目绑定到此? 是否需要在查询选项中传递ID,例如" $ filter = Id eq?" ? 在这里我该怎么做? 当前,当我执行它时,我得到一个错误:

错误:查询应该只返回一个实体。 它返回了4 

我认为发生的是odata操作正在尝试更新所有4个项目,因此我应该以某种方式将所选项目绑定到该操作。

付费偷看设置
发送
5条回答
Violet凡
1楼 · 2020-08-14 15:54.采纳回答

Hi Bryan

executionAction函数是异步的并且返回一个Promise对象,您必须从规则中返回该Promise对象,以便MDK将确保在执行规则时actionBinding仍然可用。 例如 返回pageProxy.executeAction(...)

导出默认函数AcceptRejectRule(sectionedTableProxy){
 const pageProxy = sectionedTableProxy.getPageProxy();
     让bindingObject = pageProxy.getActionBinding();
 console.log(" OBJECT",JSON.stringify(bindingObject))

 如果(bindingObject.IsActive){
 返回pageProxy.executeAction('/DOEDocumentMonitoring/Actions/Odata/RejectFaclity.action')。then((result)=> {
 console.log("返回动作");
 console.log(result);
 })
 }其他{
 返回pageProxy.executeAction('/DOEDocumentMonitoring/Actions/Odata/AcceptFacility.action')。then((result)=> {
 console.log("返回动作");
 console.log(result);
 })
 }
 } 
派大星 ヾ
2楼-- · 2020-08-14 15:51

嗨,比尔,

感谢您的回复。 是的,我有自己的客户端,我刚刚打开了odata跟踪。 这是对的吗?

" DebugSettings":{
     " DebugODataProvider":是的,
     " ProfilingEnabled":是的,
     " TracingEnabled":是的,
     "类别":[
       " mdk.trace.action",
       " mdk.trace.api",
       " mdk.trace.app",
       " mdk.trace.binding",
       " mdk.trace.branding",
       " mdk.trace.core",
       " mdk.trace.i18n",
       " mdk.trace.lcms",
       " mdk.trace.logging",
       " mdk.trace.odata",
       " mdk.trace.onboarding",
       " mdk.trace.profiling",
       " mdk.trace.push",
       " mdk.trace.settings",
       " mdk.trace.targetpath",
       " mdk.trace.ui"
     ]
   } 

我在哪里可以看到结果? 我对SAP MDK相当陌生,因此对它所提供的服务一无所知。

以防万一,这是我的规则代码

导出默认功能AcceptRejectRule(sectionedTableProxy){
 const pageProxy = sectionedTableProxy.getPageProxy();
     让bindingObject = pageProxy.getActionBinding();
 console.log(" OBJECT",JSON.stringify(bindingObject))

 如果(bindingObject.IsActive){
 pageProxy.executeAction('/DOEDocumentMonitoring/Actions/Odata/RejectFaclity.action')。then((result)=> {
 console.log("返回动作");
 console.log(result);
 })
 }其他{
 pageProxy.executeAction('/DOEDocumentMonitoring/Actions/Odata/AcceptFacility.action')。then((result)=> {
 console.log("返回动作");
 console.log(result);
 })
 }
 }
 

这是附加到对象表的OnPress事件的,因此当我按元素时,将调用此规则。 绑定本身是正确的,因为console.log显示正确的对象。 问题是执行动作本身时,我在第一篇文章中输入了代码。

哎,真难
3楼-- · 2020-08-14 15:49

Bryan

是的,您只需要唯一地定位一条记录 为您的更新。 通常,{@ odata.readLink}是对单个记录的唯一引用。 从错误看来,它并不是唯一地指向一个记录。 在不了解您的服务和应用程序的情况下,很难肯定地说出更多信息。

如果您已经建立了自己的客户端,那么我建议您在BrandedSettings.json中打开odata跟踪,以更好地了解发生了什么。

-Bill

小c菟菟
4楼-- · 2020-08-14 15:55

正确,您启用DebugSettings。 我通常将我的设置如下,以避免过多我不关心的事情。

" DebugSettings":{
     " DebugODataProvider":是的,
     " ProfilingEnabled":否,
     " TracingEnabled":是的,
     "类别":[
       " mdk.trace.odata"
     ]
   } 

该信息将记录到客户端日志中。 如果您是在终端提示符下的仿真器/模拟器中运行客户端,那么您还会看到是否也在此回显。

是否可以共享元数据(通常可以)和

 console.log(" OBJECT",JSON.stringify(bindingObject))

命令也是如此?

-Bill

悠然的二货
5楼-- · 2020-08-14 15:59

比尔,

这是console.log的示例输出:

对象表名称{" @ odata.type":"#default.CompanyProfile"," @ odata.editLink":" CompanyProfiles(9L)"," @ odata.id":" CompanyProfiles(9L)","  @ odata.readLink":" CompanyProfiles(9L)"," Address":2," BusinessType":null," ContactNumber":" 7777-8888"," DtiNumber":null," EmailAddress":null," EmailSentDate"  :null," FaxNumber":null," Id":9," IsActive":null," MainRepresentative":null," Name":" DOE Gas company"," SecNumber":null," SpecifyNumber":null," 状态":" OK!"," TinNumber":null," TradeName":null,"版本":1,"网站":null," CompanyProfileJointVentureDetails":[]," CompanyProfileJointVentureDetails1":[]," CompanyProfileProductTypeDetails":  []} 

当然,当我按列表中的其他项目时,数据将有所不同。 另外,我已经发送了元数据,感谢您抽出宝贵的时间对此进行回复。

一周热门 更多>