执行逻辑

比较选择条件判断是否重新计算

J3RFLVMOBVED 旧俄罗斯进销存报表_BAPI

先取库存地点进内表 tt_mard_mara,注意:虽然这个表有批次,但是一个库存地点+项目才保留一条数据(不同批次的会直接覆盖)

J3RFLVMOBVED 旧俄罗斯进销存报表_BAPI_02

 

J3RFLVMOBVED 旧俄罗斯进销存报表_BAPI_03

所以这个表只是存项目和库存地点,并不存批次和库存数量

后面取表 MCHA,此时会取出物料的所有批次以及评估类型,然后取所有批次对应的库存数量和物料凭证

J3RFLVMOBVED 旧俄罗斯进销存报表_业务_04

 

问题1

修改物料主数据把物料改为批次物料时,MCHA只有一条有批次的数据,这样之前批次为空的物料凭证就取不到了

解决1:给MCHA插入一条批次为空的数据即可

解决2:后来要求给之前的物料凭证写入批次,原因是修改了物料主数据,物料是有批次的(之前的物料凭证必须要有批次),所以把没有批次的物料凭证写入批次值,同时删掉项目库存MSPR批次为空的数据,把库存加到有批次的库存上

 

问题2

物料有批次但是 评估类为空时,MCHA有一条评估类为空的数据,第二次做评估时QBEW增加了一条相同批次相同wbs有评估类的数据,此时mcha只有一条有评估类的数据,所以没有评估类的wbs的物料凭证就取不到了

解决:qbew把之前没评估类的数据写入评估类,同时把物料凭证写上评估类

原因:

mmbe 看到库存(但是库存的WBS对应的 QBEW 的评估类为空),就无法显示对应批次的物料凭证了

J3RFLVMOBVED 旧俄罗斯进销存报表_BAPI_05

 

J3RFLVMOBVED 旧俄罗斯进销存报表_业务_06

这段代码把内表 tt_mard_mara存进内表 pt_listmat,结果pt_listmat 相同批次wbs不一样的数据只保留了一条

J3RFLVMOBVED 旧俄罗斯进销存报表_BAPI_07

原因是MCHA中的批次的评估类有值

J3RFLVMOBVED 旧俄罗斯进销存报表_业务_08

这样只会匹配到QBEW中有评估类的数据

J3RFLVMOBVED 旧俄罗斯进销存报表_业务_09

 

J3RFLVMOBVED 旧俄罗斯进销存报表_BAPI_10

就会排除掉QBEW没有评估类的WBS库存,库存表就不会增加这条WBS的数据

J3RFLVMOBVED 旧俄罗斯进销存报表_业务_09

就无法取到对应的物料凭证,原因:

取会计凭证(有物料凭证字段) 进内表 docmat

J3RFLVMOBVED 旧俄罗斯进销存报表_BAPI_12

 

J3RFLVMOBVED 旧俄罗斯进销存报表_BAPI_13

取完物料凭证之后在这一步会有筛选

J3RFLVMOBVED 旧俄罗斯进销存报表_BAPI_14

根据会计凭证上的wbs元素和库存地点的wbs元素筛选(在前面对应的wbs条目没有添加进去)

J3RFLVMOBVED 旧俄罗斯进销存报表_BAPI_02