SAP Cloud SDK ИСПРАВЛЯЕТ MaterialBomItem: запускает пересчет quantityVariableSizeItem в переменной спецификации материалов -элемент размера

#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.