库存查询算法
SAP 庫存查詢算法 SAP 的后臺有關庫存的表,是一種很有意思的表。庫存表分兩種,一種是當前庫存表,另一種是歷史庫存表。例如有MARD\MCHB\MSPR\MKOL等表,對應的歷史庫存表就是MARDH\MCHBH\MSPRH\MKOLH。當前庫存表表示的是,某款物料在當前時間的庫存,表里的年份月份字段表示的是某款物料從當時到現在的庫存,也就是說從當時到現在一直沒有發生過物料移動。舉個例子,某物料在當前表里的年份月份字段是201006,則表示這款物料從2010年6月到系統當前時間一直都沒有做過出入庫。數量不變。
而歷史庫存表表示的是,某款物料在歷史上的庫存記錄。如某款物料在201006是10個,201105是6個,201201是7個,則表示這款物料在上述3個時間發生過物料移動。
那么這就會引發一個問題,如果有一個報表需求,要求按照時間月份來查詢物料在當期的庫存。這個時候遵循的原則是,先到歷史庫存表里面去找。最好是從前往后推,即從某物料的最早的記錄往屏幕輸入時間推。如果推不到,則根據屏幕輸入的年份月份查找當前庫存表。
gt_mard 是與mard 同樣結構內表,gt_mardh是與mardh同樣結構的內表。
核心算法就是通過mardh的年份來推到屏幕輸入年份,如果推到了,就繼續推月份,兩者如果都能推到,則mardh的這條物料記錄就是該屏幕輸入月的庫存;否則,就以當前庫存mard中的數據作為該屏幕輸入時間的庫存。
而歷史庫存表表示的是,某款物料在歷史上的庫存記錄。如某款物料在201006是10個,201105是6個,201201是7個,則表示這款物料在上述3個時間發生過物料移動。
那么這就會引發一個問題,如果有一個報表需求,要求按照時間月份來查詢物料在當期的庫存。這個時候遵循的原則是,先到歷史庫存表里面去找。最好是從前往后推,即從某物料的最早的記錄往屏幕輸入時間推。如果推不到,則根據屏幕輸入的年份月份查找當前庫存表。
gt_mard 是與mard 同樣結構內表,gt_mardh是與mardh同樣結構的內表。
核心算法就是通過mardh的年份來推到屏幕輸入年份,如果推到了,就繼續推月份,兩者如果都能推到,則mardh的這條物料記錄就是該屏幕輸入月的庫存;否則,就以當前庫存mard中的數據作為該屏幕輸入時間的庫存。
總結
- 上一篇: 统计内表行数常用的三种方法
- 下一篇: SAP复合角色更改后扩展到派生节点