Запросы на обновление больше не отправляют все поля в систему SAP S / 4 HANA - PullRequest
0 голосов
/ 30 мая 2018

После обновления до Cloud SDK версии 2.0.0 у нас теперь есть проблемы с добавлением полей в запрос.В основном речь идет о шаге процесса «Подсчет элемента инвентаризации».Здесь вручную установленные свойства для элементов не отправляются в запросе.

Это свойства, которые мы фактически устанавливаем и отправляем в S4 System:

Java Coding

Это свойства, встроенные в запрос:

Request in S4

1 Ответ

0 голосов
/ 30 мая 2018

Быстрый ответ

Вызовите метод includingFields(PhysInventoryDocItem.MATERIAL, ...) в быстром помощнике обновления.

Более подробное объяснение

Версия 1.11.1 SAP S / 4HANA Cloud SDK немногоизменил поведение виртуальной модели данных Java (VDM) во время запросов на обновление.Состояние примечаний к выпуску :

Запросы на обновление с помощью виртуальной модели данных Java (VDM) больше не отправляют все ненулевые поля в систему SAP S / 4HANA, а только изменяютсяполя.Возможно, вам придется адаптировать логику в вашем коде для явного изменения полей, используя установщики классов сущностей, или использовать метод includesFields, чтобы вручную указать поля для включения.

Таким образом, в вашем случаебудут отправлены только поля по умолчанию, которые имеют другое значение по сравнению с результатом, возвращаемым запросом OData для получения по ключу, как обычно ожидается для PATCH запросов.Например, значение поля материал , скорее всего, не изменилось, поскольку раньше оно было "MAT_KONSI_APP1".

Поскольку существуют случаи, когда требуется обязательная отправка некоторых обязательных полей,SAP S / 4HANA Cloud SDK позволяет контролировать, какие поля всегда отправлять.Используйте метод includingFields в обновленном свободном помощнике VDM, чтобы указать поля, которые должны быть отправлены в любом случае, даже если их значение не изменилось.

В вашем случае,если вы хотите отправить поля материал и единица ввода , которые могут быть обязательными свойствами, вам потребуется следующий код:

service.updatePhysInventoryDocItem(itemToUpdate)
    .includingFields(PhysInventoryDocItem.MATERIAL,
                     PhysInventoryDocItem.UNIT_OF_ENTRY)
    .execute()
...