gpt4 book ai didi

sap-cloud-sdk - SAP Cloud SDK VDM 中 odatav2 的电子标签处理

转载 作者:行者123 更新时间:2023-12-04 10:38:19 24 4
gpt4 key购买 nike

使用最新的 java SAP Cloud Sdk

我们正在尝试对 S/4 系统中的 OutboundDelivery 执行更新。我们为此使用 API_OUTBOUND_DELIVERY_SRV 版本 2。服务要求我们使用etag,即它要求我们提供一个header - if-match与 etag 的相应值。

我们正在使用 VDM 执行更新并正在使用 com.sap.cloud.sdk.s4hana.datamodel.odata.namespaces.outbounddeliveryv2.batch.OutboundDeliveryV2ServiceBatch .请在下面找到用于更新的代码片段:

...
OutboundDeliveryV2ServiceBatch service = // Instantiate service;

List<OutbDeliverItem> itemsToUpdate = new ArrayList<>();

items.add(OutbDeliveryItem.builder()
.deliveryDocument("some key")
.deliveryDocumentItem("some key")
.build());

// Assume more additions to items
...
...
...

OutboundDeliveryV2ServiceBatchChangeSet changeSet = service.beginChangeSet();

items.forEach(changeSet::updateOutbDeliveryItem);

changeSet.endChangeSet();

BatchResponse response = service.execute(someDestination);
...

尽快 service.execute(someDestination)执行,更新不在 S/4 上执行,S/4 上的日志给出以下错误:
The Data Service Request is required to be conditional. Try using the "If-Match" header.

我的问题:
  • 为什么 VDM/SDK 不在内部处理 etag 处理?根据 the section Optimistic concurrency control in this blog ,提到它是在javascript sdk中自动处理的,但是java sdk呢?
  • 是否可以通过使用 VDM 以某种方式传递此 header ?如果是,那么如何?
  • 还是我们必须在 S/4 中放弃我们服务的乐观并发控制?

  • 请注意,由于性能原因,我们必须使用批处理操作本身。

    最佳答案

    缺少 ETag,因为要更新的项目是使用构建器模式在您的应用程序中以编程方式创建的。因此,当您执行更新时,它们上不存在 ETag,并且在构建请求时,SDK 没有可用于设置“If-Match” header 。

    解决方案是首先从服务器获取项目。这也确保您拥有最新版本的更新,这是更新它们的先决条件。

    关于sap-cloud-sdk - SAP Cloud SDK VDM 中 odatav2 的电子标签处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60055957/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com