8

由于更新到 Cloud SDK 版本 2.0.0,我们现在在向请求中添加字段时遇到了问题。主要是关于“盘点盘点单据项目”的流程步骤。此处手动设置的项目属性不会发送到请求中。

这些是我们实际设置并发送到 S/4 系统的属性:

Java 编码

这些是嵌入在查询中的属性:

S4 中的请求

4

1 回答 1

1

快速回答

调用includingFields(PhysInventoryDocItem.MATERIAL, ...)更新流利的助手上的方法。

更长的解释

SAP S/4HANA Cloud SDK 1.11.1 版略微更改了更新请求期间 Java 虚拟数据模型 (VDM) 的行为。发行说明指出

使用 Java 虚拟数据模型 (VDM) 的更新请求不再将所有非空字段发送到 SAP S/4HANA 系统,而只会发送更改的字段。您可能需要调整代码中的逻辑以使用实体类的设置器显式更改字段,或使用 includeFields 方法手动指定要包含的字段。

因此,在您的情况下,默认情况下,只会发送与 get-by-key OData 请求返回的结果相比具有不同值的字段,这通常是PATCH请求的预期。例如,字段材料的值可能没有改变,因为它是"MAT_KONSI_APP1"以前的。

由于有些情况需要始终发送一些必填字段,因此 SAP S/4HANA Cloud SDK 允许您控制始终发送哪些字段。使用includingFieldsVDM 的 update fluent 助手上的方法来指定在任何情况下都应发送的字段,即使它们的值没有改变。

在您的情况下,如果您想发送可能是强制性属性的材料输入单位字段,您需要以下代码:

service.updatePhysInventoryDocItem(itemToUpdate)
    .includingFields(PhysInventoryDocItem.MATERIAL,
                     PhysInventoryDocItem.UNIT_OF_ENTRY)
    .execute()
于 2018-05-30T10:36:03.403 回答