SAP Cloud SDK PATCH MaterialBomItem:触发物料清单可变大小物料中的quantityVariableSizeItem的重新计算

问题描述

根据SAP Cloud SDK的文档,在更改影响该属性的字段(例如size1,size2,size3,FormulaKey)后,需要重新计算物料清单中可变尺寸项目的数量

为此,应删除quantityVariableSizeItem的内容。如何做到这一点?

我尝试了几个值来使用MaterialBomItemRequestBuilder。update方法更新现有的可变大小项(这会导致PATCH请求):

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

解决方法

传递给方法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>);
,

此问题已通过 @sap-cloud-sdk/core 和 @sap/cloud-sdk-vdm-bill-of-material-v2-service 1.30.0 版解决。