无法使用SAP Cloud SDK的虚拟数据模型更新OData实体

2020-09-02 04:34发布

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

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


我已通过云连接器将我的Cloud App连接到前提系统。 我尝试使用以下代码创建新的业务合作伙伴:

异步函数fnExecuteCreateRequest(eBusinessPartner){
 尝试{
 var destination =等待coreSDK.useOrFetchDestination({
 destinationName:" myDestination"
 });

 var响应=等待BusinessPartner.requestBuilder()
 .create(eBusinessPartner)
 .execute(目的地);
 返回响应;
 }抓住(e){
 返回{
 "确认":"失败",
 "消息":e.stack,
 }
 }
 }
 

请求成功,并且在前提系统中创建了业务伙伴。 但是当我按以下代码尝试更新请求时:

异步函数fnExecuteUpdateRequest(eBusinessPartner){
 尝试{
 var destination =等待coreSDK.useOrFetchDestination({
 destinationName:" myDestination"
 });

 var响应=等待BusinessPartner.requestBuilder()
 .update(eBusinessPartner)
 .ignoreVersionIdentifier()
 .execute(目的地);
 返回响应;
 }抓住(e){
 返回{
 "确认":"失败",
 "消息":e.stack,
 }
 }
 }
 

请求响应没有错误,但是具有我传递给它的相同数据。

 {
     " businessPartner":" 0000000076",
     " businessPartnerCategory":" 1",
     " firstName":" fName",
     " lastName":" lUpdate",
     " searchTerm1":" VA1234567",
     " ZZ1_Custom2_bus":" custom2"
 }
 

并且前提系统上的业务伙伴数据未更新。 我是否在编码或配置中缺少一些更新请求才能正常工作?

谢谢

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

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


我已通过云连接器将我的Cloud App连接到前提系统。 我尝试使用以下代码创建新的业务合作伙伴:

异步函数fnExecuteCreateRequest(eBusinessPartner){
 尝试{
 var destination =等待coreSDK.useOrFetchDestination({
 destinationName:" myDestination"
 });

 var响应=等待BusinessPartner.requestBuilder()
 .create(eBusinessPartner)
 .execute(目的地);
 返回响应;
 }抓住(e){
 返回{
 "确认":"失败",
 "消息":e.stack,
 }
 }
 }
 

请求成功,并且在前提系统中创建了业务伙伴。 但是当我按以下代码尝试更新请求时:

异步函数fnExecuteUpdateRequest(eBusinessPartner){
 尝试{
 var destination =等待coreSDK.useOrFetchDestination({
 destinationName:" myDestination"
 });

 var响应=等待BusinessPartner.requestBuilder()
 .update(eBusinessPartner)
 .ignoreVersionIdentifier()
 .execute(目的地);
 返回响应;
 }抓住(e){
 返回{
 "确认":"失败",
 "消息":e.stack,
 }
 }
 }
 

请求响应没有错误,但是具有我传递给它的相同数据。

 {
     " businessPartner":" 0000000076",
     " businessPartnerCategory":" 1",
     " firstName":" fName",
     " lastName":" lUpdate",
     " searchTerm1":" VA1234567",
     " ZZ1_Custom2_bus":" custom2"
 }
 

并且前提系统上的业务伙伴数据未更新。 我是否在编码或配置中缺少一些更新请求才能正常工作?

谢谢

付费偷看设置
发送
4条回答
me_for_i
1楼 · 2020-09-02 05:16.采纳回答

伊桑,

如果您使用VDM更新实体,则请求将返回您放入实体中的任何内容,因为如果更新成功,则本地具有的任何状态也将是系统上的状态-这样便可以得到 回来。

这时我需要问一个澄清的问题,因为我不确定我是否正确理解了你的问题:

如果您对返回的传入数据感到困惑,那很正常。

如果您没有收到错误,但是该实体的状态在本地系统上没有发生变化,那就太不可思议了。 如果响应的HTTP状态代码> = 400,则VDM将引发错误。由于此处未发生此错误,因此我将尝试检查系统的日志(我认为这是有可能的,因为它在本地)。

希望有帮助! 如果没有,请随时跟进其他问题!

最好的问候
Dennis

P.S.:VDM在后台使用useOrFetchDestination,因此以下代码等效于您的代码:

 ... 
.execute({
destinationName:'YOUR-DESTINATION' });
lukcy2020
2楼-- · 2020-09-02 05:11

这是后端系统返回的错误。 当没有给定类型的实体(在这种情况下为BusinessPartnerAddress)具有您提供的键时,通常会发生此错误。

小灯塔
3楼-- · 2020-09-02 05:13

嗨,Ethan,

我们想修复潜在的错误或改进文档。

能否请您分享有关"我何时删除remoteState对象中的数据"的更多详细信息?

您是如何从远程状态删除数据的?

我猜您在为业务伙伴设置新值之后执行之前显式调用了setOrInitializeRemoteState()方法。 如下所示:

 const bupa = oldBupa;
 bupa.firstName ='newName'; 
bupa.setOrInitializeRemoteState();
BusinessPartner.requestBuilder()。update(bupa).execute(destination);

那您要删除第三行吗?

奄奄一息的小鱼
4楼-- · 2020-09-02 05:35

嗨,俊杰。

您能看看我在丹尼斯会议上的评论吗? 希望对您有所帮助。

谢谢。

一周热门 更多>