工單出站時若有不良品數量,將不良品入庫資料拋送至 ERP 系統建立報廢入庫單。 ERP 回傳入庫單號後,MES 將單號回寫至 SFT_TRANSORDER_LINE。
SCRAPQTY > 0(不良品數量大於零)時,
系統才會建立 TRANSORDERTYPE=58 的移轉單,並呼叫 ERP 不良品入庫 API。
TransOrderDataToJson.sentTransOrderDataAgain() 方法
判斷移轉單類型,若為報廢入庫則呼叫 woScrapDataCreate。
| 欄位 | MES 來源 | ERP 欄位 | 類型 | 必填 | 說明 |
|---|---|---|---|---|---|
| 單別編號 | transferType |
doc_type_no |
String | 必填 | 不良品入庫單類別 |
| 移轉單號 | eMESTransferType-eMESTransferCode |
source_no |
String | 必填 | MES 移轉單號(類別-號碼) |
| 建立日期 | date |
create_date |
Date | 必填 | 入庫日期 (yyyy-MM-dd) |
| 出站工作站 | moveOutCode |
workstation_no |
String | 必填 | 出站工作站代號 |
| 工廠編號 | factoryCode |
factory_no |
String | 必填 | 工廠代號 |
| 操作員 | create |
operator_no |
String | 選填 | 操作人員 |
| 備註 | remark |
remark |
String | 選填 | 單頭備註 |
| 欄位 | MES 來源 | ERP 欄位 | 類型 | 必填 | 說明 |
|---|---|---|---|---|---|
| 工單號 | moType-moCode |
wo_no |
String | 必填 | 工單類別-工單號碼 |
| 品號 | prodCode |
item_no |
String | 必填 | 產品品號 |
| 不良品數量 | SCRAPQTY |
scrap_qty |
Numeric | 必填 | 報廢數量 |
| 單位 | unit |
unit_no |
String | 必填 | 數量單位 |
| 進站倉庫 | moveInCode |
warehouse_no |
String | 必填 | 入庫倉庫代號 |
| 儲位 | moveInLocation |
location_no |
String | 選填 | 入庫儲位 |
| 批號 | batchCode |
lot_no |
String | 選填 | 批號 |
| 備註 | remark |
remark |
String | 選填 | 明細備註 |
{
"head": {
"transferType": "58",
"eMESTransferType": "SC",
"eMESTransferCode": "20260319001",
"date": "2026-03-19",
"moveOutCode": "WS001",
"factoryCode": "FACTORY01",
"create": "USER001",
"remark": "不良品入庫"
},
"line": [
{
"moType": "5101",
"moCode": "20260319001",
"prodCode": "ITEM-001",
"qty": "5",
"unit": "PCS",
"moveInCode": "WH-SCRAP",
"moveInLocation": "A01",
"batchCode": "BAT001",
"remark": "表面瑕疵"
}
]
}
<parameters>
<parameter key="enterprise_no" type="string">公司代碼</parameter>
<parameter key="site_no" type="string">工廠代碼</parameter>
<parameter key="wo_scrap_data" type="data">
<data name="wo_scrap">
<row seq="1">
<!-- ======== Head ======== -->
<field name="doc_type_no" type="string">58</field>
<field name="source_no" type="string">SC-20260319001</field>
<field name="create_date" type="date">2026-03-19</field>
<field name="remark" type="string">不良品入庫</field>
<field name="workstation_no" type="string">WS001</field>
<field name="factory_no" type="string">FACTORY01</field>
<field name="shift_no" type="string"></field>
<field name="operator_no" type="string">USER001</field>
<!-- ======== Line ======== -->
<detail name="wo_scrap_detail">
<row>
<field name="seq" type="string"></field>
<field name="wo_no" type="string">5101-20260319001</field>
<field name="item_no" type="string">ITEM-001</field>
<field name="scrap_qty" type="numeric">5</field>
<field name="unit_no" type="string">PCS</field>
<field name="remark" type="string">表面瑕疵</field>
<field name="machine_no" type="string"></field>
<field name="warehouse_no" type="string">WH-SCRAP</field>
<field name="location_no" type="string">A01</field>
<field name="lot_no" type="string">BAT001</field>
<field name="damage_qty" type="numeric"></field>
<field name="stock_in_status" type="string"></field>
</row>
</detail>
</row>
</data>
</parameter>
</parameters>
{
"code": 200,
"msg": "不良品入庫單建立成功",
"ERPMessage": {
"description": "處理成功",
"doc_no": "58-20260319001"
}
}
{
"code": 500,
"msg": "不良品入庫單建立失敗",
"ERPMessage": {
"description": "倉庫代號不存在"
}
}
| 欄位 | 類型 | 說明 |
|---|---|---|
code |
Integer | 200=成功, 500=失敗 |
msg |
String | 處理訊息 |
ERPMessage.doc_no |
String | ERP 回傳的不良品入庫單號(單別-單號) |
ERP 回傳不良品入庫單號後,MES 會將單號回寫至移轉單明細:
-- 更新 SFT_TRANSORDER_LINE
UPDATE SFT_TRANSORDER_LINE
SET TL011 = '58',
TL012 = '20260319001'
WHERE TRANSORDERTYPE = '58'
AND TRANSNO = :TRANSNO
AND SN = :SN
| 資料表 | 說明 | 關鍵欄位 |
|---|---|---|
SftTransorder |
移轉單頭檔 | TRANSTYPE, TRANSNO, TO007, TO008, TO013 |
SftTransorderLine |
移轉單明細 | TRANSORDERTYPE(=58), SCRAPQTY, TL011, TL012 |
SFT_WS_RUN |
工作站執行記錄 | 出站記錄、不良品數量來源 |
58 | 報廢入庫(不良品入庫) |
59 | 委外入庫 |
| 其他 | 一般移轉單 |
| 功能 | 檔案路徑 | 行號/方法 |
|---|---|---|
| 出站計算不良品 | SFT_core/src/com/dci/sft/update/CheckOut.java | doCheckOut() |
| 移轉單建立 | SFT_core/src/com/dci/sft/jsonMappingHibernate/TransOrderDataToJson.java | 595-900 |
| API 路由判斷 | SFT_ERPIntegrate/src/com/dci/sft/erp/XmlToERP_handler.java | 94-98 |
| XML 參數組裝 | SFT_ERPIntegrate/src/com/dci/sft/erp/webservice/SendFormS.java | 1752-1810 |
| 錯誤情境 | 原因 | 處理方式 |
|---|---|---|
| 倉庫代號不存在 | ERP 端無此倉庫 | 確認不良品倉庫已在 ERP 建立 |
| 品號不存在 | ERP 端無此品號 | 確認品號已同步至 ERP |
| 連線超時 | SocketTimeoutException | 檢查 ERP 伺服器狀態,需手動補送 |
// 日誌檔案:logs/ERPReturnErrorRec.log
[ERP_SEND_ERROR] taskName=woScrapDataCreate, errorType=SocketTimeoutException, errorMsg=Read timed out
[ERP_SEND_ERROR] 送出内容={...JSON...}