ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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)에 추가합니다.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
      <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 정보를 설정하여줍니다.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <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 호출 예제

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
        public 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");
     
            //Invoke
            rfcFunc.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

    댓글

2017 TIFY Team All Rights Reserved.