用户反馈当中间半品数量不为1时,半品下的物料展开时还是按一个半品的数量来展开的。
BOM展开内表有三个字段
MENGE 组件数量
MNGLG 以基本计量单位为准的已计算的组件数量
MNGKO 以组件计量单位为准的已计算的组件数量
所以多层展开时,应该使用MNGLG是没有问题的。
但是当将PC等单位本来应该是整数的单位当小数来用,就会发现展开的数量就变成了1或其它整数,结果就不对了。
解决办法:
张开函数中有STUFE 层次,如果层次不为1,可能就要考虑使用下面的办法来计算。
如果层次STUFE不为1,且固定数量FMENG不为X.
则这个物料的数量=他上层半品的展开数量 * 这个物料的数量 / 上层半品的基本数量
查找上层半品的展开数量的方法。
READ TABLE l_i_stb2 WITH KEY xtlty = i_stb2-stlty xtlnr = i_stb2-stlnr.
IF sy-subrc EQ 0.
i_subit-menge = i_stb2-menge * l_i_stb2-menge / l_i_stb2-xmeng.
ELSE.
MESSAGE '查找上层半品用量没有找到' TYPE 'I'.
ENDIF.
READ TABLE l_i_stb2 WITH KEY xtlty = i_stb2-stlty xtlnr = i_stb2-stlnr.
在展开的内表中查找 XTLTY (上层半品的BOM类型) = STLTY 且 XTLNR(上层半品的BOM清单号) = STLNR (该物料的所在BOM的清单号)
如果多层都需要考虑的话,
就先从第2层开始,将所有第二层的用量计算清楚。
再从第3层,将所有第三层的用量计算清楚。
以此类推,直到最后一层。