ERP 工單怎麼下達到 MES 系統?一次搞懂 Excel、中繼資料表、API 三種串接實務方式

ERP 工單怎麼下達到 MES 系統?一次搞懂 Excel、中繼資料表、API 三種串接實務方式

延續:皮克敏娃娃訂單案例。上一篇文中提到:「ERP 在生產製造裡扮演著翻譯官:把業務導向的訂單,轉成工廠可執行的工單。依庫存、交期、產能與生產邏輯做核算與拆解。」

「轉成工廠可執行的工單」不是靠地球自轉、也不是頭轉 😅😅

這篇用同一個案例 訂單 PO-PKM-8842|皮克敏娃娃混單 1,000 隻,用三種資訊串接方式走一遍:工單 Release 之後,怎麼讓 MES 收得到、回寫對、帳對得上

目錄

  1. 案例:訂單 PO-PKM-8842,數字怎麼對?
  2. 為什麼 ERP 與 MES 一定要串接?
  3. MES 與 ERP 串接面臨的挑戰
  4. 工單核准後,怎麼到 MES 系統?三種常見串接方式
  5. 三種串接方式怎麼選?
  6. 串接失敗的三個坑
  7. 總結

案例:訂單 PO-PKM-8842,數字怎麼對?

先把皮克敏娃娃訂單案例數字攤開來看,下面從交期與庫存看數字,後續再詳細展開工單資訊:

項目數字說明
客戶訂單量1,000 隻業務訂單承諾總量
成品庫存150 隻成品現貨(可先出貨)
淨生產需求850 隻1,000 − 150(工廠得趕著做)
分批交貨週一 400 隻、週四 600 隻交貨合計才是 1,000 隻
庫存分配週一 400 隻含 150 隻現貨 + 250 隻新生產;週四 600 隻全新生產ERP 把現貨「指到」第一個交期
吊飾產線單批上限200 隻設備 / 換線節奏限制
依品號淨生產紅葉 350 + 黃葉 350 + 岩石 150 = 850對應下方 5 張工單 WO;週一先交紅 / 黃,週四含岩石款

週一只需再做 250 隻,為什麼工單卻 Release 400 隻?

週一對客戶交400 隻 = 150 現貨 + 250 當週必須新完工(這是交期視角)。

但紅葉、黃葉是不同品號,吊飾線又有 單批 200 上限,生管不會只開 250 「剛剛好的單」,而是 Release WO-01(紅葉 200)+ WO-03(黃葉 200),合計 400 隻工單產量(這是產線批次視角)。

多出來的 150 隻(400 − 250)先入成品倉;週四再交 600 隻時,會搭配 WO-02 / WO-04 / WO-05 新做的 450 隻一起出(150 + 450 = 600),不會和 850 淨需求打架。

生管在 ERP 看到的是上表;業務看到的是「1,000 隻、4 週內交貨」——承諾可執行計畫是兩回事。

為什麼 ERP 與 MES 一定要串接?

延續上段:業務 Peter 在 Line 講的是 PO-PKM-8842、皮克敏 1,000 隻;生管 Kevin 在 ERP 裡核准的是 WO-01、WO-02…;吊飾產線領班在 MES 螢幕前要追溯的,也是工單號,不是訂單號。

這就是製造現場常說的分工:

  • ERP(計畫層):像公司的「大腦」——管銷售承諾、庫存、採購、成本、工單主檔與 Released 狀態
  • MES(執行層):像產線的「雙手」——管派工、批號、設備、真實產出與履歷

大腦決定了「週一要先交 400 隻(含 150 現貨 + 250 新生產)」;雙手必須知道「A 吊飾產線現在開始做 WO-01|PK01 紅葉|200 隻|走填充 > 縫製 > 掛吊牌」。中間若沒有串接,就會出現皮克敏娃娃訂單案例那種對話——生管問工單號、領班說 MES 裡沒有、大家改靠 Line 與紙本 …

串接要解決的不只是「把兩套軟體接在一起」這麼抽象,更是資訊對齊要做到這三件事:

  1. ERP 把資料拋到 MES:ERP 已經 Released 的工單,MES 要收得到、欄位要對、現場才開工
  2. MES 將資料回寫 ERP:MES 完成加工的良品 / 消耗 / 不良,ERP 要過帳,庫存與成本才對得上
  3. 兩系統稽核對帳:兩邊數字不一致時,要能查是誰漏了、卡在哪

MES 與 ERP 串接面臨的挑戰

下面我會繼續用皮克敏娃娃訂單 PO-PKM-8842 核准後的同一張 工單 WO-01,分享實務上常見的三種串接做法。

但在解法之前必須先搞懂兩大系統串接會遇到的挑戰和問題:

1. 兩套系統講不同的語言

ERP 與 MES 從一開始就不是同一套軟體。

以訂單 PO-PKM-8842 為例:生管 Kevin 在 ERP 核准的是 WO-01|紅葉吊飾|200 隻|週一交——這是ERP(計畫層) 的資訊。吊飾產線領班在 MES 要處理的是 開工單時間、批號、填充製程站過站、不良品數 2 隻——這是MES(執行層) 的紀錄。

問題來了:ERP 不會自動理解「這台填充機剛停機」;MES 也不該自己發明「要不要做岩石款」。兩邊的欄位、粒度、更新頻率本來就不同。串接不是在複製資料表,而是在設計一條 「計畫語言 <-> 現場語言」的翻譯規則——例如:ERP 的 Released 工單,要變成 MES 可派工的 WO-01;MES 完成加工,要變成 ERP 能過帳的完工與消耗紀錄。

2. 帳對不上,比「串接失敗」更可怕

很多導入案不是第一天就爆炸,而是隨著時間推移默默偏掉

想像週一結束:MES 顯示工單 WO-01 已完工 198 隻,ERP 在製還掛 200 隻;或更糟——ERP 已經 Release 工單 WO-03,MES 根本沒收到,領班用 Line 問生管 Kevin「工單號呢?」。前者影響庫存與成本(業務問交期、財務問毛利);後者影響產線能不能開工

這也是為什麼不論用何種方式串接,都要規劃 MES > ERP 回寫,以及 兩邊稽核對帳:ERP Released 幾張?MES 收到幾張?完工後回寫了幾張?在科技業談的「資料一致性」,在製造現場白話就是——兩邊數字要能對到同一張工單 WO-01,而不是各說各話。

3. 系統串接是工程,不是多買一個模組

系統串接要有人定規格、寫介面(或定 Excel 模板)、測試異常、上線後維護。

對任何生產製造業者來說,若 MES 系統很舊、ERP 系統更是近年才換新,那通常會卡在:兩邊系統廠商各說各話、誰來做中間那層、預算只夠買軟體不夠做串接。這不是技術不可能,而是產品開發的資源與風險要事先講清楚,也說明為何下面要比較三種做法,再決定生產製造業者走哪一條路。

工單核准後,怎麼到 MES 系統?三種常見串接方式

當 ERP 已算清還要做 850 隻、拆好 WO-01(紅葉 200|A 吊飾線|週一交)Release 之後,才輪到跨系統傳遞,讓 MES 收得到工單、回寫完工。下面先對齊「送什麼」,再看「資料往哪流」,最後比較 Excel、中繼資料表、API 怎麼送

-先對齊:MES 收的不是訂單

不論是匯入 Excel、中繼資料表或 API,傳遞資訊都是「已核准(Released)的生產工單」,不是訂單 PO-PKM-8842 這一行混單描述。

以訂單 PO-PKM-8842 為例,ERP Release 後下達 MES 的 5 張工單如下(合計 850 淨生產;週一交 400、週四交 600):

工單號品號款式數量產線備註
WO-01PK01-R紅葉吊飾200A 吊飾線週一批;單批上限 200
WO-02PK01-R紅葉吊飾150A 吊飾線週四批次(紅葉補量)
WO-03PK02-Y黃葉吊飾200B 吊飾線週一批
WO-04PK02-Y黃葉吊飾150B 吊飾線週四批次(黃葉補量)
WO-05PK04-ROCK岩石吊飾150C 線岩石款;填充 / 途程與紅 / 黃葉不同

工單下達 MES 時,最少要帶的欄位(各廠 ERP / MES 命名不同,但邏輯大同小異):

  • 工單號、品號、數量、計劃開工 / 完工日
  • 產線或工作中心、途程版本(例如 RT-PKM-TAG-v3:填充 > 縫製 > 掛吊牌)
  • 對應銷售訂單 / 客戶(PO-PKM-8842追溯用,不是 MES 排程)
  • 工單狀態(僅 Released 應出現在 MES 系統)
  • 批號規則(若 MES 不自動產 Lot 批號的話)

少帶一個欄位,皮克敏產線就可能出大事:

  • 沒途程 > 紅葉款走錯製程站
  • 數量帶成 1,000 > 和淨生產 850 對不起來
  • 沒產線 > WO-01 被派到 C 線,吊牌變岩石款

-資料往哪流?一張圖 + 兩個方向

ERP 與 MES 串接資料流向圖

方向傳什麼皮克敏例子常見頻率
ERP 把資料拋到 MES製令、工單、BOM、途程、料號主檔工單 WO-01:PK01-R、200 隻、A 線、週一完工即時工單;主檔每天批次更新一次
MES 將資料回寫 ERP物料消耗、完工、良率、工時WO-01 完工:良品 198、不良 2、倒扣填充棉班別更換工單結案

不論 ERP 是哪一個廠牌,也不論 MES 系統是自行研發或套裝軟體,這張表和資料流的邏輯一樣都適用,差別只在介面長相與開發成本。

-三種方式概覽

方式典型情境優點風險 / 代價
1. Excel 匯入老舊 MES、POC、低頻更新快、成本低人工、延遲、易錯
2. 中繼資料表同廠可維護、熟 DB批次穩、可對帳Schema 耦合、需監控
3. API正式量產、要即時即時、可重試開發與維運成本高

無論選哪一種,都要有對帳與異常處理,不然 ERP 已經 Released 但 MES 沒收到,若沒有每日對帳,只是「資料搬運」,不是「打通流程」 …

-方式一:在 MES 系統手動匯入 Excel

*實務上適合什麼樣的作業現場?

皮克敏工廠剛導入 MES 系統、每週 Released 工單不多、或 MES 版本 沒有標準 API,初期用 Excel 是合理的。當 DB 或 API 開發有難度時,Excel 也是常見退而求其次的務實退路;但要接受即時性與自動化有限

*實際怎麼跑?(工單 WO-01 走一遍)

週五 14:00(ERP)

生管 Kevin 在 ERP 將 工單 WO-01(PK01-R|200 隻|A 線|週一 18:00 完工)Release。ERP 依固定模板匯出 WO_Release_20250314.xlsx(或由工程師排程每小時 / 每日產檔案一次)。

週五 14:30(人工)

生管 Kevin 登入 MES 系統 >「工單匯入」> 選檔案上傳。MES 解析欄位:工單號、品號、數量、產線、完工日、途程版本、參考 PO-PKM-8842

週五 14:35(製造現場)

A 線看板出現:WO-01|紅葉吊飾|200 隻|週一交。週一早上,領班才能對這批貨開始加工。

週三|插單壓力測試

業務追加 WO-URGENT-01(發光皮克敏 100 隻|週五前要)。ERP Release 後,若生管 Kevin 忘記再匯一次 Excel,MES 永遠看不到這張急單——現場又開始在 Line 追問「工單號呢?」

*Excel 匯出檔長什麼樣?
WO_NOITEMQTYLINEPLAN_DUEROUTINGSO_REFSTATUS
WO-01PK01-R200A-TAG2025-03-17 18:00RT-PKM-TAG-v3PO-PKM-8842Released
WO-03PK02-Y200B-TAG2025-03-17 18:00RT-PKM-TAG-v3PO-PKM-8842Released

*優點
  • 導入最快:不必等 API 規格、合約、開發排程
  • 生管可自主維護:熟悉 ERP 匯出 + MES 匯入 即可
  • 適合驗證欄位:先確認「WO-01 到底要帶哪些欄位」,再升級中繼資料表或串接 API

*代價與風險
風險皮克敏現場會怎樣
時間差Release 與匯入之間有空窗,急單、改線容易漏
人為失誤匯錯檔、舊檔覆蓋、欄位對錯(有可能 200 變 2,000)
排程限制若靠工程師定時產檔(例如每 30 分鐘),仍非即時;比 API 慢一截
難閉環完工後還要再匯「完工檔」回 ERP,容易變成 雙向人工

*現場 SOP 建議
  1. 誰匯、何時匯:例如每班開始前、每次 Release 後 30 分鐘內
  2. 匯入後誰對帳:ERP Released 清單 vs MES 已接收清單,每天至少核對一次
  3. 異常怎麼報:MES 匯入失敗,一定要有 Log 或提示、通知

-方式二:中繼資料表(Staging Table)​

*實務上適合什麼樣的作業現場?

皮克敏工廠有專職 RD、ERP 與 MES 都在同廠可維護、每天 Released 工單十張以上,中繼資料表是台灣很多中、小製造廠用很多年的 高 CP 值方案。它比 Excel 更少人工作業,又比 API 開發門檻低(尤其雙方團隊都熟 SQL 時)。

*實際怎麼跑?(工單 WO-01 走一遍)

ERP Release > 寫入中繼資料表

生管 Kevin Release 工單 WO-01 時,ERP 觸發程序(或排程)寫入 IF_WORK_ORDER

WO_NOITEMQTYLINEPLAN_STARTPLAN_DUEROUTINGSO_REFSYNC_STATUSERR_MSG
WO-01PK01-R200A-TAG03-14 08:0003-17 18:00RT-PKM-TAG-v3PO-PKM-8842NEW

MES 讀取

MES 服務每 1~5 分鐘 掃描 SYNC_STATUS = NEW 的資料 > 寫入 MES 工單表 > 成功則改 DONE;失敗改 ERROR 並填 ERR_MSG(例如「品號 PK01-R 在 MES 不存在」)。

現場

約 2 分鐘內,A 線看板出現工單 WO-01,不必等生管手動上傳 Excel

MES 將資料回寫 ERP:完成加工 > 再寫另一張中繼資料表

週一 16:30,工單 WO-01 完成加工:良品 198、不良品數 2。MES 寫入 IF_WO_COMPLETE

WO_NOGOOD_QTYSCRAP_QTYCOMPLETE_TIMESYNC_STATUS
WO-01198203-17 16:30NEW

夜間 ERP 讀回 > 更新在製、倒扣填充棉與聚酯纖維、計入工單 WO-01 成本——業務端看到的銷售成本數字,才跟得上現場

*優點
  • 批次穩定、可留痕追蹤:中繼資料表本身就是交接單 + 對帳簿的概念
  • 減少人工:Release 後自動進 MES,適合 WO-01~WO-05 五張一批核准
  • ERP 把資料拋到 MES;MES 將資料回寫 ERP,都是同一套思維NEW > DONE / ERROR 狀態機,RD 好維護
  • 比 Excel 適合正式上線:皮克敏週一 / 週四兩段交期,工單變動頻繁時更穩

*代價與風險
風險說明
Schema 耦合性ERP 改欄位名、MES 改表結構,中繼資料表與負責掃描 NEW 的排程程式都要跟著改
排程停了沒人知資料堆在 NEW,現場又問「工單呢?」,要有監控與告警
非「秒」級速度1~5 分鐘批;若緊急插單 WO-URGENT-01 要「Release 後 30 秒上線」,可能還得縮排程或改 API
資安與權限DB 連線、帳號、寫入權限要管;不能變成誰都能改中繼資料表

*設計原則(常提醒工程師的)
  • 中繼資料表只放 MES 真正會用到的欄位(例如工單號、品號、數量、產線),不要照抄 ERP 整張工單表的所有欄位
  • 每筆保留 建立時間、處理時間、錯誤訊息
  • 提供人工重送 機制:ERROR > 修正後改回 NEW
  • 每日報表:ERP Released 幾筆、中繼 DONE 幾筆、MES 實收幾筆

-方式三:API(RESTful / Web Service)

*實務上適合什麼樣的作業現場?

皮克敏工廠正式量產、週一 / 週四交期壓力大、WO-URGENT-01 這類插單常發、主管要求當天帳務對齊——API 是長期正解。異質系統用 標準 HTTPS + JSON 交換資料,不必靠人搬檔案。

*實際怎麼跑?(工單 WO-01 走一遍)

ERP 把資料拋到 MES:ERP Release 當下呼叫 MES

POST /api/v1/workorders
Content-Type: application/json

{
  "wo_no": "WO-01",
  "item": "PK01-R",
  "item_desc": "皮克敏紅葉吊飾",
  "qty": 200,
  "line": "A-TAG",
  "plan_start": "2025-03-14T08:00:00+08:00",
  "plan_due": "2025-03-17T18:00:00+08:00",
  "routing": "RT-PKM-TAG-v3",
  "so_ref": "PO-PKM-8842",
  "status": "Released"
}

MES 回 201 Created + 工單 ID;若品號不存在,回 400 + Error Code,ERP 畫面顯示「下達 MES 失敗:PK01-R 未建立」——生管當場就知道,不會等週一領班來問

現場:Release 後約 30 秒

A 線看板出現工單 WO-01。同一流程可平行下達工單 WO-03(B 線)、工單 WO-05(C 線)。

插單:WO-URGENT-01

POST /api/v1/workorders
Content-Type: application/json

{
  "wo_no": "WO-URGENT-01",
  "item": "PK05-GLOW",
  "qty": 100,
  "line": "B-TAG",
  "plan_due": "2025-03-21T12:00:00+08:00",
  "priority": 1,
  "so_ref": "PO-PKM-8842",
  "status": "Released"
}

MES 收到後調高排程優先順序,不必改訂單 PO-PKM-8842,呼應之前提到的「改工單比改訂單務實」。

MES 將資料回寫 ERP:完成加工當下

POST /api/v1/production/confirm
Content-Type: application/json

{
  "wo_no": "WO-01",
  "good_qty": 198,
  "scrap_qty": 2,
  "scrap_reason": "填充不均",
  "complete_time": "2025-03-17T16:30:00+08:00",
  "material_backflush": [
    { "item": "FILL-COTTON", "qty": 3.96 },
    { "item": "TAG-PK-RED", "qty": 198 }
  ]
}

ERP 準即時更新庫存與在製品,在財務、業務查成本時,看到的是 跟 MES 一致的 198 隻,不是 ERP 以為的 200。

*優點
  • 即時:適合換線快、交期緊
  • 可錯誤處理:重試、告警、冪等(操作執行一次或多次後,產生的結果和系統狀態都完全相同。同一工單 WO-01 重送不會變兩張)
  • 邊界清楚:API 規格 = 合約,適合 ERP / MES 不同廠商、不同維護團隊
  • ERP / MES 對稱:ERP 把資料拋到 MES;MES 將資料回寫 ERP,都有 Log 可以追

*代價與風險
風險說明
開發與測試成本高欄位的 Mapping、版本、異常情境(部分完工、報廢)都要寫進規格
維運Token、憑證、版本升級。API 如果掛了可能導致產線停擺
廠商配合兩邊都要開 API
上線前必測Release > MES 可開始加工 > 完成加工 > ERP 庫存正確,端對端跑過才算完成

三種串接方式怎麼選?

評估維度Excel 手動匯入中繼資料表(Staging Table)API
導入速度最快
即時性低(小時 ~ 班別)中(1 ~ 5 分鐘)高(秒 ~ 分鐘)
人為錯誤
工程師需求
對帳難(靠人工清單)中(看中繼資料表狀態)中(看 API Log)
適合生產製造業者的階段試跑、驗證欄位正式量產、有工程師維運急單多、帳要當天對

串接失敗的三個坑

1. 把訂單當 MES 主鍵:訂單 PO-PKM-8842 是 1,000 隻混單;MES 若只收到訂單號,現場仍不知道做紅葉還是岩石。必須是 WO-01 + PK01-R + 200 + A 線。

2. 只做 ERP 把資料拋到 MES、不做 MES 將資料回寫 ERP:工單 WO-01 順利開始加工,但完成加工沒回寫 ERP。

3. 沒有整合(Reconciliation):ERP Released 5 張、MES 只收到 4 張,若沒有每日對帳,漏掉的那 1 張會變成週一客訴。選 Excel 更要對帳;選 API 也要對 Log。

總結

ERP 把客戶的需求語言翻成工廠的執行指令,在什麼時間、用什麼資源、為哪個品號生產多少。PO-PKM-8842 的「皮克敏 1,000 隻」,到了工廠會變成「紅葉 WO-xx、岩石 WO-yy」等多張 Released 工單,再經 Excel、中繼資料表或 API 下達到 MES。訂單是起點;工單才是產線對得上的資訊。

轉換不等於串接。 ERP 在計畫層把 1,000 隻翻成 850 淨生產與多張 WO,是「算對」;Excel / 中繼資料表 / API 是「送對、收對、回寫對」。依我目前實務上的體會,串接失敗或串接後仍問題不斷,大部分都是業務規則沒在 ERP 對齊,或兩邊資訊從未正確核對

Ref

comments powered by Disqus