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