在运行时使用JAVA更新销售商品的属性吗?

2020-08-18 00:10发布

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

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


大家好。

我想知道如何更新屏幕上收据的salesItem的属性,例如更新总价。

我想要执行此操作而不必创建收据并捕获ReceiptPosService事件。 我曾尝试使用receiveManager,但没有找到解决方案。

有人知道该怎么做吗?

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

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


大家好。

我想知道如何更新屏幕上收据的salesItem的属性,例如更新总价。

我想要执行此操作而不必创建收据并捕获ReceiptPosService事件。 我曾尝试使用receiveManager,但没有找到解决方案。

有人知道该怎么做吗?

付费偷看设置
发送
6条回答
昵称总是被占用
1楼 · 2020-08-18 00:43.采纳回答

您好何塞·雷耶斯(JoséReyes)

我认为除了使用ReceiptPosService,别无他法。

p>

因此设置例如 收据中每个salesItem的unitGrossAmount均为1.00 ...

获取ReceiptPosService。
获取当前收据。
获取CalculationPosService。
设置unitGrossAmount。
将SalesItem设置为已更改(UnitPriceChanged和MarkChanged)。
重新计算收据。
更新收据。 后端。
通过UI事件更新UI中的收据。

尝试(CDBSession cdbSession = CDBSessionFactory.instance.createSession()){
     ReceiptPosService receivePosService = ServiceFactory.INSTANCE.getOrCreateServiceInstance(ReceiptPosService.class,cdbSession);
     ReceiptEntity收据= receivePosService.findOrCreate(UserRegistry.INSTANCE.getCurrentUser(),null,true);
     CalculationPosService CalculationPosService = ServiceFactory.INSTANCE.getOrCreateServiceInstance(CalculationPosService.class,cdbSession);


     receive.getSalesItems()
             。流()
             .forEach(salesItem-> {
                 salesItem.setUnitGrossAmount(BigDecimal.ONE);
                 salesItem.setUnitPriceChanged(true);
                 salesItem.setMarkChanged(true);
             });

     CalculationPosService.recalculateReceipt(receipt);
     receivePosService.updateReceipt(receipt,true);
     BroadcasterHolder.INSTANCE.getBroadcaster()。broadcastPluginEventForPath(" RECEIPT_REFRESH",null);

 } catch(InconsistentReceiptStateException e){
     log.severe(e.getLocalizedMessage());
     log.fine(ExceptionUtils.getFullStackTrace(e));
 } 

使用2.9版进行了测试。

hth

Robert

Alawn_Xu
2楼-- · 2020-08-18 00:48

感谢您的回答Robert,

我尝试过,效果很好。 但是我怀疑,当我在普通收据上实施它时,它会完美地工作。 但是当我尝试在退货收据中实现它时,UnitGrossAmount不会更改。 我不知道这是否是因为金额为负。

您知道为什么吗?

Nan4612
3楼-- · 2020-08-18 00:49

您好何塞·雷耶斯

< p>您是否要更改销售商品的主数据,以便更新后的每个收据都具有新总价的销售商品?

致谢

罗伯特

# p#

嗨, Robert Zieschang

您对此一无所知吗?

提前感谢

小熊yu生菜
4楼-- · 2020-08-18 00:42

您好,何塞·雷耶斯

对我来说,尚不清楚您要实现什么目标。 您要更新收货中的销售项目或销售项目的主数据吗?

因为您提到过,所以您不想使用ReceiptPosService,也不想创建收据。

有点困惑。 抱歉。

致谢

Robert

95年老男孩
5楼-- · 2020-08-18 00:35

对不起,如果我感到困惑,

我要更改正在创建的收据中的销售商品的价格或其他属性。

希望您能更好地理解我。

梦想连接
6楼-- · 2020-08-18 00:39

看起来不错,但我无法引用CalculationPosService CalculationPosService = ServiceFactory.INSTANCE.getOrCreateServiceInstance(CalculationPosService.class,cdbSession);

操作方法-它包含在哪个lib中?

一周热门 更多>