자바/코딩

SAP JCO 연동

베어그릴스 2023. 1. 10. 14:22
반응형

1. SAP Jco란?

 

   - Java와 SAP을 연동하여 시스템을 구축할 때 사용되는 SAP JAVA Connector.

   - Java에서 SAP의 데이터를 가져오기 위해 SAP Jco 사용

 

2. 중요 파일

   - sapjco.jar

   - sapjco.dll

 

여기서 dll은 윈도용이고 help.sap.com 에 들어가서 운영체제에 맞는 버전을 제공합니다.

 

sapjco.jar는 SAP에서 제공하는 자바와 SAP을 sapjco.dll과 연결해주는 기능을 합니다.

 

3. 환경 세팅

(1) sapjco.dll 파일을 C 드라이브 > Windows > System32 아래로 넣어준다.

 

(2) sapjco3.jar 파일은 C:\tomcat-7.0.90\lib 폴더로 복사

 

 

환경세팅이 끝났다면 이제 ERP 업체와 협업한다.

 

ERP 업체는 업무에 맞는 펑션을 개발한다.

 

개발이 완료되면 문서를 줄 텐데 아래와 같이 해당 펑션 기능의 프로그램 아이디와 테이블 구조 및 칼럼의 속성

조회 또는 PUT 인지 검색조건은 어떠한지 등등 테스트까지 한 문서를 보내온다.

 

이제 개발자는 이 문서를 보고 프로그램 아이디를 대입하고 검색조건이 있음 검색조건을 넣어주고 개발을 진행하면 된다.

 

 

SAP 펑션문서

 

자바 소스

    @Override
    public List<Map<String, Object>> doTask(Map<String, Object> params) throws Exception
    {
        JCoFunction      function = SapRfcUtil.getFunction("프로그램ID");
        JCoParameterList iParams  = function.getImportParameterList();

        // params1.getFieldIterator(); 파라미터 알아 보기
        
        //아래는 파라미터 조회조건
        String iKunnr = null;
        String iFudate = DateUtil.getMoveDate(-7).replace("-", ""); //일주일전
        String iLudate   = DateUtil.getCurrentDate("yyyyMMdd");

        iParams.setValue("I_KUNNR" , iKunnr );
        iParams.setValue("I_FUDATE", iFudate); // 조회시작일
        iParams.setValue("I_LUDATE", iLudate); // 조회종료일

        SapRfcUtil.runFunction(function); // Remote Function Call 실행

        // 조회 결과를 얻어 온다.
        JCoParameterList exparams = function.getExportParameterList();
        String eRcode = exparams.getString("E_RCODE");
        String eMesEn = exparams.getString("E_MES_EN");
        String eMesKo = exparams.getString("E_MES_KO");

        if ("E".equals(eRcode))
        {
            CommonUtil.printErr(eRcode, eMesEn, eMesKo); // 결과를 얻어 온다.
            return null;
        }

        // 조회된 내용을 얻어 온다.
        JCoParameterList results = function.getTableParameterList();
        JCoTable table = results.getTable("테이블아이디");

        return SapRfcUtil.tableToRows(table); // 조회된 내용을 얻어 온다.
    }

 

조회된 내용을 얻어온 후 Map에 담아 정재및 테이블에 적재하는 과정을 거치면 된다.

 

데이터가 많은 경우 돌리다가 커넥션이 끊어질 수 있으니 예외처리를 해주는것도 잊지 말자.

 

오늘도 보람찬 생존 ^.^

반응형