다음을 통해 공유


SAP의 tRFC에 대한 작업

tRFC(트랜잭션 RFC)는 LUW(논리 작업 단위)의 일부로 호출되는 RFC입니다. SAP 시스템에서 LUW에는 비즈니스 또는 프로그래밍 작업을 완료하는 데 필요한 모든 단계가 포함되어 있습니다. tRFC는 RFC를 호출하는 방법을 나타냅니다. 고유한 SAP 아티팩트가 아닙니다.

mySAP Business Suite용 Microsoft BizTalk 어댑터를 tRFC 클라이언트와 tRFC 서버로 모두 사용할 수 있습니다.

  • tRFC 클라이언트인 어댑터를 사용하면 애플리케이션이 SAP 시스템의 LUW에서 단일 RFC를 호출할 수 있습니다. 이렇게 하면 RFC를 한 번만 실행할 수 있습니다. 트랜잭션 동작을 의미하지는 않습니다.

  • tRFC 서버인 어댑터를 사용하면 LUW 내에서 여러 RFC를 받을 수 있습니다. 어댑터는 트랜잭션 컨텍스트에서 인바운드 tRFC 호출을 지원합니다. 커밋 및 롤백 동작이 지원됩니다.

tRFC 작업

tRFC는 RFC를 호출하는 방법을 의미합니다. 별도의 SAP 아티팩트가 아닙니다. 따라서 SAP 시스템의 모든 RFC(어댑터가 메타데이터를 검색할 수 있음)도 SAP 어댑터에 의해 tRFC로 표시됩니다. tRFC는 RFC 이름으로 TRFC 메타데이터 범주 노드에서 작업으로 표시됩니다. (어댑터 서비스 참조 플러그 인 추가 또는 어댑터 서비스 사용 추가 기능을 사용할 때 TRFC 노드에서 tRFC 를 찾아보거나 검색할 수 있습니다.)

SAP 어댑터는 tRFC에서 다음을 지원합니다.

  • IMPORT 매개 변수

  • 매개 변수 변경(CHANGE 매개 변수의 입력 쪽만 지원됨)

참고

tRFC는 비동기적으로 실행되므로 출력 값(EXPORT 또는 CHANGE 매개 변수)이 반환되지 않습니다.

GUID 매개 변수는 tRFC 작업을 위해 어댑터에 의해 표시됩니다. 이 GUID는 어댑터를 통해 tRFC와 연결된 SAP TID(트랜잭션 ID)에 매핑됩니다. 이 GUID 매개 변수를 사용하여 다음을 수행할 수 있습니다.

  • tRFC 클라이언트 호출에서 SAP 시스템의 tRFC를 확인합니다. RfcConfirmTransId 작업을 호출하여 이 작업을 수행합니다. 이는 SAP 시스템에서 TID를 확인하기 위해 어댑터에 의해 표면화된 특수 작업입니다.

  • tRFC 클라이언트 및 tRFC 서버 시나리오 모두에서 어댑터에서 tRFC에 사용되는 실제 SAP TID를 가져옵니다. SAP 유틸리티 메서드 ConvertGuidToTid를 호출하여 이 작업을 수행합니다.

    이러한 작업에 대한 자세한 내용은 특수 작업을 참조하세요. 어댑터에서 tRFC에 사용되는 메시지 구조 및 SOAP 작업에 대한 자세한 내용은 tRFC 작업에 대한 메시지 스키마를 참조하세요.

SAP 시스템에서 트랜잭션 RFC 호출

일반적으로 tRFC는 단일 LUW 내에서 하나 이상의 RFC 호출을 실행하는 데 사용됩니다. 그러나 SAP RFC SDK의 제한 사항으로 인해 SAP 어댑터는 LUW당 단일 tRFC만 지원합니다. 이러한 이유로 어댑터는 각 tRFC에 대해 LUW(SAP TID)를 만듭니다. 이러한 클라이언트의 경우 SAP는 RFC의 "일회성" 실행을 보장하는 메커니즘으로 LUW를 정의하며 커밋 및 롤백 기반 트랜잭션을 의미하지는 않습니다.

다음 단계에서는 SAP 어댑터를 사용하여 RFC 클라이언트 호출에서 수행되는 작업을 요약합니다. 이러한 단계 중 일부는 어댑터 클라이언트에서 수행되고 일부는 어댑터에서 수행됩니다.

  1. 어댑터 클라이언트는 tRFC 작업에 대한 요청 메시지를 보냅니다. 어댑터 클라이언트는 필요에 따라 이 메시지에서 GUID를 제공할 수 있습니다.

  2. SAP 어댑터는 요청 메시지를 수신하고 RFC SDK를 사용하여 SAP 시스템에서 TID(트랜잭션 ID)를 가져옵니다. 요청 메시지에 GUID가 포함된 경우 어댑터는 이 GUID를 SAP TID에 매핑합니다. 그렇지 않으면 어댑터가 새 GUID를 만들어 SAP TID에 매핑합니다.

  3. 어댑터는 TID를 사용하여 SAP 서버에 tRFC를 호출합니다. TID의 상태 SAP 시스템에서 FINISHED로 표시됩니다.

  4. 어댑터는 응답 메시지의 어댑터 클라이언트에 GUID(TID에 매핑됨)를 반환합니다.

  5. 어댑터 클라이언트는 이전 단계에서 반환된 GUID를 사용하여 어댑터에서 RfcConfirmTransID 작업을 호출합니다.

  6. 어댑터는 RfcConfirmTransID 요청 메시지의 GUID를 사용하여 SAP TID를 식별하고 SAP 시스템에서 tRFC 호출을 확인합니다. 이로 인해 SAP 서버는 데이터베이스에서 TID 항목을 삭제합니다.

참고

tRFC 클라이언트 호출은 EXPORT 또는 CHANGE 매개 변수를 반환하지 않습니다.

조건부 액세스에 대한 자세한 내용은

SAP 시스템에서 인바운드 트랜잭션 RFC 호출 수신

어댑터를 tRFC 서버로 사용하여 SAP에서 tRFC를 받을 수 있습니다. tRFC 서버로서 어댑터가 tRFC를 받으면 애플리케이션에서 해당 tRFC 작업을 호출합니다. 어댑터는 tRFC 서버 역할을 할 때 다음 기능을 지원합니다.

  • LUW(SAP TID로 식별됨)에는 여러 tRFC(RFC 호출)가 포함될 수 있습니다.

  • 어댑터는 각 SAP TID에 대해 커밋 가능한 트랜잭션을 만듭니다. 애플리케이션 코드는 이 트랜잭션에 등록할 수 있습니다.

  • 커밋 및 롤백이 지원됩니다.

    이 섹션의 나머지 부분에서는 어댑터를 tRFC 서버로 사용하는 방법에 대한 일반적인 정보를 제공합니다. 자세한 내용은 다음을 참조하세요.

  • BizTalk Server 사용하여 인바운드 tRFC 호출 수신은 BizTalk Server 사용하여 SAP에서 인바운드 tRFC 호출 수신을 참조하세요.

  • WCF 서비스 모델을 사용하여 인바운드 tRFC 호출을 수신하는 경우 WCF 서비스 모델을 사용하여 SAP에서 인바운드 tRFC 호출 수신을 참조하세요.

TID 데이터베이스

tRFC 서버 역할을 하는 경우 어댑터는 SQL Server 데이터베이스(TID 데이터베이스)를 사용하여 SAP 시스템에서 수신하는 트랜잭션 ID를 관리합니다. 예를 들어 TID 데이터베이스를 사용하여 SAP 시스템의 호출을 관리하여 TID를 커밋, 롤백 및 확인합니다. 또한 어댑터는 만든 GUID를 저장하고 TID 데이터베이스의 각 SAP TID와 연결합니다.

필수 구성 요소

어댑터가 tRFC 서버로 수행하려면 다음이 true인지 확인해야 합니다.

  • RFC는 SAP 시스템에서 선언되어야 합니다. 이렇게 하면 어댑터가 SAP 시스템에서 RFC를 설명하는 메타데이터를 검색할 수 있습니다. RFC는 실제로 애플리케이션에서 구현됩니다.

  • 어댑터는 SAP 게이트웨이의 RFC 대상에 등록해야 합니다. 등록은 프로그램 ID라는 논리적 이름을 기반으로 합니다. 연결 URI에 매개 변수를 제공하여 이 등록에 대한 프로그램 ID, SAP 게이트웨이 및 SAP 서버를 지정합니다.

  • TID 데이터베이스는 SQL Server 만들어야 합니다. 이렇게 하려면 설치 프로그램에서 설치하는 SQL 스크립트를 실행해야 합니다. SQL 스크립트는 일반적으로 설치 드라이브>:\Program Files\Microsoft BizTalk 어댑터 팩에 <설치됩니다. 자세한 내용은 BizTalk 어댑터 팩 설치를 참조하세요.

  • TidDatabaseConnectionString 바인딩 속성은 TID 데이터베이스에 대한 SQL 데이터베이스 연결 문자열 설정해야 합니다. TidDatabaseConnectionString 바인딩 속성에 대한 자세한 내용은 MySAP Business Suite 바인딩 속성에 대한 BizTalk Adapter에 대한 읽기를 참조하세요.

참고

TidDatabaseConnectionString 바인딩 속성을 설정하면 어댑터가 RFC 서버가 아닌 tRFC 서버로 작동하도록 구성됩니다. TidDatabaseConnectionString 바인딩 속성이 설정되고 연결 URI에 RFC 대상을 지정하는 경우 어댑터는 RFC 대상에서 들어오는 호출에 대한 tRFC 서버 역할을 합니다. 이 바인딩 속성이 설정되지 않은 경우 어댑터는 RFC 서버 역할을 합니다.

어댑터가 인바운드 tRFC를 처리하는 방법

다음 단계에서는 SAP 어댑터를 사용하여 RFC 클라이언트 호출에 의해 수행되는 작업을 요약합니다. 이러한 단계 중 일부는 어댑터 클라이언트에서 수행되고 일부는 어댑터에서 수행됩니다.

  1. SAP 시스템은 어댑터를 호출하여 TID가 이미 사용되었는지 여부를 문의합니다. 어댑터는 SAP 시스템에 대한 적절한 응답을 반환합니다. TID가 새로운 경우 어댑터는 커밋 가능한 트랜잭션을 만듭니다. 이 트랜잭션은 SAP 프로그램이 커밋(COMMIT WORK)을 수행할 때 TID 데이터베이스에 트랜잭션 방식으로 TID를 유지하는 데 사용됩니다. 인바운드 tRFC를 처리하는 애플리케이션 코드에도 노출됩니다. 또한 어댑터는 SAP TID와 연결되는 GUID를 만듭니다.

  2. SAP 시스템은 하나 이상의 트랜잭션 RFC를 어댑터로 보냅니다. 각 tRFC에 대해 어댑터는 애플리케이션에서 적절한 tRFC 작업을 호출합니다. 어댑터는 1단계에서 만든 트랜잭션을 각 작업에 대해 애플리케이션으로 흐릅니다. 어댑터는 작업에 대한 요청 메시지의 1단계에서 만든 GUID를 전달합니다.

  3. SAP 시스템은 LUW(COMMIT WORK)를 커밋합니다. 어댑터는 SAP TID와 연결된 트랜잭션을 커밋하려고 시도합니다(1단계에서 생성됨).

    1. 2단계에서 호출하는 동안(애플리케이션에서) 트랜잭션이 중단된 경우 어댑터가 트랜잭션을 커밋하려고 할 때 오류가 발생합니다. 오류가 SAP로 반환됩니다. 4단계로 이동합니다.

    2. 커밋에 성공하면 TID가 이제 TID 데이터베이스에 있습니다. 5단계로 이동합니다.

  4. 3단계에서 오류가 발생하거나 SAP가 LUW(RESTART_OF_BACKGROUNDTASK)를 커밋하는 대신 롤백하는 경우 어댑터는 트랜잭션을 롤백합니다. 이 경우 TID는 TID 데이터베이스에 유지되지 않습니다.

  5. SAP 시스템에서 TID를 확인합니다. 어댑터는 TID 데이터베이스에서 TID를 제거합니다(3단계가 성공적으로 완료되고 TID 데이터베이스에 TID가 있다고 가정).

참고

tRFC 서버 작업 중에 TID 데이터베이스에 연결하려고 시도하는 동안 오류가 발생하면 SAP 어댑터에서 SAP에서 들어오는 호출이 처리되지 않았음을 나타내는 오류 코드가 SAP로 반환됩니다.

TRFC 서버로 IDOC 수신

SAP 어댑터를 RFC 서버 또는 tRFC 서버로 사용하여 SAP 시스템에서 IDOC를 받습니다. 두 경우 모두 어댑터가 IDOC 데이터를 애플리케이션에 내보내야 하는 형식을 지정하려면 ReceiveIdocFormat 바인딩 속성을 설정해야 합니다. 어댑터를 사용하여 IDOC를 수신하는 방법에 대한 자세한 내용은 SAP의 IDOC에서 작업을 참조하세요. SAP 어댑터 바인딩 속성에 대한 자세한 내용은 mySAP Business Suite 바인딩 속성에 대한 BizTalk Adapter에 대해 읽기를 참조하세요.

특수 tRFC 작업

SAP 어댑터는 SAP 시스템에서 특정 특수 tRFC 작업을 수행할 수도 있습니다. 이러한 작업 중 하나는 RfcConfirmTransID입니다.

  • RfcConfirmTransID. SAP 어댑터에서 이 작업을 호출하여 SAP 서버에 대한 tRFC 호출을 확인합니다. RfcConfirmTransID는 어댑터를 사용하여 TRFC로 SAP 서버에 IDOC를 보내는 시나리오에서 필요할 수 있습니다. 이 작업은 어댑터 서비스 참조 플러그 인 추가 및 어댑터 서비스 사용 추가 기능을 사용할 때 TRFC 노드에서 사용할 수 있습니다.

    RfcConfirmTransID 작업에 대한 메시지 구조 및 SOAP 작업에 대한 자세한 내용은 tRFC 작업에 대한 메시지 스키마를 참조하세요.

참고 항목

어댑터를 사용하여 SAP 시스템에 연결