#javascript #typescript #sap-cloud-sdk
#javascript #машинопись #sap-cloud-sdk
Вопрос:
Согласно документации SAP Cloud SDK количество элемента переменного размера в спецификации материалов необходимо пересчитать после изменения поля, которое влияет на это свойство (например, size1, size2, size3, formulaKey).
Для этого содержимое quantityVariableSizeItem должно быть удалено. Как это можно выполнить?
Я попробовал несколько значений для обновления существующего элемента с переменным размером, используя метод MaterialBomItemRequestBuilder.update (что приводит к запросу ИСПРАВЛЕНИЯ):
const item = MaterialBomItem.builder()
/*request fails with error message: Property 'QuantityVariableSizeItem' at offset '[...]' has invalid value '-Infinity'*/
//.quantityVariableSizeItem(new BigNumber('-Infinity))
/*request fails with error message: Property 'QuantityVariableSizeItem' at offset '[...]' has invalid value 'NaN'*/
//.quantityVariableSizeItem(new BigNumber(NaN))
/*TypeScript error before request is sent: Argument of type 'null' is not assignable to parameter of type 'Value'.*/
//.quantityVariableSizeItem(null)
/*TypeScript error before request is sent: Argument of type 'undefined' is not assignable to parameter of type 'Value'.*/
//.quantityVariableSizeItem(undefined)
.billOfMaterialItemNodeNumber(<value>)
.billOfMaterial(<value>)
.material(<value>)
.billOfMaterialCategory(<value>)
.billOfMaterialVariant(<value>)
.billOfMaterialVersion(<value>)
.headerChangeDocument(<value>)
.plant(<value>)
.build();
const result = await MaterialBomItem.requestBuilder()
.update(item)
.withCustomHeaders(<headers>)
.execute(<destination>);
Заранее спасибо,
ujj
Ответ №1:
Тип параметра, передаваемого методу billOfMaterialItemNodeNumber()
, является BigNumber
, что затрудняет его undefined
использование. Мы рассмотрим правильное исправление для этого варианта использования.
На данный момент вы можете попробовать обойти, как показано ниже:
const item = MaterialBomItem.builder()
// this is not possible
//.quantityVariableSizeItem(undefined)
.billOfMaterialItemNodeNumber(<value>)
.billOfMaterial(<value>)
.material(<value>)
.billOfMaterialCategory(<value>)
.billOfMaterialVariant(<value>)
.billOfMaterialVersion(<value>)
.headerChangeDocument(<value>)
.plant(<value>)
.build();
// work around
item.quantityVariableSizeItem = undefined;
const result = await MaterialBomItem.requestBuilder()
.update(item)
.withCustomHeaders(<headers>)
.execute(<destination>);
Комментарии:
1. Спасибо за быстрый ответ. Я пробовал обходной путь, но у меня это не сработало. Кажется, что quantityVariableSizeItem вообще не добавляется к полезной нагрузке запроса ODATA, если он не имеет значения (null или undefined).
2. Исправление объединено. Мы собираемся выпустить новую версию и сообщим вам об этом.
3. @ujj, последняя версия 1.30.0, которая должна решить вашу проблему.
4. Спасибо за уведомление. Он работает с выпуском 1.30.0 @sap-cloud-sdk / core и @sap / cloud-sdk-vdm-bill-of-material-v2-service. Извините за поздний ответ.
Ответ №2:
Эта проблема решена в выпуске 1.30.0 @sap-cloud-sdk / core и @sap / cloud-sdk-vdm-bill-of-material-v2-service.