文/潘勇 胡偉偉 陳軍偉
為達到精細化管理和企業高效運營,制造企業采用生產訂單來進行管理,但是制造企業很難做到當期開立的生產訂單關閉率達到100%,所以為綜合考慮準確反映生產訂單Loss,必須考慮未關閉生產訂單Loss 和其產品組件材料在產品數量和在產品金額。但是SAP 系統未提供標準功能計算生產訂單產品組件材料及制造費用在產品數量和在產品金額,同時企業生產訂單開立數量日益增多,如何從大量生產訂單數據中篩選當期有效生產訂單數據,快速準確計算Loss 為成本分析提供數據支持是目前亟待解決的問題。
傳統生產訂單Loss 計算沒有考慮未關閉生產訂單對應產品組件材料在產品數量和在產品金額,統計組件材料Loss 率不準確,無法為成本降低和生產環節改善提供數據支持;同時產品生產訂單是日益增多,無法從海量數據提取有價值生產訂單為組件材料Loss 計算提供數據準備,從而使原來的計算方法效率非常低,而且速度非常慢,適用性不強。
針對傳統生產訂單Loss計算方法效率低,提出新的生產訂單Loss 計算方法,植入自己編寫的算法,大大提高了效率;本方法主要根據輸入年月、工廠、產品編碼等參數,得出產品在當月組件材料投入數量、材料在產品變動數量和在產品變動金額等輸出結果,從而根據輸出結果字段數值計算出產品組件材料損耗率。
該方法核心功能模塊是生產訂單取數模塊:生產訂單取數模塊主要是根據生產訂單實際開立日期和技術關閉日期做日期限制,可以剔除出冗余的生產訂單,提取有效生產訂單數據,提高系統速度。
下面主要介紹本方法重要模塊:生產訂單取數模塊。
該模塊使用自己編寫的取有效工單數量算法getOrNum,通過工廠、訂單類型、年月份、生產版本參數,結合SAP標準后臺表AFKO(訂單表頭數據 PP 訂單)、AUFK(訂單主數據)、AFPO(訂單項)根據關鍵字訂單號連接這3 個后臺表,首先滿足訂單實際下達時間大于等于輸入參數年月份減去1年后的月份的第一天并且小于等于輸入參數年月份的最后一天,因為如果實際下達日期大于當期年月份的工單肯定不會在當期年月有生產數據,比如產量、投入等,可以剔除掉,同時考慮到有些工單跨周期比較長,該算法已經延長工單開立1年時間,不僅保證數據準確,防止遺漏工單數量,還能提煉有用工單數量;其次技術關閉日期大于等于輸入年月份第一天,可以把之前月份關閉的工單給剔除掉,因為之前關閉的工單肯定不會在下月在進行投料生產等,縮減訂單數量,通過以上結合,可以大大縮減數據量,提升系統運行速度。以下是訂單取數getOrNum 具體算法:
getOrNum(p_pla,p_otp,p_mo,p_ver) // p_pla 為工廠,p_otp 為訂單類型,p_mo 為年月,p_ver 為生產版本
{
Date:d1,d2,d3;//d1,d2,d3 為 時 間 類型變量
d1=lastYear(p_mo);//d1 是當前年月減去1年后的年月份的第一天
d2=finalDate(p_mo);//經過函數處理取當期月份最后一天
d3=firstDate(p_mo); //經過函數處理取當期月份第一天
select a-aufnr into gt_afko //gt_afko 為取出訂單的存放內表
from afko as a
join afpo as p on a-aufnr = p-aufnr //AFPO、AUFK、AFKO 為SAP 標準后臺表
join aufk as k on a-aufnr = k-aufnr
where k-werks=p_pla //werks 為工廠
and k-idat2>=d3
and p-verid=p_ver //verid 為生產版本
and d1<=a-ftrmi<=d2 //ftrmi 為訂單實際下達時間
and k-auart=p_otp //auart 為訂單類型
}
該算法以某公司SAP 測試機2017年1月至6月份數據實驗效果表明優化前每月工單數是萬級數量級,使用算法后只有千級數量級,使用getOrNum 算法顯示無效生產訂單數據平均降低了86%,同時通過AUFM 后臺表查看行項目數算法前后保持一致,沒有遺漏數據,準確率仍然保持在100%;使用新算法由原來的平均耗時60 分鐘,降低為8 分鐘左右,提速約6 倍多,大大提高了系統運行速度和組件材料準確率。
該方法植入自己編寫的生產訂單取數算法getOrNum,提取出有效的生產訂單數據,剔除無效的數據,大大縮減數據量,快速提高系統運行速度;將在產品考慮至該發明中,更能真實準確反映組件材料損耗率,為產品成本分析提供快速有效的數據支持。