执行逻辑
比较选择条件判断是否重新计算
先取库存地点进内表 tt_mard_mara,注意:虽然这个表有批次,但是一个库存地点+项目才保留一条数据(不同批次的会直接覆盖)
所以这个表只是存项目和库存地点,并不存批次和库存数量
后面取表 MCHA,此时会取出物料的所有批次以及评估类型,然后取所有批次对应的库存数量和物料凭证
问题1
修改物料主数据把物料改为批次物料时,MCHA只有一条有批次的数据,这样之前批次为空的物料凭证就取不到了
解决1:给MCHA插入一条批次为空的数据即可
解决2:后来要求给之前的物料凭证写入批次,原因是修改了物料主数据,物料是有批次的(之前的物料凭证必须要有批次),所以把没有批次的物料凭证写入批次值,同时删掉项目库存MSPR批次为空的数据,把库存加到有批次的库存上
问题2
物料有批次但是 评估类为空时,MCHA有一条评估类为空的数据,第二次做评估时QBEW增加了一条相同批次相同wbs有评估类的数据,此时mcha只有一条有评估类的数据,所以没有评估类的wbs的物料凭证就取不到了
解决:qbew把之前没评估类的数据写入评估类,同时把物料凭证写上评估类
原因:
mmbe 看到库存(但是库存的WBS对应的 QBEW 的评估类为空),就无法显示对应批次的物料凭证了
这段代码把内表 tt_mard_mara存进内表 pt_listmat,结果pt_listmat 相同批次wbs不一样的数据只保留了一条
原因是MCHA中的批次的评估类有值
这样只会匹配到QBEW中有评估类的数据
就会排除掉QBEW没有评估类的WBS库存,库存表就不会增加这条WBS的数据
就无法取到对应的物料凭证,原因:
取会计凭证(有物料凭证字段) 进内表 docmat
取完物料凭证之后在这一步会有筛选
根据会计凭证上的wbs元素和库存地点的wbs元素筛选(在前面对应的wbs条目没有添加进去)