转 - EPICOR BPM ABL代码实例(新增修改其它表记录)_某年某月_新浪博客

客户需求:
在实施一家客户的ERP项目过程中,客户的库存管理有这样一种特殊的需求,要实现物料的库存同时记录件数和平方数,但每一片的平方数是不固定的,没办法使用系统自身的多UOM管理。该如何实现?

解决方案:

可采用UD表来记录物料的辅助单位的库存数。在所有的库存业务界面当中,除了输入库存主单位的数量之外,还有同时输入辅助单位的数量。

由于库存业务相关的窗体非常的多,如果在UI层写代码实现的话,则工作量巨大,而且盘点过账时候,开发的难度比较大。那么,有没有便捷的方法来满足这样的需求呢?答案是肯定的,我们可以考虑在PartTran这个表做数据指令的BPM,因为所有的库存事务最终都会写入到PartTran,所以只需要在这个地方做BPM就可以实现客户的需求,而不需要在UI层一个一个的写代码。在这个方案中,辅助单位的数量,是利用库存事务相关窗体的备注这个字段进行输入的(当然,假如备注还需要写入其他内容,那么可以再加上一些分隔符来实现)。如下是BPM的4GL代码示例:
***********************************************


For each ttparttran where ttparttran.rowmod='A' and length(ttparttran.partnum)>0 and length(ttparttran.WareHouseCode)>0 and length(ttparttran.BinNum)>0 and length(ttparttran.LotNum)>0 no-lock.



  def var iQty as integer initial 0 no-undo.
  assign iQty = integer(ttparttran.tranreference) no-error.
  IF  ERROR-STATUS:ERROR  THEN do:
    {&TRY_PRIVATE}    
    {lib/PublishEx.i &ExMsg ='件数必须输入数字!' 
        &ExType   = {&MESSAGE_ERR}
    }
    {&THROW_PRIVATE}.
    {&CATCH_PRIVATE}  
  END.

  IF iQty<=0 then do:
    {&TRY_PRIVATE}    
    {lib/PublishEx.i &ExMsg ='件数必须必须大于0!' 
        &ExType   = {&MESSAGE_ERR}
    }
    {&THROW_PRIVATE}.
    {&CATCH_PRIVATE}  
  END.   



If (ttparttran.TranType matches 'STK*' and ttparttran.TranQty>0) or(ttparttran.TranType matches '*STK' and ttparttran.TranQty<0) or (ttparttran.TranType='ADJ-QTY' and ttparttran.TranQty<0)  Then do:

  assign iQty= - iQty.



End.


  Find first UD10 where UD10.Company=ttparttran.Company and UD10.Key1=ttparttran.PartNum and UD10.Key2=ttparttran.WareHouseCode and UD10.Key3=ttparttran.BinNum and UD10.Key4=ttparttran.LotNum no-error.
  if not available(UD10) then 
     Do:

     create UD10.

     assign ud10.company=ttparttran.Company.

     assign ud10.key1=ttparttran.PartNum.

     assign ud10.key2=ttparttran.WareHouseCode.

     assign ud10.key3=ttparttran.BinNum.

     assign ud10.key4=ttparttran.LotNum.

     assign ud10.Number01=iQty.     
     End.
  Else  Do:
     assign ud10.Number01=ud10.Number01 + iQty. 
  End.  
End.
****************************************************************
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值