1 数据获得:
设屏幕输入的日期区间为:Y年M月D日~Z年N月E日
若Y年M月D日或Z年N月E日晚于系统当前日期,报错
若选择的库存地点不属于选择的工厂(在T001L中不存在记录:T001L-LGORT=屏幕输入的库存地点 and T001L-WERKS=屏幕输入的工厂),报错
建立函数FUNCTION1用来计算一段时间内工厂范围的物料收发数量和金额(详见后)
输入参数:起止日期zmfd至zmtd、物料号zmatnr、评估范围zbwkey
输出参数:期间入库数量zsq-r、期间出库数量zsq-i、期间入库金额zmv-r、期间出库金额zmv-i
建立函数FUNCTION2用来计算一段时间内库存地点范围的物料收发数量(详见后)
输入参数:起止日期zmfd至zmtd、物料号zmatnr、工厂zwerks、库存地点zlgort
输出参数:期间入库数量zsq-r、期间出库数量zsq-i
1)按照屏幕输入条件先在MARA中找出所有需要查询的物料号,形成数据集ZMAT:
MARA-MATNR in 屏幕输入的物料 and
MARA-MATKL in 屏幕输入的物料组 and
MARA-PRDHA in 屏幕输入的产品层次 and
在MARC中存在记录:MARC-MATNR=MARA-MATNR and MARC-WERKS=屏幕输入的工厂
2)对于ZMAT中的每条记录,查询MBEW、QBEW
Step1.在MBEW中查找满足以下条件的记录:
MBEW-MATNR=ZMAT-MATNR and
MBEW-BWKEY=屏幕输入的工厂
Step2.在QBEW中查找满足以下条件的记录(可能多条):
QBEW-MATNR=ZMAT-MATNR and
QBEW-BWKEY=屏幕输入的工厂 and
QBEW-SOBKZ="Q"
Step3.对于在MBEW和QBEW中取得的所有记录,在ZMAT中添加字段:
ZMAT-LBKUM=MBEW-LBKUM加上所有QBEW-LBKUM
ZMAT-SALK3=MBEW-SALK3加上所有QBEW-SALK3
ZMAT-LFGJA&ZMAT-LFMON为MBEW-LFGJA&MBEW-LFMON和所有QBEW-LFGJA&QBEW-LFMON中最晚的一组年月
3)经过上述查找,对于ZMAT中的每条记录计算工厂范围的期初与期末库存数量和金额
若ZMAT-LFGJA&ZMAT-LFMON为空,即MBEW、QBEW中未查得记录 ------------case1
à
期初=期末=0(金额&数量)
若ZMAT-LFGJA或 ( ZMAT-LFGJA=Y且ZMAT-LFMON<m )="" -------------case2
à
期初数量=期末数量=ZMAT-LBKUM
期初金额=期末金额=ZMAT-SALK3
若ZMAT-LFGJA=Y且ZMAT-LFMON=M
若ZMAT-LFGJA或 ( ZMAT-LFGJA=Z且ZMAT-LFMON<n ) ---------------case3
调用函数FUNCTION1,输入参数zmfd 为Y年M月D日、zmtd为Z年N月E日、zmatnr=ZMAT-MATNR、zbwkey=屏幕输入的工厂
返回参数:zsq-r、zsq-i、zmv-r、zmv-i
à
期初数量=ZMAT-LBKUM减去zsq-r加上zsq-i
期初金额=ZMAT-SALK3减去zmv-r加上zmv-i
期末数量=ZMAT-LBKUM
期末金额=ZMAT-SALK3
若ZMAT-LFGJA=Z且ZMAT-LFMON=N ----------------case4
Step1.调用函数FUNCTION1,输入参数zmfd 为Y年M月D日、zmtd为Z年N月E日、zmatnr=ZMAT-MATNR、zbwkey=屏幕输入的工厂
返回参数:zmq-r、zmq-i、zmv-r、zmv-i
à
期间入库数量为zmq-r
期间出库数量为zmq-i
期间入库金额为zmv-r
期间出库金额为zmv-i
Step2.调用函数FUNCTION1,输入参数zmfd 为Y年M月D日、zmtd为ZMAT-LFGJA年ZMAT-LFMON月末、zmatnr=ZMAT-MATNR、zbwkey=ZMAT-BWKEY
返回参数:zmq-r、zmq-i、zmv-r、zmv-i
à
期初数量=ZMAT-LBKUM减去zmq-r加上zmq-i
期初金额=ZMAT-SALK3减去zmv-r加上zmv-i
Step3.调用函数FUNCTION1,输入参数zmfd 为Z年N月E+1日、zmtd为ZMAT-LFGJA年ZMAT-LFMON月末、zmatnr=ZMAT-MATNR、zbwkey=ZMAT-BWKEY
返回参数:zmq-r、zmq-i、zmv-r、zmv-i
à
期末数量=ZMAT-LBKUM减去zmq-r加上zmq-i
期末金额=ZMAT-SALK3减去zmv-r加上zmv-i
若ZMAT-LFGJA>Y 或 ( ZMAT-LFGJA=Y且ZMAT-LFMON>M )
若ZMAT-LFGJA>Z 或 ( ZMAT-LFGJA=Z且ZMAT-LFMON>N )
取数逻辑同case4
若ZMAT-LFGJA=Z且ZMAT-LFMON<