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

2020-08-18 00:10发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)大家好。 我想知道如何更新屏幕...

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

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


大家好。

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

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

有人知道该怎么做吗?

6条回答
昵称总是被占用
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

一周热门 更多>