與第三方製造執行系統整合

一些使用 Microsoft Dynamics 365 Supply Chain Management 的製造組織,會使用 Dynamics 365 中的原生功能來控制其機器、設備和人員的製造活動。 但其他製造組織,尤其是那些具有進階製造需求的製造組織,會使用第三方製造執行系統 (MES)。 組織可能會依據各種原因選擇第三方 MES 解決方案,例如解決方案是專為組織的垂直產業量身訂製的。

在整合式解決方案中,資料交換是完全自動化的,並且幾乎是即時發生的。 因此,兩個系統中的資料都保持最新,無需手動輸入資料。 例如,在 MES 中登記材料消耗時,整合可確保在 Dynamics 365 中也登記相同的消耗。 因此,最新的庫存記錄可用於其他重要流程,例如計劃和銷售。

該解決方案使 Supply Chain Management 使用者能夠更快、更輕鬆、更便宜地與第三方 MES 整合。 其中提供的功能如下:

下圖顯示了在整合式解決方案中交換的一系列典型業務事件、流程和訊息。

一般整合案例。

開啟 MES 整合功能

在您可以使用此功能之前,管理員必須按照以下步驟在您的系統中開啟該功能。

  1. 前往系統管理 > 設定 > 授權設定
  2. 確保 時間和出勤 許可證金鑰已啟用(顯示複選標記)。 此授權金鑰是必需的,因為它控制製造執行系統的功能和資料。 如果未啟用,請執行下列步驟:
    1. 進入系統的維修模式,如維修模式中的說明。
    2. 許可證配置 頁面上,選取 時間和出勤 複選框。
    3. 關閉維護模式,如 維護模式中所述
  3. 前往 系統管理 > 工作區 > 功能管理
  4. 使用 功能管理 工作區啟用 製造執行系統整合 功能。 (從 Supply Chain Management 版本 10.0.29 開始,此功能預設為開啟。從 Supply Chain Management 10.0.32 版開始,此功能為強制開啟,無法關閉。)

可用於 MES 整合的流程

您可以啟用以下任何或所有流程進行整合。

流程名稱 描述
下達生產訂單和生產訂單狀態變更業務事件 此流程提供了一個 MES 可以監聽的業務事件,以獲取有關應該生產的生產訂單資訊。 與生產訂單相關的參考資料預計將透過開放式資料通訊協定 (OData) 或資料實體從 Supply Chain Management 共享到 MES。
啟動生產訂單 此流程為 Supply Chain Management 提供有關使用 MES 啟動的生產訂單的資訊。 它確保兩個系統都能掌握所有製造活動的最新狀態。
報告生產或報廢數量 此流程為 Supply Chain Management 提供使用 MES 回報生產工作良好及錯誤數量的相關資訊。 它確保車間主管能夠及時了解生產計劃進度。
報告材料消耗 此流程為 Supply Chain Management 提供來自 MES 的已消耗材料數量相關資訊。 這樣最新的庫存記錄可用於其他重要流程,例如計劃和銷售。
報告作業消耗的時間 此流程為 Supply Chain Management 提供有關用於特定作業的時間資訊。
結束生產訂單 此流程通知 Supply Chain Management MES 已將生產訂單更新為其最終狀態 已結束。 此狀態表示生產訂單將不再生產任何數量。

監控內送郵件

若要監控傳入系統的 MES 訊息,請前往 生產控制 > 設定 > 製造執行 > 製造執行系統整合

特定生產訂單的所有訊息均按接收順序處理。 但是,由於批次作業是並行處理的,因此不同生產訂單的訊息可能不會按接收順序進行處理。 如果失敗,批次作業將嘗試處理每個訊息 3 次,然後將其設定為 失敗 狀態。

製造執行系統整合 頁面與 訊息處理器訊息 頁面的工作方式相同,並且表示非常相似的功能。 (除了其他類型的消息之外,它甚至還顯示 MES 訊息。)有關如何使用任一頁面查看訊息、查找和修復失敗訊息等的信息,請參閱 訊息處理器訊息頁面

呼叫 API

若要呼叫 MES 整合 API,請將 POST 請求傳送至下列端點 URL:

/api/services/SysMessageServices/SysMessageService/SendMessage

您發送的要求正文應類似於以下範例。 根據需要替換 _companyId_messageType_messageContent 的值。 有關 API 支援的各種訊息類型以及如何設計其內容的相關資訊,請參閱下一節。

{
    "_companyId": "USMF",
    "_messageQueue": "JmgMES3P",
    "_messageType": "ProdProductionOrderReportFinished",
    "_messageContent":
    "{\"ProductionOrderNumber\": \"P000123\", \"ReportFinishedLines\": [{\"ItemNumber\": \"A0001\", \"ReportedGoodQuantity\": 10, \"ReportAsFinishedDate\": \"2021-01-01\"}]}"
}

API 訊息類型和內容

本節介紹可以透過 MES 整合 API 交換的每種類型訊息。

開始生產訂單訊息

對於 開始生產訂單 訊息, _messageType 值為 ProdProductionOrderStart。 下表顯示了此訊息支援的欄位。

欄位名稱 狀態 類型
ProductionOrderNumber 強制 字串
StartedQuantity 可選項目 里耳
StartedDate 可選項目 日期
AutomaticBOMConsumptionRule 可選項目 列舉(FlushingPrincip | 永遠 | 從不)

完工報告訊息

對於 報告已完成 訊息, _messageType 值為 ProdProductionOrderReportFinished。 下表顯示了此訊息支援的欄位。

欄位名稱 狀態 類型
ProductionOrderNumber 強制 字串
ReportFinishedLines 強制 行清單 (至少一個),每個清單包含下表說明的承載

下表顯示了 ReportFinishedLines 訊息的 ProdProductionOrderReportFinished 部分中的每一行支援的欄位。

欄位名稱 狀態 類型
LineNumber 可選項目 里耳
ItemNumber 可選項目 字串
ProductionType 可選項目 枚舉(MainItem | Formula | BOM | Co_Product | By_Product | None),可擴充
ReportedErrorQuantity 可選項目 里耳
ReportedGoodQuantity 可選項目 里耳
ReportedErrorCatchWeightQuantity 可選項目 里耳
ReportedGoodCatchWeightQuantity 可選項目 里耳
AcceptError 可選項目 枚舉(是 | 否)
ErrorCause 可選項目 枚舉(無 | 材料 | 機器 | OperatingStaff),可擴展
ExecutedDateTime 可選項目 DateTime
ReportAsFinishedDate 可選項目 日期
AutomaticBOMConsumptionRule 可選項目 列舉(FlushingPrincip | 永遠 | 從不)
AutomaticRouteConsumptionRule 可選項目 枚舉(RouteDependent | 始終 | 從不)
RespectFlushingPrincipleDuringOverproduction 可選項目 枚舉(是 | 否)
ProductionJournalNameId 可選項目 字串
PickingListProductionJournalNameId 可選項目 字串
RouteCardProductionJournalNameId 可選項目 字串
FromOperationNumber 可選項目 整數
ToOperationNumber 可選項目 整數
InventoryLotId 可選項目 字串
BaseValue 可選項目 字串
EndJob 可選項目 枚舉(是 | 否)
EndPickingList 可選項目 枚舉(是 | 否)
EndRouteCard 可選項目 枚舉(是 | 否)
PostNow 可選項目 枚舉(是 | 否)
AutoUpdate 可選項目 枚舉(是 | 否)
ProductColorId 可選項目 字串
ProductConfigurationId 可選項目 字串
ProductSizeId 可選項目 字串
ProductStyleId 可選項目 字串
ProductVersionId 選擇性 字串
ItemBatchNumber 選擇性 字串
ProductSerialNumber 選擇性 字串
LicensePlateNumber 選擇性 字串
InventoryStatusId 選擇性 字串
ProductionWarehouseId 選擇性 字串
ProductionSiteId 選擇性 字串
ProductionWarehouseLocationId 選擇性 字串
InventoryDimension1InventoryDimension12 選擇性 字串

12 個可擴展維度(InventoryDimension1InventoryDimension12)需要自訂,並且並非總是使用。 有關它們的詳細信息,請參閱 透過擴充功能新增新的廣告資源維度

材料消耗 (揀料單) 訊息

對於 物料消耗(領料清單) 訊息, _messageType 值為 ProdProductionOrderPickingList。 下表顯示了此訊息支援的欄位。

欄位名稱 狀態 類型
ProductionOrderNumber 強制 字串
JournalNameId 選擇性 字串
PickingListLines 強制 行清單 (至少一個),每個清單包含下表說明的承載

下表顯示了 PickingListLines 訊息的 ProdProductionOrderPickingList 部分中的每一行支援的欄位。

欄位名稱 狀態 類型
ItemNumber 強制 字串
ConsumptionBOMQuantity 選擇性 真實
ProposalBOMQuantity 選擇性 真實
ScrapBOMQuantity 選擇性 真實
BOMUnitSymbol 選擇性 字串
ConsumptionInventoryQuantity 選擇性 真實
ProposalInventoryQuantity 選擇性 真實
ConsumptionCatchWeightQuantity 選擇性 真實
ProposalCatchWeightQuantity 選擇性 真實
ConsumptionDate 選擇性 日期
OperationNumber 可選項目 整數
LineNumber 可選項目 里耳
PositionNumber 可選項目 字串
IsConsumptionEnded 可選項目 枚舉(是 | 否)
ErrorCause 可選項目 枚舉(無 | 材料 | 機器 | OperatingStaff),可擴展
InventoryLotId 可選項目 字串

作業時間 (途程卡) 訊息

對於 操作(路由卡) 訊息所用的時間, _messageType 值為 ProdProductionOrderRouteCard。 下表顯示了此訊息支援的欄位。

欄位名稱 狀態 類型
ProductionOrderNumber 強制 字串
JournalNameId 選擇性 字串
RouteCardLines 強制 行清單 (至少一個),每個清單包含下表說明的承載

下表顯示了 RouteCardLines 訊息的 ProdProductionOrderRouteCard 部分中的每一行支援的欄位。

欄位名稱 狀態 類型
OperationNumber 強制性 整數
OperationPriority 可選項目 枚舉(主 | 次要 1 | 次要 2 | ... | 次要 20)
OperationId 可選項目 字串
OperationsResourceId 可選項目 字串
Worker 可選項目 字串
HoursRouteCostCategoryId 選擇性 字串
QuantityRouteCostCategoryId 選擇性 字串
HourlyRate 選擇性 真實
Hours 選擇性 真實
GoodQuantity 選擇性 真實
ErrorQuantity 選擇性 真實
CatchWeightGoodQuantity 選擇性 真實
CatchWeightErrorQuantity 選擇性 真實
QuantityPrice 選擇性 里耳
ProcessingPercentage 可選項目 里耳
ConsumptionDate 可選項目 日期
TaskType 可選項目 枚舉(QueueBefore | 設定 | 進程 | 重疊 | 傳輸 | QueueAfter | 負擔)
ErrorCause 可選項目 枚舉(無 | 材料 | 機器 | OperatingStaff),可擴展
OperationCompleted 可選項目 枚舉(是 | 否)
BOMConsumption 可選項目 枚舉(是 | 否)
ReportAsFinished 可選項目 枚舉(是 | 否)

結束生產訂單訊息

對於 最終生產訂單 訊息, _messageType 值為 ProdProductionOrderEnd。 下表顯示了此訊息支援的欄位。

欄位名稱 狀態 類型
ProductionOrderNumber 強制性 字串
ExecutedDateTime 可選項目 DateTime
EndedDate 可選項目 日期
UseTimeAndAttendanceCost 可選項目 枚舉(是 | 否)
AutoReportAsFinished 可選項目 枚舉(是 | 否)
AutoUpdate 可選項目 枚舉(是 | 否)

其他生產資訊

這些訊息支援車間發生的操作或事件。 它們是使用本文中描述的 MES 整合框架進行處理的。 此設計假設將從系統中檢索與 MES 共享的其他參考資訊(例如產品相關信息,或特定生產訂單中使用的物料清單或路線(及其特定設定和配置時間))透過文件傳輸或 OData 使用 資料實體

接收有關訊息狀態的意見反應

在 MES 向 Supply Chain Management 發送訊息後,Supply Chain Management 可能會傳回有關訊息狀態的意見反應。 這種行為也許能在以下情況範例中派上用場:

  • 沒有人負責不斷監督 MES 整合。
  • 負責監督 MES 整合的人希望在訊息失敗時收到電子郵件通知,以便讓他們知道必須採取行動。
  • MES 必須顯示錯誤訊息,以通知車間操作員或 IT 部門人員必須採取行動。
  • MES 必須在收到失敗訊息 (例如,因為生產訂單啟動失敗) 後重新計算訂單排程。

在這些情況下,您可以利用 Supply Chain Management 中的標準警示功能。 有關標準警示如何運作的資訊,請參閱以下資源:

例如,您可以設定以下警示以提供有關訊息狀態的意見反應:

  • 建立一個在訊息 失敗時使用的業務事件(「外部發送」)
  • 向 IT 管理員或生產車間經理發送通知和電子郵件。