Мне было интересно, возможно ли в САП ХАНА обновить объект с помощью файла xsjslib и вернуть обновленный объект. В настоящее время при обновлении записи возвращается '204 - Нет содержания'.
Образец xsodata
"DEMO.VIEWS::myEntity" as "MyEntity" keys("ID")
create using "DEMO.SCRIPTS:createEntity.xsjslib::createEntry"
update using "DEMO.SCRIPTS:updateEntity.xsjslib::updateEntry"
delete using "DEMO.SCRIPTS:deleteEntity.xsjslib::deleteEntry";
Ответ
Полезная документация
Я просмотрел документацию SAP по этому вопросу и, похоже, не нашел ничего, связанного с обновлением.
Существует также отличный учебник, который объясняет это для создать операцию. Это работает, но, к сожалению, не для операции обновления.
HTTP PUT (или HTTP PATCH) не имеет ответа (проверьте это, например, здесь). SAP не меняет это стандартное поведение. Поэтому, если вам действительно нужно вернуть обновленный объект (потому что, например, на стороне сервера какая-то специальная логика изменяет свойства, не являющиеся частью вашего запроса PUT), вам необходимо выполнить дополнительный запрос GET.
Что еще хуже, так это система SAP, в которой изменения реализуются путем отмены существующего экземпляра и создания нового, измененного. С OData нет средств для правильного моделирования этого. PATCH будет работать, если он вернет экземпляр. Теперь невозможно узнать первичный ключ только что созданного экземпляра.
@osxdirk Что вы хотите сказать нам своими комментариями к сообщению годичной давности??
На самом деле, в стандарте говорится, что возврат исправленного экземпляра объекта является необязательным, поэтому SAP все равно будет соответствовать спецификации, если они выберут вышеуказанное решение безопаснее.