SAP의 IDOC에 대한 작업
IDOC는 SAP가 SAP 및 비 SAP 시스템과 비동기적으로 통신할 수 있도록 지원하는 표준화된 EDI와 유사한 문서입니다. IIDOC는 판매 주문과 같은 "비즈니스" 문서를 거래 업체의 SAP 시스템 또는 외부 프로그램으로 보내거나 받는 데 사용됩니다.
SAP 시스템은 IDOC(예: 파일 포트, CPIC 포트)를 보내고 받을 수 있는 다양한 포트 유형을 지원하지만 SAP 어댑터는 tRFC 포트를 통해 IDOC를 보내고 받을 수 있도록 지원합니다.
IDOC 보내기 작업
SAP에 대한 모든 IDOC 호출은 내부적으로 어댑터가 tRFC 클라이언트 역할을 하고 SAP의 RFC를 호출하여 IDOC를 보내는 tRFC 호출로 처리됩니다. 다른 tRFC 클라이언트 호출과 마찬가지로 어댑터 클라이언트는 필요에 따라 GUID를 어댑터에 전달하여 SAP 시스템의 호출에 사용하는 TID(트랜잭션 ID)와 연결합니다. 어댑터 클라이언트가 GUID를 전달하지 않으면 어댑터는 자체 GUID를 생성합니다. GUID는 응답 메시지의 어댑터 클라이언트에 반환됩니다. 어댑터 클라이언트는 이 GUID를 사용하여 SAP 시스템에서 TID를 확인할 수 있습니다. 어댑터에서 tRFC 호출에 사용하는 실제 SAP TID는 SAP 바인딩 ConvertGuidToTid에서 특수 정적 메서드를 호출하여 가져올 수 있습니다. 실제 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 어댑터는 이러한 IOC를 SAP 시스템으로 보낼 수 있도록 지원합니다. 이러한 IIDOC 전송을 지원하기 위해 SAP 어댑터는 각 세그먼트 데이터가 이전의 연속 데이터인지 또는 새 세그먼트 데이터인지 여부를 결정합니다. SAP 어댑터는 각 세그먼트 헤더를 구문 분석하고 DOCNUM 필드를 찾아 이를 결정합니다. 세그먼트 데이터가 두 줄로 분할된 경우 두 번째 줄에는 세그먼트 헤더가 없으므로 SAP 어댑터에서 DOCNUM 필드를 찾을 수 없습니다. 따라서 SAP 어댑터는 이전 세그먼트 데이터의 연속임을 확인할 수 있습니다.
예를 들어 위에 표시된 IDOC의 표현에서 SAP 어댑터는 "Segment data wrapped from the previous line
"에서 DOCNUM 필드를 찾을 수 없으며 선이 이전 세그먼트 데이터의 연속이라고 결정할 수 있습니다. 프로덕션 환경에서 IDOC 플랫 파일의 크기를 고려할 때 각 세그먼트 데이터에 대해 이러한 검사를 수행하면 처리 시간이 늘어나게 될 수 있습니다.
참고
어댑터는 CRLF(캐리지 리턴 라인 피드) 대신 DOCNUM 필드를 사용하여 IDOC 데이터에서 각 세그먼트 레코드를 식별하고 추출합니다. 컨트롤의 DOCNUM 필드와 데이터 레코드가 잘못되었거나 부분적으로 비어 있으면 어댑터가 IDOC를 구문 분석하지 못합니다. 따라서 IDOC는 SAP 시스템으로 전송되지 않습니다.
IDOC 보내기 작업
SAP 시스템에 IDOC를 보내는 데 지원되는 작업은 다음과 같습니다.
보내기. 강력한 형식의 스키마를 사용하여 SAP 시스템에 IDOC를 보내려면 이 작업을 사용합니다. 이 작업의 스키마는 세그먼트 헤더 및 세그먼트 필드를 포함하여 컨트롤 레코드 필드 및 데이터 레코드 필드를 노출합니다. 보내기 작업은 IDocType + CimType + ReleaseNumber + 버전 조합과 관련이 있습니다.
이 작업은 각 IDOC에 대해 표시되며 어댑터 서비스 참조 플러그 인 추가 또는 어댑터 서비스 사용 추가 기능의 특정 IDOC 노드에서 사용할 수 있습니다.
참고
보내기 작업을 성공적으로 수행하려면 SAP 시스템에서 관련 권한 부여가 있어야 합니다. 자세한 내용은
SendIdoc. 약한 형식의 스키마를 사용하여 SAP 시스템에 IDOC를 보내려면 이 작업을 사용합니다. 이 작업의 스키마는 IDOC를 컨트롤 레코드 및 데이터 레코드로 구성된 단일 문자열 필드로 노출합니다. SendIdoc 작업은 IDOC 문자열과 GUID를 매개 변수로 사용합니다.
이는 SAP 시스템에서 노출하는 모든 IOC에 대해 표시되는 단일 작업이며 어댑터 서비스 참조 플러그 인 추가 또는 어댑터 서비스 사용 추가 기능의 루트 IDOC 노드에서 사용할 수 있습니다.
조건부 액세스에 대한 자세한 내용은
BizTalk Server 사용하여 SAP 시스템에 IDOC 보내기는 BizTalk Server 사용하여 SAP에 IOC 보내기를 참조하세요.
WCF 서비스 모델을 사용하여 SAP 시스템에 IDOC 보내기는 WCF 서비스 모델을 사용하여 SAP에 IOC 보내기를 참조하세요.
IDOC를 보내기 위한 메시지 구조 및 SOAP 작업은 IDOC 작업에 대한 메시지 스키마를 참조하세요.
IDOC를 받는 작업
IDOC를 수신하기 위해 SAP 어댑터는 tRFC 서버 또는 RFC 서버로 작동할 수 있습니다.
어댑터가 tRFC 서버로 작동하려면 TidDatabaseConnectionString 바인딩 속성을 컴퓨터의 TID 데이터베이스에 대한 연결 문자열 설정해야 합니다. tRFC 서버 시나리오의 경우 어댑터는 IDOC를 수신하기 위해 SAP 시스템에서 tRFC 클라이언트 호출을 수락합니다.
어댑터가 RFC 서버로 작동하려면 TidDatabaseConnectionString 이 null(기본값)이어야 합니다. RFC 서버 시나리오의 경우 어댑터는 IDOC를 수신하기 위해 SAP 시스템에서 RFC 클라이언트 호출을 수락합니다.
다음 RFC는 IDOC를 보내고 받는 데 사용됩니다. IIDOC를 보낼 때 어댑터는 이러한 RFC를 사용하는 반면, IDOCS를 수신할 때 SAP 시스템에서 이를 사용합니다.
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 시스템에서 노출하는 모든 IOC에 대해 표시되는 단일 작업이며 어댑터 서비스 참조 플러그 인 추가 또는 어댑터 서비스 사용 추가 기능의 루트 IDOC 노드에서 사용할 수 있습니다.
IDOC를 받을 때 SAP 어댑터는 SAP 어댑터에서 노출하는 바인딩 속성 ReceiveIDocFormat 값으로 지정할 수 있는 다양한 메시지 형식을 지원합니다.
"Typed"로 설정하면 XML 스키마가 수신되는 특정 IDOC에 강력하게 입력됩니다. (이 메시지의 스키마는 수신 작업에서 볼 수 있습니다. 스키마는 다른 IDOC에 대해 다릅니다.) 그러면 XML IDOC가 생성됩니다.
"String"으로 설정하면 들어오는 IDOC 데이터가 String 값으로 반환됩니다. (이 메시지의 스키마는 ReceiveIdoc 작업에서 볼 수 있습니다.) 그러면 idocData> 태그가 있는 <XML 메시지가 생성됩니다.
"Rfc"로 설정된 경우 메시지 스키마는 들어오는 IDOC 버전에 따라 RFC 작업 IDOC_INBOUND_ASYNCHRONOUS 또는 INBOUND_IDOC_PROCESS 대한 RFC(또는 tRFC) 스키마와 일치합니다. 이 바인딩 속성을 지정하는 경우 IDOC_INBOUND_ASYNCHRONOUS 또는 INBOUND_IDOC_PROCESS RFC를 사용하여 IDOC를 수신해야 합니다. 처음 두 옵션에서 어댑터는 내부적으로 이 RFC를 사용합니다. 이 옵션에서는 이 RFC를 명시적으로 사용하여 IDOC를 받습니다.
IDOC를 수신하는 데 사용하는 작업은 어댑터에서 내보낸 IDOC 데이터의 형식과 일치해야 합니다. 다음 표에서는 SAP에서 IDOC를 받을 수 있는 다양한 조합에 대한 요약을 제공합니다.
를 사용하여 IDOC를 받으려면 | 바인딩 속성 ReceiveIDOCFormat을 로 설정합니다. |
---|---|
수신 작업 | 형식화됨 |
ReciveIdoc 작업 | 문자열 |
IDOC_INBOUND_ASYNCHRONOUS RFC | Rfc |
INBOUND_IDOC_PROCESS RFC | Rfc |
또 다른 바인딩 속성 PadReceivedIdocsWithSpaces 는 수신 형식이 "String"인 경우 선택적 필드에 대한 공백으로 수신된 IDOC를 패드합니다. 이렇게 하면 이전 버전의 어댑터를 사용하여 받은 IDOC 데이터 형식과의 호환성을 사용할 수 있습니다.
바인딩 속성에 대한 자세한 내용은 MySAP Business Suite 바인딩 속성용 BizTalk 어댑터에 대해 읽어보세요.
조건부 액세스에 대한 자세한 내용은
BizTalk Server 사용하여 SAP 시스템에서 IDOC 수신은 BizTalk Server 사용하여 SAP에서 IDOC 받기를 참조하세요.
BizTalk Server 사용하여 트랜잭션 컨텍스트의 SAP 시스템에서 IDOC를 수신하는 경우 BizTalk Server 사용하여 트랜잭션 컨텍스트에서 SAP에서 IDOC 받기를 참조하세요.
IDOC를 수신하기 위한 메시지 구조 및 SOAP 작업은 IDOC 작업에 대한 메시지 스키마를 참조하세요.
보내기 또는 받기 작업을 사용하기 위한 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 설명서를 참조하세요.