共用方式為


SAP 中IDOC 上的作業

IDOC 是 SAP 支援以非同步方式與 SAP 和非 SAP 系統通訊的類似 EDI 檔。 IDOC 可用來傳送和接收「商務」檔,例如銷售訂單,例如,從交易夥伴的 SAP 系統或外部計畫來回傳送和接收。

雖然 SAP 系統支援許多埠類型來傳送和接收 IDOC (,例如檔案埠、CPIC 埠) ,但 SAP 配接器支援透過 tRFC 埠傳送和接收IDOC。

傳送 IDOC 的作業

所有對 SAP 的 IDOC 呼叫都會在內部視為 tRFC 呼叫,讓配接器做為 tRFC 用戶端,並在 SAP 中呼叫 RFC 來傳送 IDOC。 就像任何其他 tRFC 用戶端呼叫一樣,配接器用戶端會選擇性地將 GUID 傳遞至配接器,進而將它與用於 SAP 系統上呼叫的交易識別碼 (TID) 產生關聯。 (如果配接器用戶端未傳遞 GUID,配接器會產生自己的 GUID.) GUID 會傳迴響應消息中的配接器用戶端。 配接器用戶端可以使用這個 GUID 來確認 SAP 系統上的 TID。 在 SAP 系結 ConvertGuidToTid中叫用特殊靜態方法,即可取得介面卡用於 tRFC 呼叫的實際 SAP TID。 讓實際的 TID 對 SAP 系統上的問題進行疑難排解可能很有用。

呼叫傳送 IDOC 之後,必須在 SAP 系統上確認 TID。 這可讓 SAP 系統從其資料庫刪除 TID。 配接器用戶端可以確認 SAP 系統上的 TID。

  • 明確叫用介面卡上的 RfcConfirmTransID 作業。 此作業會採用在上述回應訊息中傳回的 GUID () ,並讓配接器確認 SAP 系統上相關聯的 TID。

  • 藉由設定 AutoConfirmSentIdocs 系結屬性,以隱含方式。 如果這個系結屬性為 true,配接器會在將 IDOC 傳送至 SAP 系統之後自動認可 TID。 如需詳細資訊,請參閱 閱讀 BizTalk Adapter for mySAP Business Suite 系結屬性

    SAP 配接器會使用下列 RFC 來傳送 IDOC:

  • INBOUND_IDOC_PROCESS。 此函式模組用於 4.0 之前的 SAP 版本。

  • IDOC_INBOUND_ASYNCHRONOUS。 此函式模組用於 SAP 4.0 版和更新版本。

在多行之間傳送區段資料的IDOC

IDOC 是由區段所組成。 IDOC 一般檔案中的每個區段專案都包含區段標頭資訊, (包含 DOCNUM 欄位) 和區段資料。 在某些IDOC 中,區段資料可以分割成多行。 例如:

Segment header (DOCNUM is one of the fields here)  |  Segment data  
Segment header (DOCNUM is one of the fields here)  |  Segment data  
Segment data wrapped from the previous line  
Segment header (DOCNUM is one of the fields here)  |  Segment data  

WCF 型 SAP 配接器支援將這類IDOC 傳送至 SAP 系統。 為了支援傳送這類IDOC,SAP 配接器會判斷每個區段資料是否為前一個區段資料的接續,還是它是新的區段資料。 SAP 配接器會藉由剖析每個區段標頭並尋找 DOCNUM 欄位來決定這一點。 如果區段資料分割成兩行,則第二行沒有區段標頭,因此 SAP 配接器找不到 DOCNUM 欄位。 因此,SAP 配接器可以判斷它是前一個區段資料的接續。

例如,在上述 IDOC 的標記法中,SAP 配接器在 「 Segment data wrapped from the previous line 」 中找不到任何 DOCNUM 欄位,而且能夠決定該行是上一個區段資料的接續。 考慮生產環境中 IDOC 一般檔案的大小,針對每個區段資料執行這類檢查可能會導致處理時間增加。

注意

配接器會使用 DOCNUM 欄位,而不是歸位字元換行字元, (CRLF) 來識別和擷取 IDOC 資料中的每個區段記錄。 如果控制項和資料記錄中的 DOCNUM 欄位無效或部分空白,配接器將無法剖析 IDOC。 因此,IDOC 不會傳送至 SAP 系統。

傳送 IDOC 的作業

下列作業支援將IDOC 傳送至 SAP 系統:

  • 傳送。 使用此作業,使用強型別架構將 IDOC 傳送至 SAP 系統。 此作業的架構會公開控制記錄欄位和資料記錄欄位,包括區段標頭和區段欄位。 傳送作業是 IDocType + CimType + ReleaseNumber + Version 組合所特有。

    這項作業會針對每個 IDOC 呈現,而且可在 [新增配接器服務參考外掛程式] 或 [取用配接器服務增益集] 中的特定 IDOC 節點下取得。

    注意

    若要能夠順利執行 傳送 作業,您必須在 SAP 系統中擁有相關的授權。 如需詳細資訊,

  • SendIdoc。 使用此作業,使用弱型別架構將 IDOC 傳送至 SAP 系統。 此作業的架構會將 IDOC 公開為包含控制記錄和資料記錄的單一字串欄位。 SendIdoc 作業會採用 IDOC 字串和 GUID 作為參數。

    這是針對 SAP 系統公開的所有IDOC 所呈現的單一作業,可在 [新增配接器服務參考外掛程式] 或 [取用配接器服務增益集] 的根 IDOC 節點下取得。

    如需下列詳細資訊︰

  • 使用 BizTalk Server 將 IDOC 傳送至 SAP 系統,請參閱使用 BizTalk Server 將IDOC 傳送至 SAP

  • 使用 WCF 服務模型將 IDOC 傳送至 SAP 系統,請參閱 使用 WCF 服務模型將IDOC 傳送至 SAP

  • 傳送 IDOC 的訊息結構和 SOAP 動作,請參閱 IDOC 作業的訊息架構

接收 IDOC 的作業

若要接收 IDOC,SAP 配接器的行為可以是 tRFC 伺服器或 RFC 伺服器:

  • 若要讓配接器做為 tRFC 伺服器,您必須將系結屬性TidDatabaseConnectionString設定為電腦上的 TID 資料庫連接字串。 針對 tRFC 伺服器案例,配接器會接受來自 SAP 系統的 tRFC 用戶端呼叫來接收 IDOC。

  • 若要讓配接器做為 RFC 伺服器, TidDatabaseConnectionString 應該是 null (預設) 。 針對 RFC 伺服器案例,配接器會接受來自 SAP 系統的 RFC 用戶端呼叫來接收 IDOC。

    下列 RFC 可用來傳送和接收IDOC;傳送IDOC 時,配接器會使用這些 RFC,而接收 IDOCS 時,SAP 系統會使用這些 RFC。

  • INBOUND_IDOC_PROCESS。 此函式模組用於 4.0 之前的 SAP 版本。

  • IDOC_INBOUND_ASYNCHRONOUS。 此函式模組用於 SAP 4.0 版和更新版本。

    從 SAP 系統接收IDOC 支援下列作業:

  • 接收。 使用此作業可從 SAP 系統使用強型別架構接收 IDOC。 此作業的架構會公開控制記錄欄位和資料記錄欄位,包括區段標頭和區段欄位。

    這項作業會針對每個 IDOC 呈現,而且可在 [新增配接器服務參考外掛程式] 或 [取用配接器服務增益集] 中的特定 IDOC 節點下取得。

    注意

    若要能夠順利執行 接收 作業,您必須在 SAP 系統中擁有相關的授權。 如需詳細資訊,

    注意

    使用 接收 作業,您也可以接收多個IDOC。

  • ReceiveIdoc。 使用此作業可從 SAP 系統使用弱型別架構接收 IDOC。 此作業的架構會將 IDOC 公開為包含控制記錄和資料記錄的單一字串欄位。 這項作業會在 idocData > 標籤下的 < XML 訊息中接收 IDOC 作為字串。

    這是針對 SAP 系統公開的所有IDOC 所呈現的單一作業,可在 [新增配接器服務參考外掛程式] 或 [取用配接器服務增益集] 的根 IDOC 節點下取得。

    接收IDOC 時,SAP 配接器支援不同的訊息格式,可指定為由 SAP 配接器公開之系結屬性 ReceiveIDocFormat 的值。

  • 如果設定為 「Typed」,XML 架構會強型別為所接收的特定 IDOC。 (接收作業可以看到此訊息的架構。請注意,不同IDOC) 的架構不同。 這會產生 XML IDOC。

  • 如果設定為 「String」,傳入的 IDOC 資料會以 String 值的形式傳回。 (可從 ReceiveIdoc 作業) 看到此訊息的架構。 這會產生具有 idocData > 標籤的 < XML 訊息。

  • 如果設定為 「Rfc」,訊息架構會根據傳入的 IDOC 版本,符合 RFC 作業的 RFC (或 tRFC) 架構IDOC_INBOUND_ASYNCHRONOUS或INBOUND_IDOC_PROCESS。 如果您指定這個系結屬性,您應該使用 IDOC_INBOUND_ASYNCHRONOUS 或 INBOUND_IDOC_PROCESS RFC 來接收 IDOC。 在前兩個選項中,配接器會在內部使用此 RFC。 在此選項中,您會明確地使用此 RFC 來接收 IDOC。

    您用來接收 IDOC 的作業必須符合配接器所發出的 IDOC 資料格式。 下表提供不同組合的摘要,您可以在其中從 SAP 接收 IDOC。

使用 接收 IDOC 將系結屬性 ReceiveIDOCFormat 設定為
接收 作業 具類型
ReciveIdoc 作業 字串
IDOC_INBOUND_ASYNCHRONOUS RFC R f c
INBOUND_IDOC_PROCESS RFC R f c

另一個系結屬性 PadReceivedIdocsWithSpaces 會在預期的接收格式為 「String」 時,使用選擇性欄位的空白字元填補收到的 IDOC。 這可讓您與使用舊版配接器收到的 IDOC 資料格式相容。

如需系結屬性的詳細資訊,請參閱 閱讀 BizTalk Adapter for mySAP Business Suite 系結屬性

如需下列詳細資訊︰

使用傳送或接收作業的 SAP 授權

當您使用 傳送接收 作業來使用強型別架構來傳送或接收IDOC 時,SAP 配接器會在內部叫用 IDOCTYPE_READ_COMPLETE RFC 來擷取 IDOC 的中繼資料。 叫用此 RFC 需要 SAP 中的下列授權:

Authorisation object S_IDOCDEFT, Fields:  
EDI_TCD, value 'WE30'  
ACTVT, value - 03 (display)  
EDI_DOC, value  *  
EDI_CIM, value *  

您可以使用 SAP 中的 SU01 交易來新增授權物件。 如需交易的詳細資訊,請連絡 SAP 系統管理員或參閱 SAP 檔。

另請參閱

可以使用配接器執行哪些作業?