Tuesday, November 25, 2008

RFC Server 구성하기 - (1) SAP .NET Connector C# Side

이번 아티클은 SAP.NET Connector를 이용하여 SAP RFC Server를 구성하는 방법에 대해서 이야기 할려고 합니다.

아티클은 3회에 걸쳐 진행하도록 하겠습니다.


BizTalk Server WCF SAP Adapter 가 나오기 전만 해도 이전 버전의 Microsoft BizTalk Adapter v2.0 for mySAP Business Suite에서는 RFC Server 방식을 지원하지 않았습니다.

BizTalk Server WCF SAP Adapter 가 나오기 전만 해도 이전 버전의 Microsoft BizTalk Adapter v2.0 for mySAP Business Suite에서는 RFC Server 방식을 지원하지 않았습니다.

** RFC Server란?
사실 SAP ABAP개발자에게는 너무나도 쉬운부분이겠지만 BizTalk 개발자 또는 Microsoft Product개발자에게는 생소할수 있는 부분입니다. 간단하게 이야기하며, SAP의 비즈니스 오브젝트를 외부에서 호출하기 위한 방법이 필요하고 그 방법으로 SAP에서 제공하고 있는것이 RFC입니다. RFC는 (Remote Function Call)로써 외부에서 SAP Function을 호출하기 위한 방법입니다. RFC는 Client와 Server의 두가지로 나누고 있으며, SAP Function에 비즈니스 로직이 존재하며, 외부모듈이 호출하는 것이 RFC Client 입니다. 외부모듈에 비즈니스 로직이 존재하며, SAP로 부터 이벤트를 받는 방식이 RFC Server입니다.

http://help.sap.com/ 에서는 다음과 같이 나와있습니다.
In the SAP System, the ability to call remote functions is provided by the Remote Function Call (RFC) interface. This interface allows for remote calls between two SAP Systems (R/3 as of Release 2.1 and R/2 as of Release 5.0D), or between an SAP System and a non-SAP system.

server와 client에 대해서는..
RFC programs for non-SAP Systems can function as either the caller or the called program in an RFC communication.
There are two kinds of RFC programs: RFC client and RFC server programs:The RFC client is the instance that calls up the RFC to execute the function which is provided by an RFC server. In the following, the functions that can be executed remotely will be called RFC functions, and the functions provided by the RFC API will be called RFC calls.

그렇다면! RFC Server를 이용하여 SAP 의 이벤트를 받고 싶다면 어떻게 하는지 알아보겠습니다.

시스템 구성
Windows Server 2003 Enterprise Edition with SP2
Visual Studio 2003
SAP .NET Connector 1.03
JAVA VM Version 5 Runtime engine

** SAP .NET Connecotr는 Visual Studio 2003, .NET Framework 1.1까지만 지원하고 있습니다. 더 이상 SAP에서는 SAP .NET Connector를 지원하지 않겠다고 합니다. 그 이상 버전에서 사용하고 싶으시면 WCF SAP Adapter를 이용하셔야 합니다.

사전 작업
SAP RFC Destination 설정과 RFC 함수 구현이 완료되어 있어야 됩니다.

실제 구현
SAP .NET Connector에는 RunTime과 Design Time으로 분리되며, Visual Studio 2003을 지원하기 위해서는 반드시 Design Time이 설치되어야 합니다. 설치 된 후 Visual Studio 2003에서 프로젝트를 추가 후 -> 새로운 항목 추가를 클릭하면 SAP Connector Class라는 항목을 확인할 수 있습니다.


SAP Connector Class를 선택 Name을 지정 후 Open을 클릭하면 SAP .NET Connector Wizard가 실행됩니다.


SAP Server를 선택 후 Next를 클릭합니다.


SAP 서버의 연결정보를 구성 후 Object Type을 Server Stub으로 선택 후 Next를 클릭합니다.


RFC함수를 검색하여 ADD시킨 후 Next를 클릭합니다.


C#코드가 자동생성되는것을 확인할 수 있습니다.


Stub코드가 생성 된 후 Windows서버에서 SAP 이벤트를 수신받기 위해 Listener를 구성하여야 합니다. 일반적으로는 윈도우즈 서비스로 구성합니다.


프로젝트가 구성되었습니다.
프로젝트 구성이 완료되었으니 실제 소스를 구현합니다. 여기서는 콘솔 프로그램으로 작성하였습니다.


using 문에 SAP.Connector를 추가합니다. (Wizard를 통해 Stub코드를 생성할때 SAP.Connector.dll은 자동 참조 됩니다.


RFCServerConsole을 상속받아 구현합니다.


콘솔프로그램의 구현은 간단합니다. SAP의 Detination정보를 가지고 서비스를 대기하는 Listener입니다.


SAP에서 이벤트를 수신받았을때 수행되는 함수입니다. Wziard로 Stub을 생성 후 override하여 구현하면 됩니다. 여기서는 간단하게 X, Y값을 덧셈하는 로직입니다.

실제 구현 소스는 여기서 다운로드 받으세요. (다른 이름 저장으로 받으세요!)

No comments: