-
SAP RFC 연동 (C#)Language/C# 2019. 10. 6. 21:11
RFC 란?
Remote Function Call 은 독점적 인 SAP SE 인터페이스입니다. RFC (Remote Function Call)는 SAP 시스템 간의 통신을위한 표준 SAP 인터페이스입니다. RFC는 원격 시스템에서 실행될 함수를 호출합니다. [1] 원격 함수 호출은 SAP 소프트웨어 및 ABAP 프로그래밍과 연관 될 수 있으며 서버에서 반환 된 데이터를 사용 하는 외부 프로그램 ( PHP , ASP , Java 또는 C , C ++ 과 같은 언어로 작성)에 대한 방법을 제공 합니다. 데이터 트랜잭션은 서버에서 데이터를 가져 오는 것에 만 국한되지 않지만 서버 레코드에도 데이터를 삽입 할 수 있습니다. SAP는 RFC 호출에서 클라이언트 또는 서버로 작동 할 수 있습니다.[출처] 위키피디아
1. SAP .Net Connector 프로잭트에 참조 추가
Sap .net Connettor를 설치, 압축을 풀게되면 아래 두개의 dll이 생기게됩니다. 운영하려 는 환경에 맞게 32비트 또는 64비트용 dll을 참조하여 주시기 바랍니다.
- SAP .Net Connector의 경우 버젼 등의 정보가 각 시스템별로 상이 할 수 있으므로 되도록 고객사측으로부터 전달받는것이 좋습니다.
(구글에 Sap .NET Connector를 검색하면 다운로드 페이지가 많으므로, 별도로 첨부하지는 않습니다.)
- 참조시켜야하는 dll
sapnco.dll
sapnco_utils.dll
2. 편의상 Sap연동관련 설정값을 app.config (또는 Web.config)에 추가합니다.
1234567891011<appSettings><add key="NAME" value="QA"/><add key="SAP_USERNAME" value="username"/><add key="SAP_PASSWORD" value="password"/><add key="SAP_CLIENT" value="100"/><add key="SAP_APPSERVERHOST" value="servername"/><add key="SAP_SYSTEMNUM" value="0"/><add key="SAP_LANGUAGE" value="EN"/><add key="SAP_POLLSIZE" value="10"/></appSettings>cs 3. app.config (또는 Web.config)에 SAP 연동할 서버의 Destination 정보를 설정하여줍니다.
123456789101112<configuration><SAP.Middleware.Connector><ClientSettings><DestinationConfiguration><destinations><add NAME="SapConnection" USER="userid" PASSWD="password" CLIENT="110" LANG="KO" ASHOST="123.123.123.123" SYSNR="00" MAX_POOL_SIZE="10" POOL_SIZE="5" IDLE_TIMEOUT="600"/></destinations></DestinationConfiguration></ClientSettings></SAP.Middleware.Connector></configuration>cs 4. RFC 호출 예제
1234567891011121314151617181920212223242526272829303132333435363738394041424344public string CallRFC(){RfcDestination rfcDest = null;IRfcFunction rfcFunc = null;string strReturn = "";string strStatus = "OK";try{PERNR = "EmpNo";ENAME = "USERNAME";BUKRS = "COMPANYCODE";NO_MASK = "";SPRAS = "";//파라메터 셋팅rfcStructInvoke.SetValue("PERNR", PERNR);rfcStructInvoke.SetValue("LOGID", LOGID);rfcStructInvoke.SetValue("ENAME", ENAME);rfcStructInvoke.SetValue("SCRNO", SCRNO);rfcDest = RfcDestinationManager.GetDestination("SapConnection");rfcFunc = rfcDest.Repository.CreateFunction(g_RFCName);IRfcStructure rfcStructInvoke = rfcFunc.GetStructure("IS_PARM");//InvokerfcFunc.Invoke(rfcDest);IRfcStructure rfcStruct = rfcFunc.GetStructure("E_RETURN");strStatus = rfcStruct.GetValue("Status").ToString();RfcTable rfcResultTable1 = rfcFunc.GetTable("T_Return");strReturn = rfcResultTable1.Metadata.LineType[0].Result;}catch (Exception ex){throw new Exception(ex.Message);}finally{rfcDest = null;rfcFunc = null;}return strReturn;}cs 'Language > C#' 카테고리의 다른 글
C# 버젼 연혁 (0) 2020.10.10 [C#] Boxing / Unboxing에 대하여 Araboza. (0) 2020.09.19 string 과 Stringbuilder의 차이점을 Araboja (0) 2020.09.05 C#으로 개발된 Com dll 등록 방법 (0) 2020.06.20 댓글