[SAP Business ByDesign]如何获取特定物料的销售价格?

2020-08-30 11:46发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家您好,

当我获得材料清单的销售价格时,我面临性能问题。 这里是问题:

需求:有一个物料ID列表(约1000个项目),用户已经定义了基本价格表(名称为MSRP,此价格表中有超过20000个项目)。 我们需要从MSRP清单中获取材料价格(在ID清单中)。

我当前的代码是这样的:((我使用foreach在SalesPriceList中循环

//获取MSRP价格表
 var basePriceListID:SalesPriceListID;
 basePriceListID.content =" MSRP";
 var basePriceList = SalesPriceList.Retrieve(basePriceListID);
//我们为此示例使用了3个特定的ID,但是在现实生活中,我们使用的是材料列表,通常超过1000种材料。
 var a_List_Of_Items:LANGUAGEINDEPENDENT_LONG_Text的集合;
 a_List_Of_Items.Add(" 1006488");
 a_List_Of_Items.Add(" 1022195");

 var curMaterialAmount = 0;
 var curMaterialUoM ="";
 如果(basePriceList.IsSet())
 {
 foreach(a_List_Of_Items中的var materialID)
 {
 foreach(basePriceList.PriceSpecification中的可变价格)
 {
 已处理var = 0;
 foreach(var propertyprice.PropertyValuation中的估值)
 {
 如果(propertyValuation.PriceSpecificationElementPropertyValuation.PriceSpecificationElementPropertyReference.PriceSpecificationElementPropertyID.content ==" CND_PRODUCT_ID" &&
 propertyValuation.PriceSpecificationElementPropertyValuation.PriceSpecificationElementPropertyValue.ID.content == materialID)
 {
 curMaterialAmount = price.Amount.content;
 curMaterialUoM = price.BaseQuantityTypeCode.content;
 已处理= 1;
 打破;
 }
 }
 if(处理== 1)中断;
 }
 }
 }
 

-我们无法限制价目表(MSRP)中的项目,因为我们的客户已经定义了它们,现在它们已超过20000件。

-能否请您分享我在这种情况下应遵循的最佳做法?

-是否有另一种无需使用foreach即可获得销售价格的方法?

-在这种情况下还有其他解决方案吗?

谢谢

阮阮

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家您好,

当我获得材料清单的销售价格时,我面临性能问题。 这里是问题:

需求:有一个物料ID列表(约1000个项目),用户已经定义了基本价格表(名称为MSRP,此价格表中有超过20000个项目)。 我们需要从MSRP清单中获取材料价格(在ID清单中)。

我当前的代码是这样的:((我使用foreach在SalesPriceList中循环

//获取MSRP价格表
 var basePriceListID:SalesPriceListID;
 basePriceListID.content =" MSRP";
 var basePriceList = SalesPriceList.Retrieve(basePriceListID);
//我们为此示例使用了3个特定的ID,但是在现实生活中,我们使用的是材料列表,通常超过1000种材料。
 var a_List_Of_Items:LANGUAGEINDEPENDENT_LONG_Text的集合;
 a_List_Of_Items.Add(" 1006488");
 a_List_Of_Items.Add(" 1022195");

 var curMaterialAmount = 0;
 var curMaterialUoM ="";
 如果(basePriceList.IsSet())
 {
 foreach(a_List_Of_Items中的var materialID)
 {
 foreach(basePriceList.PriceSpecification中的可变价格)
 {
 已处理var = 0;
 foreach(var propertyprice.PropertyValuation中的估值)
 {
 如果(propertyValuation.PriceSpecificationElementPropertyValuation.PriceSpecificationElementPropertyReference.PriceSpecificationElementPropertyID.content ==" CND_PRODUCT_ID" &&
 propertyValuation.PriceSpecificationElementPropertyValuation.PriceSpecificationElementPropertyValue.ID.content == materialID)
 {
 curMaterialAmount = price.Amount.content;
 curMaterialUoM = price.BaseQuantityTypeCode.content;
 已处理= 1;
 打破;
 }
 }
 if(处理== 1)中断;
 }
 }
 }
 

-我们无法限制价目表(MSRP)中的项目,因为我们的客户已经定义了它们,现在它们已超过20000件。

-能否请您分享我在这种情况下应遵循的最佳做法?

-是否有另一种无需使用foreach即可获得销售价格的方法?

-在这种情况下还有其他解决方案吗?

谢谢

阮阮

付费偷看设置
发送
2条回答
昵称总是被占用
1楼-- · 2020-08-30 12:17

您好,

您可以通过以商品ID作为参数来在absl逻辑中调用服务[CalculatePriceIn],然后获取价格。

注意事项

< p> May

SC_Yao
2楼-- · 2020-08-30 12:42

谢谢May的建议。 我们提出了一个解决方案,我们创建了自定义对象,然后同步了本地列表中的数据。 第一次运行需要花费时间,而第二次则需要花费更多时间。

谢谢

一周热门 更多>