SAP 取月度期初库存和月度期末库存(历史库存)
mard里記載的是當(dāng)前庫存的數(shù)量,但是期間并不一定是當(dāng)月。比如你物料4月一整月都沒有庫存數(shù)量變化(沒收沒發(fā)),那么5月初你看mard里的條目期間數(shù)還是4月而非5月。
當(dāng)某個(gè)期間發(fā)生貨物移動的時(shí)候,系統(tǒng)在更新mard數(shù)據(jù)的之前(這個(gè)表是實(shí)時(shí)更新的),會檢查此筆業(yè)務(wù)過賬期間和mard里對應(yīng)記錄的期間是否一致,也就是看這是不是本期間第一筆移動。如果是,copy表mard里對應(yīng)記錄到mardh,然后把mard記錄改成當(dāng)期(也可能是先刪后建),然后再作更新數(shù)量數(shù)據(jù)的操作。如果不是第一筆記錄,也就是mard期間和mseg期間一致,則不作copy記錄只更新mard數(shù)量。
這樣處理貌似減少了冗余數(shù)據(jù),不過給編程取歷史庫存增加了很大的工作量,個(gè)人覺得不算明智之舉。
庫存方面的表
mbew? --當(dāng)前庫存
mbewh? --歷史庫存
EBEWH? --銷售訂單庫存的評估:歷史
mard--查主庫存
mardh--主庫存歷史記錄
mslb--特殊庫存O
mkol--特殊庫存K/M
mska--特殊庫存E
msku--特殊庫存V/W
mcha
mchb?
有很多人在做庫存進(jìn)銷存的時(shí)候,感覺期初庫存和期末庫存比較難搞定,感覺要去取貨物移動的數(shù)據(jù)來獲取期初庫存和期末庫存,其實(shí)不然,只要理解原理就可以快速取出期初庫存和期末庫存
庫存表:MARDH MARD MSKUH MSKU MSLBH MSLB MSKAH MSKA
下面以MARDH MARD為例,如果一個(gè)物料在2011年9月份做了一筆貨物移動,則會自動在MARDH中更新2011年8月份的期末庫存,假如在2011年9月份一直沒有做貨物移動,則不會更新MARDH中8月份的期末庫存
?
假如我想獲得2011年7月份的庫存,則需要先在MARH中查找7月份的庫存,找不到找8月份的庫存,找不到找9月份的庫存,以此類推,最后都找不到,則用MARD中的庫存
?
* 下面代碼為獲取8月份的期初庫存和8月份的期末庫存
?
PARAMETERS:
*?會計(jì)年度
??p_gjahr??LIKE?bkpf-gjahr?OBLIGATORY?DEFAULT?'2011',
*?期間
??p_monat??LIKE?bkpf-monat?OBLIGATORY?DEFAULT?'08'.
?
DATA:
??v_gjahr??LIKE?bkpf-gjahr,????"?上月期間年度
??v_monat??LIKE?bkpf-monat.???"?上月期間月份
?
*?獲取上月度年度和月份
??IF?p_monat?=?'01'.
????v_monat?=?'12'.
????v_gjahr?=?p_gjahr?-?1.
??ELSE.
????v_monat?=?p_monat?-?1.
????v_gjahr?=?p_gjahr.
??ENDIF.
?
??DATA:?BEGIN?OF?typ_mardh,
????????p_string(6)?TYPE?c.
??????????INCLUDE?STRUCTURE?mardh?.
??DATA:?END?OF?typ_mardh.
??DATA:?i_mardh?LIKE?TABLE?OF?typ_mardh?WITH?HEADER?LINE.?????"?期末數(shù)據(jù)
??DATA:?n_mardh?LIKE?TABLE?OF?typ_mardh?WITH?HEADER?LINE.?????"?當(dāng)前庫存
??DATA:?m_mardh?LIKE?TABLE?OF?typ_mardh?WITH?HEADER?LINE.?????"?上月期初數(shù)據(jù)
?
*?查找?guī)齑鏆v史表
??SELECT?? *
????FROM?mardh
????INTO?CORRESPONDING?FIELDS?OF?TABLE?m_mardh
???WHERE?(?lfgja?>?v_gjahr?OR?(?lfgja?=?v_gjahr?AND?lfmon?>=?v_monat?)?).
??LOOP?AT?m_mardh?.
????CONCATENATE?m_mardh-lfgja?m_mardh-lfmon?INTO?m_mardh-p_string?.
????MODIFY?m_mardh?.
????IF?m_mardh-p_string?>=?p_estring?.
??????MOVE-CORRESPONDING?m_mardh?TO?i_mardh.
??????APPEND?i_mardh?.
????ENDIF.
??ENDLOOP.
?
??SELECT?? *
????FROM?mard
????INTO?CORRESPONDING?FIELDS?OF?TABLE?n_mardh .
?
??LOOP?AT?n_mardh?.
????CONCATENATE?n_mardh-lfgja?n_mardh-lfmon?INTO?n_mardh-p_string?.
????MODIFY?n_mardh?.
????MOVE-CORRESPONDING?n_mardh?TO?m_mardh.
????APPEND?m_mardh?.
????MOVE-CORRESPONDING?n_mardh?TO?i_mardh.
????APPEND?i_mardh?.
??ENDLOOP.
?
* 期初庫存都在表M_MARDH
??SORT?m_mardh?BY?matnr?werks?lgort?lfgja?lfmon?.
??DELETE?ADJACENT?DUPLICATES?FROM?m_mardh?COMPARING?matnr?werks?lgort.
*?期末庫存都在表I_MARDH
??SORT?i_mardh?BY?matnr?werks?lgort?lfgja?lfmon?.
??DELETE?ADJACENT?DUPLICATES?FROM?i_mardh?COMPARING?matnr?werks?lgort.
?
下面在獲取數(shù)據(jù)的時(shí)候,直接可以READ TABLE ........??BINARY?SEARCH?.
?
?
?
?轉(zhuǎn)載地址:http://blog.csdn.net/lbxp521/article/month/2011/08
總結(jié)
以上是生活随笔為你收集整理的SAP 取月度期初库存和月度期末库存(历史库存)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SAP中采购订单状态与MRP的关系
- 下一篇: ORA-12516 TNS: 监听程序找