由于更新到 Cloud SDK 版本 2.0.0,我们现在在向请求中添加字段时遇到了问题。主要是关于“盘点盘点单据项目”的流程步骤。此处手动设置的项目属性不会发送到请求中。
这些是我们实际设置并发送到 S/4 系统的属性:
这些是嵌入在查询中的属性:
由于更新到 Cloud SDK 版本 2.0.0,我们现在在向请求中添加字段时遇到了问题。主要是关于“盘点盘点单据项目”的流程步骤。此处手动设置的项目属性不会发送到请求中。
这些是我们实际设置并发送到 S/4 系统的属性:
这些是嵌入在查询中的属性:
调用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 允许您控制始终发送哪些字段。使用includingFields
VDM 的 update fluent 助手上的方法来指定在任何情况下都应发送的字段,即使它们的值没有改变。
在您的情况下,如果您想发送可能是强制性属性的材料和输入单位字段,您需要以下代码:
service.updatePhysInventoryDocItem(itemToUpdate)
.includingFields(PhysInventoryDocItem.MATERIAL,
PhysInventoryDocItem.UNIT_OF_ENTRY)
.execute()