如何从SAPUI5应用程序修补操作以进行OData更新?

2020-08-16 01:45发布

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

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


大家好,

我正在寻找通过SAPUI5应用程序对OData Service(OData V2)进行补丁更新的解决方案或步骤。

当前,我正在使用以下代码更新数据

 var oData = {
     产品编号:999,
     产品名称:" myProductUpdated"
 }
 oModel.update("/img/Products(999)",oData,{成功:mySuccessHandler,错误:myErrorHandler}); 

在上面的示例中,我需要为我的实体集传递整个有效负载。 无需传递整个有效负载,我只需要发送键和更新的字段即可。

如何在SAPUI5中做到这一点?

谢谢,

Jayakrishnan。

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

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


大家好,

我正在寻找通过SAPUI5应用程序对OData Service(OData V2)进行补丁更新的解决方案或步骤。

当前,我正在使用以下代码更新数据

 var oData = {
     产品编号:999,
     产品名称:" myProductUpdated"
 }
 oModel.update("/img/Products(999)",oData,{成功:mySuccessHandler,错误:myErrorHandler}); 

在上面的示例中,我需要为我的实体集传递整个有效负载。 无需传递整个有效负载,我只需要发送键和更新的字段即可。

如何在SAPUI5中做到这一点?

谢谢,

Jayakrishnan。

付费偷看设置
发送
6条回答
蓋茨
1楼-- · 2020-08-16 02:16

您好Jayakrishnan,

更新调用有两种方法,一种是MERGE,另一种是PUT。 您可以在manifest.json中甚至在调用update调用之前设置要使用的更新方法。

"":{
                 " dataSource":" mainService",
                 "设置":{
                     " defaultUpdateMethod":" PUT",
 
 oDataModel.defaultUpdateMethod(sap.ui.model.odata.UpdateMethod.Put); 

据我了解,MERGE需要发送完整的有效负载,而PUT仅需要您要更新的属性。

但是在这两种情况下,您都必须发送实体集的所有密钥,因为oData可以使用该密钥来了解哪个实体需要更新。

谢谢

Prashil

黑丝骑士
2楼-- · 2020-08-16 02:31

感谢 Prashil Wasnik 。 因此,我可以在有效载荷中发送的只是属性需要与密钥一起更新,

像打击。

 var oEntity = {
  产品编号:999,
  产品名称:" myProductUpdated",
  城市:"德里",
  国家:"印度"
 }

 var oUpdatePayload = {
 产品名称:" xyz"
 };

 oModel.update("/img/Products(999)",oUpdatePayload,{成功:mySuccessHandler,错误:myErrorHandler});
 

但是我说错了,

 defaultUpdateMethod不是函数。

我正在使用OData v2。

谢谢,

此致

JK。

hengyuye
3楼-- · 2020-08-16 02:28

嗨Jayakrishnan,

对不起,我认为defaultUpdateMethod是一个方法,但这是一个属性。

您可以更新

 oModel.sDefaultUpdateMethod = sap.ui.model.odata.UpdateMethod.PUT; 

但是建议您在manifest.json中进行更改。

谢谢

Prashil

槿木_熙
4楼-- · 2020-08-16 02:38

好, Prashil Wasnik ,感谢您的宝贵 注释。 我将尝试此步骤。

谢谢。

95年老男孩
5楼-- · 2020-08-16 02:32

嗨Jayakrishnan,

您的问题是令人误解的,如果粘贴现在发送的内容和期望的内容,这将很清楚。

谢谢

Prashil

Baoming ROSE
6楼-- · 2020-08-16 02:40

您好 Prashil Wasnik ,感谢您的评论。

我想要的是,我有一个具有10个具有键属性的实体。 因此,在尝试更新任何一个属性时,我需要使用密钥发送整个有效负载。

示例:

 var oIntialData = {
  产品编号:999,
  产品名称:" myProductUpdated",
  城市:"德里",
  国家:"印度"
 }

 在上述实体中,我需要多带带更新产品名称。 那么如何将特定属性多带带传递给

 后端,而不是发送整个结构?


 我可以多带带发送产品ID和产品名称吗? 作为补丁请求?

 在下面的代码片段中,变量oData带有所有四个属性,对吗?


 var oData = {
     产品编号:999,
     产品名称:" myProductUpdated"}
 oModel.update("/img/Products(999)",oData,{成功:mySuccessHandler,错误:myErrorHandler}); 

一周热门 更多>