通过服务层添加价目表项目

2020-09-14 01:17发布

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

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


我可以使用服务层100%更新价目表项目。

但是,当尝试添加一个pricelistitem时(如下所示),我在黑体字上出现以下错误:

"处理此请求时发生错误。"

示例代码:

ItemPrice itm_pl = new ItemPrice();

itm_pl.PriceList = int.Parse(row.PricelistNo);

itm_pl.Price = Convert.ToDouble(row.Price);

itm.ItemPrices.Add(itm_pl);

B1Connection.currentServiceContainer.UpdateObject(itm);

var结果= B1Connection.currentServiceContainer.SaveChanges(System.Data.Services.Client.SaveChangesOptions.PatchOnUpdate);

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

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


我可以使用服务层100%更新价目表项目。

但是,当尝试添加一个pricelistitem时(如下所示),我在黑体字上出现以下错误:

"处理此请求时发生错误。"

示例代码:

ItemPrice itm_pl = new ItemPrice();

itm_pl.PriceList = int.Parse(row.PricelistNo);

itm_pl.Price = Convert.ToDouble(row.Price);

itm.ItemPrices.Add(itm_pl);

B1Connection.currentServiceContainer.UpdateObject(itm);

var结果= B1Connection.currentServiceContainer.SaveChanges(System.Data.Services.Client.SaveChangesOptions.PatchOnUpdate);

付费偷看设置
发送
3条回答
spaceman01
1楼-- · 2020-09-14 01:31

嗨,本

您想做什么? 如果要创建新的价目表,则需要首先使用POST到PriceLists资源:

 POST https://localhost:50000/b1s/v1/PriceLists
 {
     " PriceListName":"价格表30"
 }
 

然后,如果您要为商品设置新价格表的价格,则需要获取价格表的唯一ID:

获取https://localhost:50000/b1s/v1/PriceLists?$ select = PriceListNo&$ filter = PriceListName eq'价格表30'

现在您可以使用PATCH请求更新商品价格:

匹配https://localhost:50000/b1s/v1/Items('i001')
 {
 " ItemPrices":[
 {
 "价目表":11
 "价格":1000
 }
 ]
 }
 

与WCF相同。 您不能只在商品价格中添加新行,因为这将导致数据不一致。

SKY徐
2楼-- · 2020-09-14 01:28

嗨,谢尔盖,

感谢您的反馈。

我正在使用WCF完全按照您的指定进行操作。

我正在为现有价格表的现有商品添加新的ItemPrice,而该商品目前没有该商品的价格。

...

...

//获取项目

Item itm = B1Connection.currentServiceContainer.Items.Where(cursor => cursor.ItemCode ==" 102125")。SingleOrDefault();

//创建新的ItemPrice

ItemPrice itm_price = new ItemPrice();

itm_price.PriceList = 29;

itm_price.Price = 25.75;

//将新的ItemPrice添加到Item的ItemPrices集合中

itm.ItemPrices.Add(itm_price);

//更新ItemObject

B1Connection.currentServiceContainer.UpdateObject(itm);

//保存更改

var结果= B1Connection.currentServiceContainer.SaveChanges(System.Data.Services.Client.SaveChangesOptions.PatchOnUpdate);

上面的行导致以下错误:"处理此请求时发生错误。"

Aaron 3364
3楼-- · 2020-09-14 01:37

嗨,本,

我通常不会通过WCF消耗SL,但我认为在您的情况下它一定是这样的:

//获取项目
 项目itm = B1Connection.currentServiceContainer.Items.Where(光标=> cursor.ItemCode ==" 102125")。SingleOrDefault();
//我们不需要为商品价格创建新条目,因为商品对象包含每个现有价格清单的行。 我们只需要获取必要的行并更新价格
 ItemPrice itm_price = itm.ItemPrices.Where(ip => ip.PriceList == 29).Single();
 itm_price.Price = 25.75;
//更新ItemObject
 B1Connection.currentServiceContainer.UpdateObject(itm);
//保存更改
 var result = B1Connection.currentServiceContainer.SaveChanges(System.Data.Services.Client.SaveChangesOptions.PatchOnUpdate); 

我尚未测试代码,但我认为它必须可以工作。

一周热门 更多>