BizTalk Server 사용하여 SAP에서 tRFC 호출
TRFC(트랜잭션 원격 함수 호출)는 SAP 시스템에서 RFC를 한 번만 실행할 수 있습니다. SAP 어댑터에 의해 표시되는 RFC를 tRFC로 호출할 수 있습니다. tRFC 호출은 다음과 같은 차이점이 있는 RFC(BizTalk Server 사용하여 SAP에서 RFC 호출 참조)를 호출하는 것과 비슷합니다.
SAP 어댑터는 RFC(RFC)와 다른 노드(TRFC)에서 tRFC를 표시합니다.
tRFC 작업에는 SAP 어댑터에 의해 tRFC의 SAP 트랜잭션 ID에 매핑되는 GUID 매개 변수가 포함됩니다.
tRFC를 호출한 후 RfcConfirmTransID 작업을 호출하여 SAP 시스템에서 tRFC를 확인(커밋)해야 합니다. 이 작업은 어댑터 서비스 추가 기능 사용의 TRFC 노드 바로 아래에 표시됩니다.
SAP 어댑터가 tRFC 호출을 지원하는 방법에 대한 자세한 내용은 SAP의 tRFC에 대한 작업을 참조하세요. tRFC를 호출하기 위한 SOAP 메시지 구조에 대한 자세한 내용은 tRFC 작업에 대한 메시지 스키마를 참조하세요.
BizTalk Server 사용하여 SAP 시스템에서 tRFC를 호출하는 방법
BizTalk Server 사용하여 SAP 시스템에서 작업을 수행하려면 SAP 애플리케이션을 만들기 위한 구성 요소에 설명된 절차 작업이 포함됩니다. SAP 시스템에서 tRFC를 호출하려면 다음 작업을 수행합니다.
BizTalk 프로젝트를 만들고 SAP 시스템에서 호출하려는 tRFC에 대한 스키마를 생성합니다. 또한 SAP 시스템에서 TID를 커밋하려면 RfcConfirmTransID 작업에 대한 스키마를 생성해야 합니다.
BIzTalk 프로젝트에서 SAP 시스템에서 메시지를 보내고 받기 위한 메시지를 만듭니다.
SAP 시스템에서 tRFC를 호출하는 오케스트레이션을 만든 다음 SAP 어댑터의 tRFC 호출에 대한 응답으로 SAP 시스템에서 만든 TID를 커밋합니다.
BizTalk 프로젝트를 빌드하고 배포합니다.
물리적 송신 및 수신 포트를 만들어 BizTalk 애플리케이션을 구성합니다.
BizTalk 애플리케이션을 시작합니다.
이 항목에서는 이러한 작업을 수행하는 지침을 제공합니다.
이 항목을 기반으로 하는 샘플
이 항목을 기반으로 하는 샘플 tRFCClient도 BizTalk 어댑터 팩과 함께 제공됩니다. 자세한 내용은 SAP 어댑터 샘플 이리저리를 참조하세요.
스키마 생성
이 항목에서는 SAP 어댑터를 사용하여 tRFC를 호출하는 방법을 설명하기 위해 다음 스키마를 생성합니다.
tRFC를 BAPI_SALESORDER_CREATEFROMDAT2 .
RfcConfirmTransID 작업. 이 작업을 사용하여 SAP 시스템에서 만든 TID를 커밋해야 합니다. SAP 시스템이 이 호출을 받으면 시스템에서 TID를 삭제합니다.
스키마를 생성하는 방법에 대한 자세한 내용은 SAP에서 tRFC 작업에 대한 메타데이터 찾아보기, 검색 및 가져오기 를 참조하세요.
메시지 및 메시지 유형 정의
이전에 생성한 스키마는 오케스트레이션의 메시지에 필요한 "형식"을 설명합니다. 메시지는 일반적으로 변수이며, 이 형식은 해당 스키마에 의해 정의됩니다. BizTalk 프로젝트의 오케스트레이션 보기에서 생성한 스키마를 메시지에 연결해야 합니다.
이 항목에서는 4개의 메시지(tRFC를 호출하도록 설정된 요청-응답 메시지 집합) 및 RfcConfirmTransID 작업을 호출하기 위한 다른 요청-응답 메시지 집합을 만들어야 합니다.
다음 단계를 수행하여 메시지를 만들고 스키마에 연결합니다.
메시지를 만들고 스키마에 연결하려면
아직 열려 있지 않은 경우 BizTalk 프로젝트를 오케스트레이션 보기로 엽니다. 보기를 클릭하고 다른 창을 가리킨 다음 오케스트레이션 보기를 클릭합니다.
오케스트레이션 보기에서 메시지를 마우스 오른쪽 단추로 클릭한 다음 새 메시지를 클릭합니다.
새로 만든 메시지를 마우스 오른쪽 단추로 클릭하고 속성 창을 선택합니다.
Message_1속성 창에서 다음을 수행합니다.
사용 항목 원하는 작업 ID 요청을 입력합니다. 메시지 유형 드롭다운 목록에서 스키마를 확장하고 메시지 유형을 선택합니다. 예를 들어 tRFC_Client.SAPBindingSchema1.BAPI_SALESORDER_CREATEFROMDAT2 선택합니다. 여기서 tRFC_Client BizTalk 프로젝트의 이름입니다. SAPBindingSchema1 은 BAPI_SALESORDER_CREATEFROMDAT2 대해 생성된 스키마입니다. 이전 단계를 반복하여 세 개의 메시지를 더 만듭니다. 새 메시지에 대한 속성 창에서 다음을 수행합니다.
식별자를 로 설정 메시지 유형을 로 설정 응답 tRFC_Client.SAPBindingSchema1.BAPI_SALESORDER_CREATEFROMDAT2Response TIDRequest tRFC_Client.SAPBindingSchema3.RfcConfirmTransID TIDResponse tRFC_Client.SAPBindingSchema3.RfcConfirmTransIDResponse
오케스트레이션 설정
SAP 시스템에서 tRFC를 호출하는 데 BizTalk Server 사용하려면 BizTalk 오케스트레이션을 만들어야 합니다. 이 오케스트레이션에서는 정의된 수신 위치에 요청 메시지를 삭제합니다. 오케스트레이션은 이 메시지를 사용하고 SAP 시스템에 전달합니다. 응답은 SAP에서 수신되고 다른 위치에 저장됩니다. 응답 메시지에는 GUID가 포함됩니다. 오케스트레이션에는 응답에서 GUID를 추출하고 RfcConfirmTransID 작업의 스키마를 준수하는 메시지를 생성하는 생성 메시지 셰이프가 포함됩니다. RfcConfirmTransID 작업을 호출하는 메시지는 GUID를 매개 변수로 사용하여 SAP 시스템으로 전송됩니다. SAP 시스템에서 tRFC를 호출하기 위한 일반적인 오케스트레이션, RfcConfirmTransID 작업에는 다음이 포함됩니다.
SAP 시스템에 메시지를 보내고 응답을 받을 셰이프를 보내고 받습니다.
메시지 생성 셰이프 및 해당 메시지 할당 셰이프 내에서 RfcConfirmTransID 작업에 대한 메시지를 생성합니다.
TRFC를 호출하기 위해 SAP 시스템에 보낼 요청 메시지를 수신하는 단방향 수신 포트입니다.
tRFC를 호출하고 응답을 수신하는 메시지를 보내는 양방향 송신 포트입니다.
RfcConfirmTransID 작업을 호출하고 응답을 수신하는 메시지를 보내는 양방향 송신 포트입니다.
두 개의 단방향 송신 포트를 사용하여 SAP 시스템에서 폴더로 응답을 보냅니다.
샘플 오케스트레이션은 다음과 유사합니다.
메시지 셰이프 추가
각 메시지 셰이프에 대해 다음 속성을 지정합니다. Shape 열에 나열된 이름은 이전 오케스트레이션에 표시된 메시지 셰이프의 이름입니다.
도형 | 도형 유형 | 속성 |
---|---|---|
ReceiveXml | Receive | - Name을 ReceiveXml로 설정 - 활성화를 True로 설정 |
SendToLOB | Send | - 이름을SendToLOB로 설정 |
ReceiveResponse | Receive | - 이름을ReceiveResponse로 설정 - 활성화를 False로 설정 |
SendResponse | Send | - 이름을SendResponse로 설정 |
SendTIDMsg | Send | - 이름을SendTIDMsg로 설정 |
ReceiveTIDRsp | Receive | - 이름을ReceiveTIDRsp로 설정 - 활성화를 False로 설정 |
SendTIDRsp | Send | - 이름을SendTIDRsp로 설정 |
생성 메시지 셰이프 추가
tRFC 호출에 대한 SAP 시스템의 응답에는 GUID가 포함됩니다. tRFC 호출을 커밋하려면 동일한 GUID를 RfcConfirmTransID 작업에 전달해야 합니다. 이렇게 하려면 오케스트레이션에 메시지 생성 셰이프와 해당 메시지 할당 셰이프 내에 를 포함해야 합니다. 여기서 메시지 생성 셰이프의 목적은 다음과 같습니다.
TRFC 호출에 대해 SAP 시스템에서 받은 응답에서 GUID를 추출합니다.
RfcConfirmTransID 작업의 메시지 스키마를 준수하는 메시지를 생성하려면
생성 메시지 셰이프의 경우 Message Constructed 속성을 TIDRequest로 설정해야 합니다.
메시지 할당 셰이프에 발췌한 다음 코드를 추가해야 합니다.
XmlDoc = new System.Xml.XmlDocument();
XmlDoc.LoadXml("<RfcConfirmTransID xmlns='http://Microsoft.LobServices.Sap/2007/03/RfcApi/'><TransactionalRfcOperationIdentifier /></RfcConfirmTransID>");
TIDRequest = XmlDoc;
TIDRequest.TransactionalRfcOperationIdentifier = xpath(Response,"string(/*[local-name()='BAPI_SALESORDER_CREATEFROMDAT2Response']/*[local-name()='TransactionalRfcOperationIdentifier']/text())");
위의 코드 발췌를 사용하려면 다음이 있어야 합니다.
BizTalk 프로젝트에서 변수 XmlDoc를 만들고 해당 형식을 System.Xml 설정합니다. Xmldocument. 변수를 만드는 방법에 대한 자세한 내용은 오케스트레이션에서 변수 사용을 참조하세요.
RfcConfirmTransID 작업에 대한 스키마에서 TransactionalRfcOperationIdentifier 속성을 승격했습니다. 속성 승격에 대한 자세한 내용은 속성 승격을 참조하세요.
포트 추가
각 논리 포트에 대해 다음 속성을 지정해야 합니다. 포트 열에 나열된 이름은 오케스트레이션에 표시된 포트의 이름입니다.
포트 | 속성 |
---|---|
FileIn | - 식별자를FileIn으로 설정 - Type을 FileInPortType으로 설정 - 통신 패턴을단방향으로 설정 - 수신할 통신 방향 설정 |
tRFC_Port | - 식별자를tRFC_Port 설정 - 형식 을 tRFC_PortType - 통신 패턴을Request-Response로 설정 - 통신 방향을Send-Receive로 설정 |
SavetRFCResponse | - 식별자를SavetRFCResponse로 설정 - Type을 SavetRFCResponsePortType으로 설정 - 통신 패턴을단방향으로 설정 - 통신 방향을전송으로 설정 |
TID_Port | - 식별자를TID_Port 설정 - 형식을 TIDPortType으로 설정 - 통신 패턴을Request-Response로 설정 - 통신 방향을Send-Receive로 설정 |
SaveTIDResponse | - 식별자를SaveTIDResponse로 설정 - Type을 SaveTIDResponsePortType으로 설정 - 통신 패턴을단방향으로 설정 - 통신 방향을전송으로 설정 |
작업 셰이프에 대한 메시지 지정 및 포트에 연결
다음 표에서는 작업 셰이프에 대한 메시지를 지정하고 포트에 연결하도록 설정할 속성 및 해당 값을 지정합니다. Shape 열에 나열된 이름은 이전 오케스트레이션에 표시된 메시지 셰이프의 이름입니다.
도형 | 속성 |
---|---|
ReceiveXml | - 메시지를요청으로 설정 - 작업을FileIn.tRFC.Request로 설정 |
SendToLOB | - 메시지를요청으로 설정 - 작업을tRFC_Port.tRFC.Request로 설정 |
ReceiveResponse | - 메시지를응답으로 설정 - 작업을tRFC_Port.tRFC.Response로 설정 |
SendResponse | - 메시지를응답으로 설정 - 작업을 SavetRFCResponse.tRFC.Request로 설정 |
SendTIDMsg | - 메시지를TIDRequest로 설정 - 작업을TID_Port.TID.Request로 설정 |
ReceiveTIDRsp | - 메시지를TIDResponse로 설정 - TID_Port.TID.Response로 작업 설정 |
SendTIDRsp | - 메시지를TIDResponse로 설정 - 작업을SaveTIDResponse.TID.Request로 설정 |
이러한 속성을 지정하면 메시지 셰이프와 포트가 연결되고 오케스트레이션이 완료됩니다.
이제 BizTalk 솔루션을 빌드한 다음 BizTalk Server 배포해야 합니다. 자세한 내용은 오케스트레이션 빌드 및 실행을 참조하세요.
BizTalk 애플리케이션 구성
BizTalk 프로젝트를 배포한 후에는 이전에 만든 오케스트레이션이 BizTalk Server 관리 콘솔의 오케스트레이션 창 아래에 나열됩니다. 애플리케이션을 구성하려면 BizTalk Server 관리 콘솔을 사용해야 합니다. 애플리케이션 구성에 대한 자세한 내용은 애플리케이션을 구성하는 방법을 참조하세요.
애플리케이션 구성에는 다음이 포함됩니다.
애플리케이션에 대한 호스트를 선택합니다.
오케스트레이션에서 만든 포트를 BizTalk Server 관리 콘솔의 실제 포트에 매핑합니다. 이 오케스트레이션의 경우 다음을 수행해야 합니다.
하드 디스크의 위치와 요청 메시지를 삭제할 해당 파일 포트를 정의합니다. BizTalk 오케스트레이션은 요청 메시지를 사용하여 SAP 시스템으로 보냅니다.
하드 디스크의 위치와 BizTalk 오케스트레이션이 SAP 시스템의 응답을 포함하는 응답 메시지를 삭제하는 해당 파일 포트를 정의합니다.
SAP 시스템에 메시지를 보낼 실제 WCF-Custom 또는 WCF-SAP 송신 포트(tRFC 요청 메시지 및 RfcConfirmTransID 메시지에 각각 하나씩)를 정의합니다. 또한 송신 포트에서 작업을 지정해야 합니다. 포트를 만드는 방법에 대한 자세한 내용은 SAP 어댑터에 대한 물리적 포트 바인딩 수동 구성을 참조하세요.
참고
어댑터 서비스 사용 BizTalk 프로젝트 추가 기능을 사용하여 스키마를 생성하면 포트에 대한 정보와 해당 포트에 대해 설정할 작업이 포함된 바인딩 파일도 만들어집니다. BizTalk Server 관리 콘솔에서 이 바인딩 파일을 가져와 송신 포트(아웃바운드 호출의 경우) 또는 수신 포트(인바운드 호출의 경우)를 만들 수 있습니다. 자세한 내용은 SAP에 대한 포트 바인딩 파일을 사용하여 물리적 포트 바인딩 구성을 참조하세요.
애플리케이션 시작
SAP 시스템에서 tRFC를 호출하려면 BizTalk 애플리케이션을 시작해야 합니다. BizTalk 애플리케이션 시작에 대한 지침은 오케스트레이션을 시작하는 방법 또는 애플리케이션을 시작하는 방법을 참조하세요.
이 단계에서는 다음을 확인합니다.
오케스트레이션에 대한 요청 메시지를 받을 FILE 수신 포트가 실행 중입니다.
오케스트레이션에서 응답 메시지를 받을 FILE 송신 포트가 실행 중입니다.
SAP 시스템에 메시지를 보내는 WCF-Custom 또는 WCF-SAP 송신 포트가 실행 중입니다.
작업에 대한 BizTalk 오케스트레이션이 실행 중입니다.
작업 실행
애플리케이션을 실행한 후에는 오케스트레이션에 대한 요청 메시지를 삭제해야 합니다. SAP 시스템에서 tRFC 를 호출하기 위한 요청 메시지의 스키마에 대해 알아보려면 tRFC 작업에 대한 메시지 스키마를 참조하세요. 예를 들어 tRFC로 BAPI_SALEASORDER_CREATEFROMDAT2 호출하는 요청 메시지는 다음과 같습니다.
<BAPI_SALESORDER_CREATEFROMDAT2 xmlns="http://Microsoft.LobServices.Sap/2007/03/Trfc/">
<ORDER_HEADER_IN>
<DOC_TYPE xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">TA</DOC_TYPE>
<SALES_ORG xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">1000</SALES_ORG>
<DISTR_CHAN xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">10</DISTR_CHAN>
<DIVISION xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">00</DIVISION>
<SALES_OFF xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">1000</SALES_OFF>
<REQ_DATE_H xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">2006-09-01T23:50:00</REQ_DATE_H>
<PURCH_DATE xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">2006-08-25T23:50:00</PURCH_DATE>
<PURCH_NO_C xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">Cust PO</PURCH_NO_C>
<CURRENCY xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">EUR</CURRENCY>
</ORDER_HEADER_IN>
<ORDER_ITEMS_IN>
<BAPISDITM xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">
<MATERIAL>P-109</MATERIAL>
<PLANT>1000</PLANT>
<TARGET_QU>ST</TARGET_QU>
</BAPISDITM>
</ORDER_ITEMS_IN>
<ORDER_PARTNERS>
<BAPIPARNR xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">
<PARTN_ROLE>AG</PARTN_ROLE>
<PARTN_NUMB>0000001390</PARTN_NUMB>
</BAPIPARNR>
</ORDER_PARTNERS>
<RETURN/>
<TransactionalRfcOperationIdentifier>def689b1-b514-4627-a861-d6d7f51c84e3</TransactionalRfcOperationIdentifier>
</BAPI_SALESORDER_CREATEFROMDAT2>
오케스트레이션은 메시지를 사용하고 SAP 시스템에 전달하며 SAP 시스템에서 응답을 받습니다. 응답 메시지는 오케스트레이션의 일부로 지정된 다른 파일 위치에 저장됩니다. SAP 시스템의 응답에는 GUID가 포함됩니다. 그런 다음 오케스트레이션은 응답에서 다른 요청 메시지를 생성하고 SAP 시스템에 전달하여 RfcConfirmTransID를 실행합니다. RfcConfirmTransID 작업에 대한 응답을 SAP 시스템에서 받은 후 파일 위치에 복사됩니다. 요약하자면 작업이 성공적으로 실행된 후:
tRFC를 호출하기 위한 SAP의 응답 메시지가 파일 위치에 복사됩니다. 여기에는 SAP 시스템으로 전송된 것과 동일한 GUID가 포함됩니다. tRFC로 BAPI_SALESORDER_CREATEFROMDAT2 호출하는 응답 메시지는 다음과 같습니다.
<?xml version="1.0" encoding="utf-8"?> <BAPI_SALESORDER_CREATEFROMDAT2Response xmlns="http://Microsoft.LobServices.Sap/2007/03/Trfc/"> <TransactionalRfcOperationIdentifier>def689b1-b514-4627-a861-d6d7f51c84e3</TransactionalRfcOperationIdentifier> </BAPI_SALESORDER_CREATEFROMDAT2Response>
RfcConfirmTransID에 대한 응답 메시지가 동일한 위치에 복사됩니다. 빈 응답입니다. RfcConfirmTransID에 대한 응답 메시지는 다음과 같습니다.
<?xml version="1.0" encoding="utf-8"?> <RfcConfirmTransIDResponse xmlns="http://Microsoft.LobServices.Sap/2007/03/RfcApi/"></RfcConfirmTransIDResponse>
참고
SAP 어댑터 어셈블리에서 노출되는 ConvertGuidToTid() public 메서드를 사용하여 GUID에 매핑된 SAP 시스템에서 TID를 검색할 수 있습니다. 자세한 내용은 특수 작업을 참조하세요.
가능한 예외
BizTalk Server 사용하여 SAP 시스템에서 tRFC를 호출하는 동안 발생할 수 있는 예외에 대한 자세한 내용은 SAP 어댑터를 사용한 예외 및 오류 처리를 참조하세요.
모범 사례
BizTalk 프로젝트를 배포하고 구성한 후에는 구성 설정을 바인딩 파일이라는 XML 파일로 내보낼 수 있습니다. 바인딩 파일을 생성한 후에는 동일한 오케스트레이션을 위해 송신 포트, 수신 포트 등을 만들 필요가 없도록 파일에서 구성 설정을 가져올 수 있습니다. 바인딩 파일에 대한 자세한 내용은 SAP 어댑터 바인딩 다시 사용을 참조하세요.