全局变量的妙用

目的:在采购申请FORM界面增加三个弹性栏位 其中现有量栏位要自动取即时库存量 如下图

 

做法:

步骤一:弹性域-说明性-段

 

默认值:

SELECT NVl(SUM(T.PRIMARY_TRANSACTION_QUANTITY),0) FROM MTL_ONHAND_QUANTITIES_DETAIL T where t.inventory_item_id = :LINES.ITEM_ID

说明::LINES.ITEM_ID是采购申请行的:块名.字段名(注意:此默认值有问题 后面接着说)

 

测试结果:

采购申请(有料号)  采购申请(有料号) 都没问题了

但是申请汇总出问题了 提示找不到::LINES.ITEM_ID

经分析 原因如下

刚开的三个弹性域对申请汇总的FORM是共用的 但是申请行汇总界面的物料ID是:REQ_LINES_FOLDER.ITEM_ID 因此:LINES.ITEM_ID无法被识别

如下图

 

解决方法:

大神说用全局变量试试

用个性化将采购申请界面的:LINES.ITEM_ID赋值给全局变量

弹性域定义那里引用这个全局变量

SELECT NVl(SUM(T.PRIMARY_TRANSACTION_QUANTITY),0) FROM MTL_ONHAND_QUANTITIES_DETAIL T where t.inventory_item_id = :global.v_hkp

 

注:对于采购申请(无料号)来说 :LINES.ITEM_ID是空值 因此个性化要做特殊处理

将全局变量赋为null即可

 

成功!

 

注1:因为弹性域作用很强大 所有用到这个弹性域的地方都会被影响到 因此如果有用到这个弹性域但是没有定义此全局变量的就会报错

 

找到这个FORM 在个性化定义了最高级别WHEN-NEW-FORM-INSTENCE触发器下的全局变量

但是针对从WEB界面打开的这个FORM 这个触发器在报错之前没执行到 可能是在WHEN-NEW-FORM-INSTENCE之前的PRE-FORM里就开始验证全局变量 因此全局变量V_HKP要在PRE-FORM里定义才可能被执行到

这样就OK了 问题解决了。 

 

注2:大神说全局变量还可以做一次验证使用(例报废处理)

一般FORM的验证都是三次验证 用全局变量 只有全局变量为0时才进行验证 验证一次之后全局变量设为1  不再进行第二次验证

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值