如果一行更新失败,SAPUI5 V2 OData Update Batch调用仅给出一个响应

2020-09-10 01:08发布

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

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


专家您好,

我遇到了一个奇怪的问题,我试图在SAPUI5 V2 Odata模型中使用批处理操作进行更新。 我正在使用下面的代码来实现这一目标-

 oModel.setDefaultBindingMode(sap.ui.model.BindingMode.TwoWay);
 oModel.setUseBatch(true);
 oModel.setDeferredGroups([" foo"]);
 var mParameters = {
 groupId:" foo",
 成功:function(odata){},
 错误:function(odata){}};
//将所有行收集到BatchChanges中
 for(var m = 0; m 
 

使用上面的代码,如果任何行中没有更新错误,我将得到正确的响应,但是如果任何行更新失败,则我将不会获得所有响应,仅得到失败的响应。

为完全理解,我提供了以下两种情况的请求和答复-

在一个变更集中有错误时请求有效负载-

-batch_f637-631d-aeed
 内容类型:多部分/混合;  boundary = changeset_3c85-7b07-55c9


 --changeset_3c85-7b07-55c9
 内容类型:application/http
 内容传输编码:二进制


 合并EntitySet(key ='XXXXXX')HTTP/1.1
 sap-contextid-accept:标头
 接受:application/json
 接受语言:zh
 DataServiceVersion:2.0
 MaxDataServiceVersion:2.0
 SAP关闭取消:true
 内容类型:application/json
 内容长度:195

 <我的第1行数据-没有任何错误>

 --changeset_3c85-7b07-55c9
 内容类型:application/http
 内容传输编码:二进制


 合并EntitySet(key ='YYYYY')HTTP/1.1
 sap-contextid-accept:标头
 接受:application/json
 接受语言:zh
 DataServiceVersion:2.0
 MaxDataServiceVersion:2.0
 SAP关闭取消:true
 内容类型:application/json
 内容长度:195


 <我的第2行数据-有任何错误,例如 表格中的键YYYYY不可用>


 --changeset_3c85-7b07-55c9--
 --batch_f637-631d-aeed--
 

对以上请求的响应(当一个变更集中有错误时)-显然我没有收到成功行的成功响应。

-4575CB054C5C353865B3B3115238F2640
 内容类型:application/http
 内容长度:894
 内容传输编码:二进制


 HTTP/1.1 400错误请求
 内容类型:application/json; charset = utf-8
 内容长度:774
 数据服务版本:1.0


 {"错误":{"代码":" ZEWM/002","消息":{"语言":" en","值":"无效密钥。"},"内部错误":{"应用程序":{  " component_id":""," service_namespace":"/img/SAP/"," service_id":" Test_SRV"," service_version":" 0001"}," transactionid":" 4A641AE4AE290000E005C6BE87770342"," timestamp":"","  Error_Resolution":{" SAP_Transaction":""," SAP_Note":"请参阅SAP Note 1797736进行错误分析(https://service.sap.com/sap/support/notes/1797736)","Batch_SAP_Note":"请参阅 有关使用$ batch(https://service.sap.com/sap/support/notes/1869434)"}," errordetails":[{"代码":" ZXXX/002","消息的详细信息,请参阅SAP注释1869434  ":"无效密钥。"," propertyref":"","严重性":"错误","目标":""},{"代码":"/img/IWBEP/CX_SD_GEN_DPC_BUSINS","消息":"无效密钥 。"," propertyref":"","严重性":"错误","目标":""}]}}}
 --4575CB054C5C353865B3B3115238F2640--


 

但是,如果两行都正确且没有错误,我将获得有效答复以下的答复-

-2CF0A29AD45ACBEAEC7EF1848F06E9010
 内容类型:多部分/混合; 边界= 2CF0A29AD45ACBEAEC7EF1848F06E9011
 内容长度:437


 --2CF0A29AD45ACBEAEC7EF1848F06E9011
 内容类型:application/http
 内容长度:71
 内容传输编码:二进制


 HTTP/1.1 204无内容
 内容长度:0
 数据服务版本:2.0




 --2CF0A29AD45ACBEAEC7EF1848F06E9011
 内容类型:application/http
 内容长度:71
 内容传输编码:二进制


 HTTP/1.1 204无内容
 内容长度:0
 数据服务版本:2.0




 --2CF0A29AD45ACBEAEC7EF1848F06E9011--


 --2CF0A29AD45ACBEAEC7EF1848F06E9010--
 

如您所见,万一任何行更新失败,我都无法得到正确的响应,请帮助我解决此问题。

此致

Ravi

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

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


专家您好,

我遇到了一个奇怪的问题,我试图在SAPUI5 V2 Odata模型中使用批处理操作进行更新。 我正在使用下面的代码来实现这一目标-

 oModel.setDefaultBindingMode(sap.ui.model.BindingMode.TwoWay);
 oModel.setUseBatch(true);
 oModel.setDeferredGroups([" foo"]);
 var mParameters = {
 groupId:" foo",
 成功:function(odata){},
 错误:function(odata){}};
//将所有行收集到BatchChanges中
 for(var m = 0; m 
 

使用上面的代码,如果任何行中没有更新错误,我将得到正确的响应,但是如果任何行更新失败,则我将不会获得所有响应,仅得到失败的响应。

为完全理解,我提供了以下两种情况的请求和答复-

在一个变更集中有错误时请求有效负载-

-batch_f637-631d-aeed
 内容类型:多部分/混合;  boundary = changeset_3c85-7b07-55c9


 --changeset_3c85-7b07-55c9
 内容类型:application/http
 内容传输编码:二进制


 合并EntitySet(key ='XXXXXX')HTTP/1.1
 sap-contextid-accept:标头
 接受:application/json
 接受语言:zh
 DataServiceVersion:2.0
 MaxDataServiceVersion:2.0
 SAP关闭取消:true
 内容类型:application/json
 内容长度:195

 <我的第1行数据-没有任何错误>

 --changeset_3c85-7b07-55c9
 内容类型:application/http
 内容传输编码:二进制


 合并EntitySet(key ='YYYYY')HTTP/1.1
 sap-contextid-accept:标头
 接受:application/json
 接受语言:zh
 DataServiceVersion:2.0
 MaxDataServiceVersion:2.0
 SAP关闭取消:true
 内容类型:application/json
 内容长度:195


 <我的第2行数据-有任何错误,例如 表格中的键YYYYY不可用>


 --changeset_3c85-7b07-55c9--
 --batch_f637-631d-aeed--
 

对以上请求的响应(当一个变更集中有错误时)-显然我没有收到成功行的成功响应。

-4575CB054C5C353865B3B3115238F2640
 内容类型:application/http
 内容长度:894
 内容传输编码:二进制


 HTTP/1.1 400错误请求
 内容类型:application/json; charset = utf-8
 内容长度:774
 数据服务版本:1.0


 {"错误":{"代码":" ZEWM/002","消息":{"语言":" en","值":"无效密钥。"},"内部错误":{"应用程序":{  " component_id":""," service_namespace":"/img/SAP/"," service_id":" Test_SRV"," service_version":" 0001"}," transactionid":" 4A641AE4AE290000E005C6BE87770342"," timestamp":"","  Error_Resolution":{" SAP_Transaction":""," SAP_Note":"请参阅SAP Note 1797736进行错误分析(https://service.sap.com/sap/support/notes/1797736)","Batch_SAP_Note":"请参阅 有关使用$ batch(https://service.sap.com/sap/support/notes/1869434)"}," errordetails":[{"代码":" ZXXX/002","消息的详细信息,请参阅SAP注释1869434  ":"无效密钥。"," propertyref":"","严重性":"错误","目标":""},{"代码":"/img/IWBEP/CX_SD_GEN_DPC_BUSINS","消息":"无效密钥 。"," propertyref":"","严重性":"错误","目标":""}]}}}
 --4575CB054C5C353865B3B3115238F2640--


 

但是,如果两行都正确且没有错误,我将获得有效答复以下的答复-

-2CF0A29AD45ACBEAEC7EF1848F06E9010
 内容类型:多部分/混合; 边界= 2CF0A29AD45ACBEAEC7EF1848F06E9011
 内容长度:437


 --2CF0A29AD45ACBEAEC7EF1848F06E9011
 内容类型:application/http
 内容长度:71
 内容传输编码:二进制


 HTTP/1.1 204无内容
 内容长度:0
 数据服务版本:2.0




 --2CF0A29AD45ACBEAEC7EF1848F06E9011
 内容类型:application/http
 内容长度:71
 内容传输编码:二进制


 HTTP/1.1 204无内容
 内容长度:0
 数据服务版本:2.0




 --2CF0A29AD45ACBEAEC7EF1848F06E9011--


 --2CF0A29AD45ACBEAEC7EF1848F06E9010--
 

如您所见,万一任何行更新失败,我都无法得到正确的响应,请帮助我解决此问题。

此致

Ravi

付费偷看设置
发送
3条回答
南山jay
1楼-- · 2020-09-10 01:59

这就是它的工作方式,

一个或全部

Alawn_Xu
2楼-- · 2020-09-10 01:45

感谢Jun的宝贵宝贵意见。

有一种方法,如果一行有错误,则只有变更集提供者错误响应和其他执行成功消息。

此致

Ravi

蓋茨
3楼-- · 2020-09-10 01:35

您好专家

当一个变更集中有错误时,我们是否有办法解决,仅给出错误响应并通过成功消息执行其他操作?

谢谢

Ravi

一周热门 更多>