다음을 통해 공유


IDOC 작업에 대한 메시지 스키마

IDOCS(중간 문서)는 SAP 및 비 SAP 시스템과 비동기적으로 통신하기 위해 SAP에서 지원하는 표준화된 EDI와 유사한 문서입니다. IDOCS는 거래 업체의 SAP 시스템 또는 외부 프로그램으로 판매 주문과 같은 비즈니스 문서를 보내고 받는 데 사용됩니다.

SAP 시스템은 IDOCS(예: 파일 포트 또는 CPIC 포트)를 보내고 받기 위해 다양한 포트 유형을 지원하지만 mySAP Business Suite용 Microsoft BizTalk Adapter는 tRFC 포트를 사용하여 IDOCS를 보내고 받을 수 있도록 지원합니다.

  • 아웃바운드 IDOC의 경우 SAP 어댑터는 tRFC 클라이언트 역할을 하며 RFC를 호출하여 IDOC를 SAP로 보냅니다.

  • 인바운드 IDOC의 경우 SAP 어댑터는 tRFC 서버 역할을 하며 SAP에서 TRFC 클라이언트 호출을 수락하여 IDOC를 받습니다.

    SAP 어댑터는 SAP 시스템으로 IDOCS를 보내고 받는 데 사용할 수 있는 IDOC 노드 아래에 4개의 작업을 표시합니다.

  • SendIdoc. IDOC를 어댑터에 문자열 데이터로 보냅니다. 이 작업은 IDOC 루트 노드 바로 아래에 표시됩니다. 모든IDOC에 동일한 작업이 사용됩니다.

  • 보내기. IDOC를 어댑터에 강력한 형식의 데이터로 보냅니다. 이 작업은 각 IDOC와 관련된 노드 아래에 표시됩니다.

  • ReceiveIdoc. 어댑터에서 IDOC를 문자열 데이터로 받습니다. 이 작업은 IDOC 루트 노드 바로 아래에 표시됩니다. 모든IDOC에 동일한 작업이 사용됩니다.

  • 수신합니다. 어댑터에서 IDOC를 강력한 형식의 데이터로 받습니다. 이 작업은 각 IDOC와 관련된 노드 아래에 표시됩니다.

참고

이러한 네 가지 작업은 프로그램과 SAP 어댑터 간에IDOC를 교환하는 다양한 방법을 제공합니다. 어댑터는 항상 RFC를 사용하여(다음 섹션에서 설명한 대로) SAP 시스템으로 IOC를 보내거나 받습니다.

4개의 IDOC 작업 중 하나를 사용하는 것 외에도 SAP 어댑터에서 내부적으로 사용되는 RFC 중 하나를 사용하여 IDOC를 보내거나 수신하여 SAP 시스템과 IDOC를 교환할 수도 있습니다. SAP 어댑터가 IDOC를 지원하는 방법에 대한 개요는 SAP의 IDOC에 대한 작업을 참조하세요.

이 항목에는 IDOC 작업에 사용되는 메시지 스키마 및 메시지 작업에 대한 정보가 포함되어 있습니다.

SAP 어댑터에서 IDOC를 보내고 받는 데 사용되는 RFC

SAP 어댑터는 내부적으로 다음 RFC(원격 함수 호출)를 사용하여 IDOCS를 SAP 시스템과 교환합니다. 아웃바운드 쪽(SAP 시스템에 어댑터)에서 어댑터는 RFC를 호출하는 tRFC 클라이언트 역할을 합니다. 인바운드 쪽(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 어댑터는 클라이언트가 SAP 시스템에 IDOC를 보낼 수 있도록 Send 및 SendIdoc 작업을 노출합니다. 보내기 작업의 경우 IDOC는 강력한 형식의 데이터로 표시됩니다. SendIdoc 작업의 경우 IDOC는 문자열 데이터로 표시됩니다. 이러한 작업은 어댑터와 애플리케이션 간에 IDOC 데이터를 나타내는 방법을 결정합니다. 어댑터는 항상 IDOC_INBOUND_ASYNCHRONOUS 또는 IDOC_INBOUND_PROCESS(t)RFC를 사용하여 SAP에 IPC를 보냅니다. SAP 시스템에 IDOC를 보내려면 Send 또는 SendIdoc 작업을 사용하거나 적절한 RFC를 직접 호출할 수 있습니다.

IDOC 클라이언트 작업에 대한 메시지 구조

다음 표에서는 Send 및 SendIdoc 작업에 대한 메시지 구조를 보여 줍니다.

작업 XML 구조체 설명
Send <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를 보내는 데 사용하는 TID(SAP 트랜잭션 ID)와 연결합니다. 요청 메시지에서 GUID를 지정할지 여부를 선택할 수 있습니다. GUID가 요청 메시지에 포함되지 않은 경우 SAP 어댑터는 GUID를 생성합니다. 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 어댑터는 IDOC를 보내는 데 사용하는 SAP TID와 GUID를 연결합니다. 요청 메시지에서 GUID를 지정할지 여부를 선택할 수 있습니다. GUID가 요청 메시지에 포함되지 않은 경우 SAP 어댑터가 GUID를 생성합니다. 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 및 릴리스 버전 2 IOC용 EDI_DC 대한 EDI_DC40.

[EDIDC_FIELD] = EDI_DC40/EDI_DC 컨트롤 레코드 구조를 구성하는 필드입니다.

[SEGMENT_DEFN] = 세그먼트 정의 이름(세그먼트 형식 이름이 아님); 예를 들어 E2EDK01005. 세그먼트 정의 노드는 IDOC의 구조에 따라 세그먼트 그룹 노드 아래에 나타날 수도 있습니다.

[DATAHEADERCOLUMN_(SEGHDR_FLD)] = 각 세그먼트에는 표준 헤더 필드 집합과 세그먼트 데이터로 구성된 세그먼트 헤더가 있습니다. 세그먼트 데이터는 모든 세그먼트 필드와 데이터로 구성됩니다. 이 노드는 세그먼트 머리글 필드를 나타냅니다. 예를 들어 DATAHEADERCOLUMN_SEGNAM.

[SEG_FIELD] = 특정 세그먼트 정의를 구성하는 세그먼트 필드 이름 [SEGMENT_DEFN].

[guid] = GUID 매개 변수입니다.

IDOC 클라이언트 작업에 대한 메시지 작업

다음 표에서는 Send 및 SendIdoc 작업에 대한 메시지 작업을 보여 줍니다.

작업 작업 예제
Send [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 어댑터는 애플리케이션이 SAP 시스템에서 IDOC를 받을 수 있도록 Receive 및 ReceiveIdoc 작업을 노출합니다. 수신 작업의 경우 IDOC는 강력한 형식의 데이터로 표시됩니다. ReceiveIdoc 작업의 경우 IDOC는 문자열 데이터로 표시됩니다.

이러한 작업은 어댑터가 애플리케이션에 IDOC 데이터를 내보내는 방법을 결정합니다. 어댑터는 항상 SAP 시스템에서 IDOC_INBOUND_ASYNCHRONOUS 또는 IDOC_INBOUND_PROCESS tRFC로 IDOC를 받습니다. Receive 또는 ReceiveIdoc 작업을 사용하거나 RFC 형식으로 IDOC 데이터를 받을 수 있습니다. ReceiveIdocFormat 바인딩 속성을 설정하여 어댑터가 IDOC 데이터를 애플리케이션에 내보내는 형식을 지정합니다. SAP 어댑터 바인딩 속성에 대한 자세한 내용은 mySAP Business Suite 바인딩 속성에 대한 BizTalk Adapter에 대해 읽기를 참조하세요.

IDOC 수신 작업에 대한 메시지 구조

다음 표에서는 Receive 및 ReceiveIdoc 작업에 대한 메시지 구조를 보여 줍니다.

작업 XML 구조체 Description
Receive <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> IDOC가 SAP 시스템에서 수신되었음을 나타냅니다.
ReceiveIdoc <ReceiveIdoc xmlns="[MSG_VERSION]/Idoc"> <idocData>docDataString</idocData> </ReceiveIdoc> SAP에서 약한 형식의 IDOC를 받습니다.

- IDOC 스키마가 약한 형식입니다.

- IDOC를 컨트롤 레코드 및 데이터 레코드로 구성된 단일 문자열 필드로 노출합니다.
ReceiveIdoc 응답 <ReceiveIdocResponse xmlns="[MSG_VERSION]/Idoc"> </ReceiveIdocResponse> IDOC가 SAP 시스템에서 수신되었음을 나타냅니다.

[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에는 EDI_DC.

[EDIDC_FIELD] = EDI_DC40/EDI_DC 컨트롤 레코드 구조를 구성하는 필드입니다.

[SEGMENT_DEFN] = 세그먼트 정의 이름(세그먼트 형식 이름이 아님); 예를 들어 E2EDK01005. 세그먼트 정의 노드는 IDOC의 구조에 따라 세그먼트 그룹 노드 아래에 나타날 수도 있습니다.

[DATAHEADERCOLUMN_(SEGHDR_FLD)] = 각 세그먼트에는 표준 헤더 필드 집합과 세그먼트 데이터로 구성된 세그먼트 헤더가 있습니다. 세그먼트 데이터는 모든 세그먼트 필드와 데이터로 구성됩니다. 이 노드는 세그먼트 머리글 필드를 나타냅니다. 예를 들어 DATAHEADERCOLUMN_SEGNAM.

[SEG_FIELD] = 특정 세그먼트 정의를 구성하는 세그먼트 필드 이름 [SEGMENT_DEFN].

RFC 형식으로 IDOC 수신

RFC 형식으로 ID를 받을 수도 있습니다. SAP에서 IOC를 수신하는 데 사용되는 RFC는 다음과 같습니다.

  • 버전 3IDOC에 대한 IDOC_INBOUND_ASYNCHRONOUS.

  • 버전 2의 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 작업에 대한 메시지 작업을 보여 줍니다.

작업 작업 예제
Receive [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