
延續:皮克敏娃娃訂單案例。上一篇文中提到:「ERP 在生產製造裡扮演著翻譯官:把業務導向的訂單,轉成工廠可執行的工單。依庫存、交期、產能與生產邏輯做核算與拆解。」
「轉成工廠可執行的工單」不是靠地球自轉、也不是頭轉 😅😅
這篇用同一個案例 訂單 PO-PKM-8842|皮克敏娃娃混單 1,000 隻,用三種資訊串接方式走一遍:工單 Release 之後,怎麼讓 MES 收得到、回寫對、帳對得上。
先把皮克敏娃娃訂單案例數字攤開來看,下面從交期與庫存看數字,後續再詳細展開工單資訊:
| 項目 | 數字 | 說明 |
|---|---|---|
| 客戶訂單量 | 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 週內交貨」——承諾與可執行計畫是兩回事。
延續上段:業務 Peter 在 Line 講的是 PO-PKM-8842、皮克敏 1,000 隻;生管 Kevin 在 ERP 裡核准的是 WO-01、WO-02…;吊飾產線領班在 MES 螢幕前要追溯的,也是工單號,不是訂單號。
這就是製造現場常說的分工:
大腦決定了「週一要先交 400 隻(含 150 現貨 + 250 新生產)」;雙手必須知道「A 吊飾產線現在開始做 WO-01|PK01 紅葉|200 隻|走填充 > 縫製 > 掛吊牌」。中間若沒有串接,就會出現皮克敏娃娃訂單案例那種對話——生管問工單號、領班說 MES 裡沒有、大家改靠 Line 與紙本 …
串接要解決的不只是「把兩套軟體接在一起」這麼抽象,更是資訊對齊要做到這三件事:
下面我會繼續用皮克敏娃娃訂單 PO-PKM-8842 核准後的同一張 工單 WO-01,分享實務上常見的三種串接做法。
但在解法之前必須先搞懂兩大系統串接會遇到的挑戰和問題:
ERP 與 MES 從一開始就不是同一套軟體。
以訂單 PO-PKM-8842 為例:生管 Kevin 在 ERP 核准的是 WO-01|紅葉吊飾|200 隻|週一交——這是ERP(計畫層) 的資訊。吊飾產線領班在 MES 要處理的是 開工單時間、批號、填充製程站過站、不良品數 2 隻——這是MES(執行層) 的紀錄。
問題來了:ERP 不會自動理解「這台填充機剛停機」;MES 也不該自己發明「要不要做岩石款」。兩邊的欄位、粒度、更新頻率本來就不同。串接不是在複製資料表,而是在設計一條 「計畫語言 <-> 現場語言」的翻譯規則——例如:ERP 的 Released 工單,要變成 MES 可派工的 WO-01;MES 完成加工,要變成 ERP 能過帳的完工與消耗紀錄。
很多導入案不是第一天就爆炸,而是隨著時間推移默默偏掉。
想像週一結束:MES 顯示工單 WO-01 已完工 198 隻,ERP 在製還掛 200 隻;或更糟——ERP 已經 Release 工單 WO-03,MES 根本沒收到,領班用 Line 問生管 Kevin「工單號呢?」。前者影響庫存與成本(業務問交期、財務問毛利);後者影響產線能不能開工。
這也是為什麼不論用何種方式串接,都要規劃 MES > ERP 回寫,以及 兩邊稽核對帳:ERP Released 幾張?MES 收到幾張?完工後回寫了幾張?在科技業談的「資料一致性」,在製造現場白話就是——兩邊數字要能對到同一張工單 WO-01,而不是各說各話。
系統串接要有人定規格、寫介面(或定 Excel 模板)、測試異常、上線後維護。
對任何生產製造業者來說,若 MES 系統很舊、ERP 系統更是近年才換新,那通常會卡在:兩邊系統廠商各說各話、誰來做中間那層、預算只夠買軟體不夠做串接。這不是技術不可能,而是產品開發的資源與風險要事先講清楚,也說明為何下面要比較三種做法,再決定生產製造業者走哪一條路。
當 ERP 已算清還要做 850 隻、拆好 WO-01(紅葉 200|A 吊飾線|週一交) 並 Release 之後,才輪到跨系統傳遞,讓 MES 收得到工單、回寫完工。下面先對齊「送什麼」,再看「資料往哪流」,最後比較 Excel、中繼資料表、API 怎麼送。
不論是匯入 Excel、中繼資料表或 API,傳遞資訊都是「已核准(Released)的生產工單」,不是訂單 PO-PKM-8842 這一行混單描述。
以訂單 PO-PKM-8842 為例,ERP Release 後下達 MES 的 5 張工單如下(合計 850 淨生產;週一交 400、週四交 600):
| 工單號 | 品號 | 款式 | 數量 | 產線 | 備註 |
|---|---|---|---|---|---|
| WO-01 | PK01-R | 紅葉吊飾 | 200 | A 吊飾線 | 週一批;單批上限 200 |
| WO-02 | PK01-R | 紅葉吊飾 | 150 | A 吊飾線 | 週四批次(紅葉補量) |
| WO-03 | PK02-Y | 黃葉吊飾 | 200 | B 吊飾線 | 週一批 |
| WO-04 | PK02-Y | 黃葉吊飾 | 150 | B 吊飾線 | 週四批次(黃葉補量) |
| WO-05 | PK04-ROCK | 岩石吊飾 | 150 | C 線 | 岩石款;填充 / 途程與紅 / 黃葉不同 |
工單下達 MES 時,最少要帶的欄位(各廠 ERP / MES 命名不同,但邏輯大同小異):
RT-PKM-TAG-v3:填充 > 縫製 > 掛吊牌)PO-PKM-8842,追溯用,不是 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 系統、每週 Released 工單不多、或 MES 版本 沒有標準 API,初期用 Excel 是合理的。當 DB 或 API 開發有難度時,Excel 也是常見退而求其次的務實退路;但要接受即時性與自動化有限。
週五 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 追問「工單號呢?」
| WO_NO | ITEM | QTY | LINE | PLAN_DUE | ROUTING | SO_REF | STATUS |
|---|---|---|---|---|---|---|---|
| WO-01 | PK01-R | 200 | A-TAG | 2025-03-17 18:00 | RT-PKM-TAG-v3 | PO-PKM-8842 | Released |
| WO-03 | PK02-Y | 200 | B-TAG | 2025-03-17 18:00 | RT-PKM-TAG-v3 | PO-PKM-8842 | Released |
| 風險 | 皮克敏現場會怎樣 |
|---|---|
| 時間差 | Release 與匯入之間有空窗,急單、改線容易漏 |
| 人為失誤 | 匯錯檔、舊檔覆蓋、欄位對錯(有可能 200 變 2,000) |
| 排程限制 | 若靠工程師定時產檔(例如每 30 分鐘),仍非即時;比 API 慢一截 |
| 難閉環 | 完工後還要再匯「完工檔」回 ERP,容易變成 雙向人工 |
皮克敏工廠有專職 RD、ERP 與 MES 都在同廠可維護、每天 Released 工單十張以上,中繼資料表是台灣很多中、小製造廠用很多年的 高 CP 值方案。它比 Excel 更少人工作業,又比 API 開發門檻低(尤其雙方團隊都熟 SQL 時)。
ERP Release > 寫入中繼資料表
生管 Kevin Release 工單 WO-01 時,ERP 觸發程序(或排程)寫入 IF_WORK_ORDER:
| WO_NO | ITEM | QTY | LINE | PLAN_START | PLAN_DUE | ROUTING | SO_REF | SYNC_STATUS | ERR_MSG |
|---|---|---|---|---|---|---|---|---|---|
| WO-01 | PK01-R | 200 | A-TAG | 03-14 08:00 | 03-17 18:00 | RT-PKM-TAG-v3 | PO-PKM-8842 | NEW |
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_NO | GOOD_QTY | SCRAP_QTY | COMPLETE_TIME | SYNC_STATUS |
|---|---|---|---|---|
| WO-01 | 198 | 2 | 03-17 16:30 | NEW |
夜間 ERP 讀回 > 更新在製、倒扣填充棉與聚酯纖維、計入工單 WO-01 成本——業務端看到的銷售成本數字,才跟得上現場。
NEW > DONE / ERROR 狀態機,RD 好維護
| 風險 | 說明 |
|---|---|
| Schema 耦合性 | ERP 改欄位名、MES 改表結構,中繼資料表與負責掃描 NEW 的排程程式都要跟著改 |
| 排程停了沒人知 | 資料堆在 NEW,現場又問「工單呢?」,要有監控與告警 |
| 非「秒」級速度 | 1~5 分鐘批;若緊急插單 WO-URGENT-01 要「Release 後 30 秒上線」,可能還得縮排程或改 API |
| 資安與權限 | DB 連線、帳號、寫入權限要管;不能變成誰都能改中繼資料表 |
ERROR > 修正後改回 NEW
皮克敏工廠正式量產、週一 / 週四交期壓力大、WO-URGENT-01 這類插單常發、主管要求當天帳務對齊——API 是長期正解。異質系統用 標準 HTTPS + JSON 交換資料,不必靠人搬檔案。
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。
| 風險 | 說明 |
|---|---|
| 開發與測試成本高 | 欄位的 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 對齊,或兩邊資訊從未正確核對。