IDOC 作業的訊息結構描述
中繼檔 (IDOCS) 是 SAP 支援的類似 EDI 的檔,以非同步方式與 SAP 和非 SAP 系統通訊。 IDOCS 可用來傳送和接收商務檔,例如銷售訂單到交易夥伴的 SAP 系統或外部計畫。
雖然 SAP 系統支援許多埠類型來傳送和接收 IDOCS (例如,檔案埠或 CPIC 埠) ,但 Microsoft BizTalk Adapter for mySAP Business Suite 支援使用 tRFC 埠來傳送和接收 IDOCS。
針對輸出 IDOC,SAP 配接器會作為 tRFC 用戶端,並叫用 RFC 將 IDOC 傳送至 SAP。
針對輸入 IDOC,SAP 配接器會作為 tRFC 伺服器,並接受來自 SAP 的 tRFC 用戶端呼叫來接收 IDOC。
SAP 配接器會在 IDOC 節點底下呈現四個作業,您可以使用該節點來傳送和接收具有 SAP 系統的 IDOCS。
SendIdoc。 將 IDOC 傳送至配接器作為字串資料。 這項作業會直接呈現在 IDOC 根節點底下。 所有IDOC 都會使用相同的作業。
傳送。 將 IDOC 傳送至配接器做為強型別資料。 此作業會顯示在每個 IDOC 特定的節點底下。
ReceiveIdoc。 從配接器接收 IDOC 作為字串資料。 這項作業會直接呈現在 IDOC 根節點底下。 所有IDOC 都會使用相同的作業。
接收。 從配接器接收 IDOC 做為強型別資料。 此作業會顯示在每個 IDOC 特定的節點底下。
注意
這四個作業提供在程式與 SAP 配接器之間交換IDOC 的不同方式。 介面卡一律使用 RFC (,如下一節所述,) 傳送或接收 SAP 系統的IDOC。
除了使用四個 IDOC 作業的其中一項之外,您也可以使用 SAP 配接器內部使用的其中一個 RFC 來傳送或接收 IDOC,以與 SAP 系統交換IDOC。 如需 SAP 配接器如何支援IDOC 的概觀,請參閱 SAP 中的IDOC 作業。
本主題包含用於 IDOC 作業之訊息架構和訊息動作的相關資訊。
SAP 配接器用來傳送和接收IDOC 的 RFC
SAP 配接器會使用下列遠端函式呼叫, (RFC 在內部) 與 SAP 系統交換 IDOCS。 在輸出端 (介面卡至 SAP 系統) ,配接器會作為 tRFC 用戶端來叫用 RFC。 在 SAP 對介面卡) 的輸入端 (,SAP 會在介面卡上叫用 RFC,其可作為 tRFC 伺服器。
RFC | Description |
---|---|
IDOC_INBOUND_ASYNCHRONOUS | 此函式模組是從 4.0 版和更新版本使用。 它會在適用于 4.x 版本的記錄類型中處理 IDOCS。 這可確保支援較長的 IDOC 區段名稱。 此 RFC 的參數包括: - idoc_control_rec_40 (SAP 結構EDI_DC40) - idoc_data_rec_40 (SAP 結構EDI_DD40) IDOC 控制項記錄包含下欄欄位: - Mestyp。 邏輯訊息類型。 傳達訊息的商業意義。 這是強制欄位。 - Idoctyp。 IDOC 的基本結構。 此欄位會識別使用此訊息的組態集。 這是強制欄位。 - Cimtyp。 客戶延伸模組的結構。 如果擴充 SAP 基本結構,則客戶必須提供延伸模組結構的名稱。 如果客戶已進行增強功能,這是強制欄位;否則為初始。 - 合作夥伴欄位。 這些是傳送端和接收端合作夥伴參數,例如合作夥伴類型、合作夥伴號碼、合作夥伴函式。 IDOC 資料記錄包含下欄欄位: - 標頭欄位。 區段標頭欄位,例如資料表名稱、區段編號、區段類型。 這些是必要欄位。 - Sdata。 IDOC 所使用的資料 1000 位元組字元欄位。這是必要欄位。 |
INBOUND_IDOC_PROCESS | 此函式模組用於最多 4.0 版的版本。 它會在適用于 3.x 版本的記錄類型中處理 IDOCS。 您也可以在 4.x 中使用此函式模組。 此 RFC 的參數包括: - idoc_control (SAP 結構EDI_DC) - idoc_data (SAP 結構EDI_DD) |
傳送IDOC 的作業
SAP 配接器會公開傳送和 SendIdoc 作業,讓用戶端將IDOC 傳送至 SAP 系統。 針對傳送作業,IDOC 會以強型別資料表示;對於 SendIdoc 作業,IDOC 會以字串資料表示。 這些作業會決定 IDOC 資料在配接器與應用程式之間的表示方式。 配接器一律會使用 IDOC_INBOUND_ASYNCHRONOUS 或 IDOC_INBOUND_PROCESS (t) RFC 將 IDOC 傳送至 SAP。 若要將 IDOC 傳送至 SAP 系統,您可以使用 Send 或 SendIdoc 作業,也可以直接叫用適當的 RFC。
IDOC 用戶端作業的訊息結構
下表顯示 Send 和 SendIdoc 作業的訊息結構。
作業 | XML 結構 | 描述 |
---|---|---|
傳送 | <Send xmlns="[MSG_VERSION]/Idoc/[VERSION]/[IDOCTYP]/ [CIMTYP]/[RELNO]/Send"> <idocData> <[EDI_DC40/EDI_DC] xmlns="/Types/Idoc/ [VERSION]/[IDOCTYP]/[CIMTYP]/[RELNO]"> <EDIDC_FIELD1>value1</ EDIDC_FIELD1> <EDIDC_FIELD2>value2</ EDIDC_FIELD2> … </EDI_DC40> <[SEGMENT_DEFN]_1> <[DATAHEADERCOLUMN_[SEGHDR_FLD1]> header_value_1 </[DATAHEADERCOLUMN_[SEGHDR_FLD1]> <[DATAHEADERCOLUMN_[SEGHDR_FLD2]> header_value_2 </[DATAHEADERCOLUMN_[SEGHDR_FLD2]> … <SEG_FIELD1>value1</SEG_FIELD1> <SEG_FIELD2>value2</SEG_FIELD2> … </[SEGMENT_DEFN]_1> <[SEGMENT_DEFN]_2> <[DATAHEADERCOLUMN_[SEGHDR_FLD1]> header_value_1 </[DATAHEADERCOLUMN_[SEGHDR_FLD1]> <[DATAHEADERCOLUMN_[SEGHDR_FLD2]> header_value_2 </[DATAHEADERCOLUMN_[SEGHDR_FLD2]> … <SEG_FIELD1>value1</SEG_FIELD1> <SEG_FIELD2>value2</SEG_FIELD2> … </[SEGMENT_DEFN]_2> … </[EDI_DC40/EDI_DC]> </idocData> <guid>guid</guid> </Send> |
將強型別 IDOC 傳送至 SAP - IDOC 架構為強型別。 - 公開控制項記錄欄位。 - 公開資料記錄欄位,包括區段標頭和區段欄位。 SAP 配接器會將 GUID 與用來傳送 IDOC 的 SAP 交易識別碼 (TID) 產生關聯。 您可以選擇是否要在要求訊息中指定 GUID。 如果要求訊息中未包含 GUID,SAP 配接器會產生一個。 GUID 會在回應訊息中傳回。 |
傳送回應 | <SendResponse xmlns="[MSG_VERSION]/Idoc/[VERSION]/ [IDOCTYP]/[CIMTYP]/[RELNO]/Send"> <guid>guid</guid> </SendResponse> |
指出 IDOC 已傳送至 SAP 系統。 如果 AutoConfirmSentIdocs 系結屬性 為 true,SAP配接器會自動確認 SAP 系統上的交易,而且您可以忽略回應中傳回的 GUID。 如果 AutoConfirmSentIdocs 系結屬性為 false,您必須使用 SAP 配接器傳回的 GUID 叫用 RfcConfirmTransID 作業,才能完成 SAP 系統上的交易。 您可以叫用 SapAdapterUtilities.ConvertGuidToTid 方法,以取得與 LUW) 邏輯 (工作單元相關聯的 TID。 |
SendIdoc | <SendIdoc xmlns="[MSG_VERSION]/Idoc"> <idocData>docDataString</idocData> <guid>guid</guid> </SendIdoc> |
將弱型別 IDOC 傳送至 SAP。 - IDOC 架構為弱型別。 - 將 IDOC 公開為包含控制記錄和資料記錄的單一字串欄位。 SAP 配接器會將 GUID 與其用來傳送 IDOC 的 SAP TID 產生關聯。 您可以選擇是否要在要求訊息中指定 GUID。 如果要求訊息中未包含 GUID,SAP 配接器將會產生一個。 回應訊息中會傳回 GUID |
SendIdoc 回應 | <SendIdocResponse xmlns="[MSG_VERSION]/Idoc"> <guid>guid</guid> </SendIdocResponse> |
指出 IDOC 已傳送至 SAP 系統。 如果 AutoConfirmSentIdocs 系結屬性 為 true,SAP配接器會自動確認 SAP 系統上的交易,而且您可以忽略回應中傳回的 GUID。 如果 AutoConfirmSentIdocs 系結屬性為 false,您必須使用 SAP 配接器傳回的 GUID 叫用 RfcConfirmTransID 作業,才能完成 SAP 系統上的交易。 您可以叫用 SapAdapterUtilities.ConvertGuidToTid 方法來取得與 LUW 相關聯的 TID。 |
[MSG_VERSION] = 訊息版本字串;例如, http://Microsoft.LobServices.Sap/2007/03
。
[VERSION] = IDOC 版本 (2 或 3) 。
[IDOCTYP] = IDOC 類型;例如,ORDERS05。
[CIMTYP] = 自訂 IDOC 的 Cimtype。
[RELNO] = 發行編號;例如 620。
[EDI_DC40/EDI_DC] = 版本 3 IDOC 的EDI_DC40,以及第 2 版IDOC 的 EDI_DC。
[EDIDC_FIELD] = 欄位EDI_DC40/EDI_DC控制項記錄結構。
[SEGMENT_DEFN] = 區段定義名稱 (NOT 區段類型名稱) ;例如,E2EDK01005。 請注意,區段定義節點也可以根據 IDOC 的結構出現在區段群組節點之下。
[DATAHEADERCOLUMN_ (SEGHDR_FLD) ] = 每個區段都有一個區段標頭,其中包含一組標準標頭欄位,後面接著區段資料。 區段資料是由所有區段欄位和資料所組成。 此節點代表區段標頭欄位;例如,DATAHEADERCOLUMN_SEGNAM。
[SEG_FIELD] = 區段功能變數名稱,代表特定區段定義 [SEGMENT_DEFN]。
[guid] = GUID 參數。
IDOC 用戶端作業的訊息動作
下表顯示 Send 和 SendIdoc 作業的訊息動作。
作業 | 動作 | 範例 |
---|---|---|
傳送 | [MESSAGE_VERSION]/Idoc/[VERSION] /[IDOCTYP]/[CIMTYP]/[RELNO]/Send | http://Microsoft.LobServices.Sap/2007/03/Idoc/3/ORDERS05//620/Send |
傳送回應 | [MESSAGE_VERSION]/Idoc/[VERSION] /[IDOCTYP]/[CIMTYP]/[RELNO]/Send/response | http://Microsoft.LobServices.Sap/2007/03/Idoc/3/ORDERS05//620/Send/response |
SendIdoc | [MESSAGE_VERSION]/Idoc/SendIdoc | http://Microsoft.LobServices.Sap/2007/03/Idoc/SendIdoc |
SendIdoc 回應 | [MESSAGE_VERSION]/Idoc/SendIdoc/response | http://Microsoft.LobServices.Sap/2007/03/Idoc/SendIdoc/response |
[MESSAGE_VERSION] = 訊息版本字串;例如, http://Microsoft.LobServices.Sap/2007/03
。
[VERSION] = IDOC 版本 (2 或 3) 。
[IDOCTYP] = IDOC 類型;例如,ORDERS05。
[CIMTYP] = 自訂 IDOC 的 Cimtype。
[RELNO] = 發行編號;例如 620。
接收IDOC 的作業
SAP 配接器會公開接收和 ReceiveIdoc 作業,讓應用程式從 SAP 系統接收IDOC。 針對接收作業,IDOC 會以強型別的資料表示;針對 ReceiveIdoc 作業,IDOC 會以字串資料表示。
這些作業會決定配接器對應用程式發出 IDOC 資料的方式。 配接器一律會從 SAP 系統接收 IDOC 作為IDOC_INBOUND_ASYNCHRONOUS或IDOC_INBOUND_PROCESS tRFC。 您可以使用 Receive 或 ReceiveIdoc 作業,也可以使用 RFC 格式接收 IDOC 資料。 您可以設定 ReceiveIdocFormat 系結屬性,以指定配接器將 IDOC 資料發出至應用程式的格式。 如需 SAP 配接器系結屬性的詳細資訊,請參閱 閱讀 BizTalk Adapter for mySAP Business Suite 系結屬性。
IDOC 接收作業的訊息結構
下表顯示 Receive 和 ReceiveIdoc 作業的訊息結構。
作業 | XML 結構 | Description |
---|---|---|
接收 | <Receive xmlns="[MSG_VERSION]/Idoc/[VERSION]/[IDOCTYP]/ [CIMTYP]/[RELNO]/Receive"> <idocData> <[EDI_DC40/EDI_DC] xmlns="/Types/Idoc/ [VERSION]/[IDOCTYP]/[CIMTYP]/[RELNO]"> <EDIDC_FIELD1>value1</ EDIDC_FIELD1> <EDIDC_FIELD2>value2</ EDIDC_FIELD2> … </EDI_DC40> <[SEGMENT_DEFN]_1> <[DATAHEADERCOLUMN_[SEGHDR_FLD1]> header_value_1 </[DATAHEADERCOLUMN_[SEGHDR_FLD1]> <[DATAHEADERCOLUMN_[SEGHDR_FLD2]> header_value_2 </[DATAHEADERCOLUMN_[SEGHDR_FLD2]> … <SEG_FIELD1>value1</SEG_FIELD1> <SEG_FIELD2>value2</SEG_FIELD2> … </[SEGMENT_DEFN]_1> <[SEGMENT_DEFN]_2> <[DATAHEADERCOLUMN_[SEGHDR_FLD1]> header_value_1 </[DATAHEADERCOLUMN_[SEGHDR_FLD1]> <[DATAHEADERCOLUMN_[SEGHDR_FLD2]> header_value_2 </[DATAHEADERCOLUMN_[SEGHDR_FLD2]> … <SEG_FIELD1>value1</SEG_FIELD1> <SEG_FIELD2>value2</SEG_FIELD2> … </[SEGMENT_DEFN]_2> … </[EDI_DC40/EDI_DC]> </idocData> </Receive> |
從 SAP 接收強型別 IDOC - IDOC 架構為強型別。 - 公開控制項記錄欄位。 - 公開資料記錄欄位,包括區段標頭和區段欄位。 |
接收回應 | <ReceiveResponse xmlns="[MSG_VERSION]/Idoc/[VERSION]/[IDOCTYP]/ [CIMTYP]/[RELNO]/Receive"> </ReceiveResponse> |
指出已從 SAP 系統接收 IDOC。 |
ReceiveIdoc | <ReceiveIdoc xmlns="[MSG_VERSION]/Idoc"> <idocData>docDataString</idocData> </ReceiveIdoc> |
從 SAP 接收弱型別 IDOC。 - IDOC 架構為弱型別。 - 將 IDOC 公開為包含控制記錄和資料記錄的單一字串欄位。 |
ReceiveIdoc 回應 | <ReceiveIdocResponse xmlns="[MSG_VERSION]/Idoc"> </ReceiveIdocResponse> |
指出已從 SAP 系統接收 IDOC。 |
[MSG_VERSION] = 訊息版本字串;例如, http://Microsoft.LobServices.Sap/2007/03
。
[VERSION] = IDOC 版本 (2 或 3) 。
[IDOCTYP] = IDOC 類型;例如,ORDERS05。
[CIMTYP] = 自訂 IDOC 的 Cimtype。
[RELNO] = 發行編號;例如 620。
[EDI_DC40/EDI_DC] = 第 3 版IDOC 的EDI_DC40,以及版本 2 IDOC 的EDI_DC。
[EDIDC_FIELD] = 欄位EDI_DC40/EDI_DC控制項記錄結構。
[SEGMENT_DEFN] = 區段定義名稱 (NOT 區段類型名稱) ;例如,E2EDK01005。 區段定義節點也可以根據 IDOC 的結構出現在區段群組節點底下。
[DATAHEADERCOLUMN_ (SEGHDR_FLD) ] = 每個區段都有一個區段標頭,其中包含一組標準標頭欄位,後面接著區段資料。 區段資料是由所有區段欄位和資料所組成。 此節點代表區段標頭欄位;例如,DATAHEADERCOLUMN_SEGNAM。
[SEG_FIELD] = 區段功能變數名稱,代表特定區段定義 [SEGMENT_DEFN]。
以 RFC 格式接收 IDOC
您也可以以 RFC 格式接收 IDocs。 用來從 SAP 接收IDOC 的 RFC 包括:
第 3 版IDOC IDOC_INBOUND_ASYNCHRONOUS。
第 2 版IDOC INBOUND_IDOC_PROCESS。
下列程式碼顯示以IDOC_INBOUND_ASYNCHRONOUS作業方式接收的 IDOC 結構。
<IDOC_INBOUND_ASYNCHRONOUS xmlns="http://Microsoft.LobServices.Sap/2007/03/Rfc/">
<IDOC_CONTROL_REC_40>
<EDI_DC40 xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">
<EDIDC_FIELD1>field1</EDIDC_FIELD1>
<EDIDC_FIELD2>field2</EDIDC_FIELD2>
…
</EDI_DC40>
<IDOC_DATA_REC_40>
<EDI_DD40 xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">
<[SEG_HEADER_FIELD1]>value1</[SEG_HEADER_FIELD1]>
<[SEG_HEADER_FIELD2]>value2</[SEG_HEADER_FIELD2]>
…
<SDATA>segment value</SDATA>
</EDI_DD40>
…
</IDOC_DATA_REC_40>
</IDOC_INBOUND_ASYNCHRONOUS>
[EDIDC_FIELD] = 欄位EDI_DC40/EDI_DC控制項記錄結構
[SEG_HEADER_FIELD] = 每個區段都有一個區段標頭,其中包含一組標準標頭欄位,後面接著區段資料。 區段資料是由所有區段欄位和資料所組成。 此節點代表區段標頭欄位;例如,SEGNAM、MANDT 和 DOCNUM。
如需 tRFC 作業格式的詳細資訊,請參閱 tRFC 作業的訊息架構。
IDOC 接收作業的訊息動作
下表顯示 Receive 和 ReceiveIdoc 作業的訊息動作。
作業 | 動作 | 範例 |
---|---|---|
接收 | [MESSAGE_VERSION]/Idoc/[VERSION] /[IDOCTYP]/[CIMTYP]/[RELNO]/Receive | http://Microsoft.LobServices.Sap/2007/03/Idoc/3/ORDERS05//620/Receive |
接收回應 | [MESSAGE_VERSION]/Idoc/[VERSION] /[IDOCTYP]/[CIMTYP]/[RELNO]/Receive/response | http://Microsoft.LobServices.Sap/2007/03/Idoc/3/ORDERS05//620/Receive/response |
ReceiveIdoc | [MESSAGE_VERSION]/Idoc/ReceiveIdoc | http://Microsoft.LobServices.Sap/2007/03/Idoc/ReceiveIdoc |
ReceiveIdoc 回應 | [MESSAGE_VERSION]/Idoc/ReceiveIdoc/response | http://Microsoft.LobServices.Sap/2007/03/Idoc/ReceiveIdoc/response |