C#에서 SAP RFC Function(BAPI Function)을 사용하는 방법(예제포함)

닷넷으로 개발한 윈폼 프로그램에서 SAP로 연결해서 데이터를 주고 받는 로직을 구현해야 할 경우가 있습니다.
SAP ABAP의 RFC Function 프로그램을 개발하는 데 어려움을 겪는 분들을 위해 간단한 예제를 만들어 보았습니다.

C# 닷넷 프로그램으로 SAP에 연결하여 RFC Function 모듈을 이용하여 데이터를 주고 받는 예제 프로그램입니다.

닷넷의 윈폼(WinForm)이나 ASP.NET(웹폼)에서 동일하게 사용할 수 있는 예제입니다.

C# 프로그램 설명

– 개요 : 고객번호를 입력하고 가져오기 버튼을 클릭하면 SAP의 RFC를 이용하여 고객명을 가져오는 프로그램입니다.

– 대상 프레임워크 : .NET Framework 2.0
– 플랫폼 대상 : x84
— 대상 프레임워크와 대상 플랫폼은 참조하는 SAP .NET Connector의 버젼에 맞추다 보니 예전 버젼으로 하였습니다.

▼ 실행 화면

C#에서 SAP RFC Function(BAPI Function)을 사용하는 예제 - 실행 화면

닷넷 프로젝트의 참조 추가와 실행 폴더의 파일 구성

프로젝트의 참조에 sapnco.dll, sapnco_utils.dll 두개를 참조 추가 합니다.

C#에서 SAP RFC Function(BAPI Function)을 사용하는 방법 - 참조 추가

rscp4n.dll과 libicudecnumber.dll은 실행 폴더에 직접 복사해서 놓습니다.

C#에서 SAP RFC Function(BAPI Function)을 사용하는 방법 - 실행 폴더

RFC(BAPI) Function을 사용하는 C# 프로그램 소스 및 설명

SAP 연결을 위해 using SAP.Middleware.Connector 선언해 줍니다.

using System;
using System.Windows.Forms;
using SAP.Middleware.Connector;
 
namespace SAP_RFC_Demo
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            // SAP에 연결하기
            RfcConfigParameters rfc = new RfcConfigParameters();
            rfc.Add(RfcConfigParameters.Name, “PRD”);   //SAP 어플리케이션 서버 이름
            rfc.Add(RfcConfigParameters.AppServerHost, “100.10.10.100”);   //서버IP
            rfc.Add(RfcConfigParameters.Client, “100”);   //클라이언트 번호
            rfc.Add(RfcConfigParameters.User, “user01”);   //사용자ID
            rfc.Add(RfcConfigParameters.Password, “password”);   //사용자 패스워드
            rfc.Add(RfcConfigParameters.SystemNumber, “00”);   //시스템ID
            rfc.Add(RfcConfigParameters.Language, “KO”);   //언어
            rfc.Add(RfcConfigParameters.PoolSize, “5”);
            RfcDestination rfcDest = RfcDestinationManager.GetDestination(rfc);
            RfcRepository rfcRep = rfcDest.Repository;
 
            // Function 선언(초기화)
            IRfcFunction function = null;
 
            // BAPI(RFC) Function 호출하기
            function = rfcRep.CreateFunction(“Z_BAPI_SD_KUNNR_NAME”); //BAPI펑션
            function.SetValue(“IM_KUNNR”, textBox1.Text); // Import
            function.Invoke(rfcDest);
            rfcDest = null;
 
            // BAPI Function에서 리턴된 값 처리
            IRfcStructure RETURNStructure = function.GetStructure(“RETURN”);
            textBox2.Text = function.GetString(“EX_NAME1”).ToString();
 
 
        }
    }
}
 
 

SAP에서 만들어 놓은 Z_BAPI_SD_KUNNR_NAME의 RFC Function Module은 SAP ABAP – RFC Function 모듈 생성하기에서 확인하실 수 있습니다.

– 아래 링크에서 SAP .NET Connector 3.0 다운 받을 수 있습니다. (닷넷프레임워크 2.0/4.0, 32bit/64bit 구분해서 받을 수 있음) : https://support.sap.com/en/product/connectors/msnet.html?anchorId=section_512604546 

마무리

이상으로 C#에서 SAP RFC Function(BAPI Function)을 사용하는 방법(예제포함)에 대해 알아보았습니다.

C# 닷넷 프로그램에서 SAP를 연동하여 RFC Function을 사용하는 프로그램을 개발할 때 참고하시기 바랍니다.





이 글이 도움이 되었기를 바랍니다. ^-^
댓글로 흔적을 남겨 주세요.

답글 남기기