前段时间上面要求做一个历史库存账龄分析,取历史数据的时候一直纠结于用mchb/mchbh/mska/mskah等实时和历史库存表,然而试来试去还是不能成功,于是决定DEBUG下MB5B的源代码,测试了下,好像可以了,现把过程登记下来:
选择窗口:
执行:
1、先根据选择界面的条件(前四个)从MCHB和MSKA表中取出相应的所有记录到IMCHB/IMSKA内表中,并经过重量累加处理以及COLLECT等方法,最终形成内标IT_TOTAL。
2、根据选择界面的条件(前5个,其中日期条件为MKPF-BUDAT GE 日期),取出这个过账日期之后(含这天)的所有凭证记录;
3、循环处理内表IT_TOTAL,为其重量赋值:
LOOP AT IT_TOTAL.
IT_TOTAL-BUDAT = S_BUDAT.
READ TABLE IT_MCH1 INTO WA_MCH1 WITH KEY MATNR = IT_TOTAL-MATNR CHARG = IT_TOTAL-CHARG.
IF SY-SUBRC = 0.
IT_TOTAL-ERSDA = WA_MCH1-ERSDA.
ENDIF.
LOOP AT IT_MSEG WHERE WERKS = IT_TOTAL-WERKS AND MATNR = IT_TOTAL-MATNR AND CHARG = IT_TOTAL-CHARG.
IF IT_MSEG-SHKZG EQ 'S'.
IT_TOTAL-TOTAL = IT_TOTAL-TOTAL - IT_MSEG-MENGE.
ELSE.
IT_TOTAL-TOTAL = IT_TOTAL-TOTAL + IT_MSEG-MENGE.
ENDIF.
ENDLOOP.
MODIFY IT_TOTAL.
ENDLOOP.
4、最后结果检查,同MB5B。