Java에서 SAP RFC 작성하기
웹사이트 작업을 하다 보면 사이트와 SAP라는 ERP를 연동해야 하는 상황을 맞닥트릴 수 있는데,
처음 이클립스와 SAP JCO를 연결하는 부분이 잘 되지 않아 어려울 수 있지만
해당 고비만 넘기면 Java에서 SAP를 사용하는 데에 있어 작업은 그렇게 어렵지 않다.
Java에서 SAP RFC를 사용하러 ㄱㄱ!
1.SAP 계정 설정
Connection.java에 아래의 연결하려는 SAP 계정(인터페이스용)을 설정해 주고,
properties.setProperty(DestinationDataProvider.JCO_ASHOST, "IP");
properties.setProperty(DestinationDataProvider.JCO_R3NAME, "name");
properties.setProperty(DestinationDataProvider.JCO_CLIENT, "num");
properties.setProperty(DestinationDataProvider.JCO_USER, "ID");
properties.setProperty(DestinationDataProvider.JCO_PASSWD, "PWD");
properties.setProperty(DestinationDataProvider.JCO_LANG, "KO");
2.RFC 정보 설정
사용하려고 하는 보통 ServiceImpl.java에서 아래의 코드대로 작성을 해주면 결과 테이블을 받아올 수 있다.
단! 모두 SAP RFC를 작성할 때의 이름들과 동일해야 한다.
RFC명, 파라미터 명, 결과 정보인 결과 코드명과 메세지 명, OUTTABLE 명 모두!
Connection connection = new Connection(); //연결 선언
JCoFunction function = connection.getFunction("SAP RFC 명"); //SAP RFC 명
//보내줄 파라미터 명과 값 셋팅
function.getImportParameterList().setValue("I_PARAM1", "20211201");
function.getImportParameterList().setValue("I_PARAM2", "20211216");
connection.execute(function); //실행
//실행할 RFC 정보 콘솔 출력
/*System.out.println("=====================================");
System.out.println("SAP RFC 명");
System.out.println("=====================================");
System.out.println("I_PARAM1 : " + params.get("I_PARAM1") );
System.out.println("I_PARAM2 : " + params.get("I_PARAM2"));*/
//받아오는 결과정보-결과코드와 메세지
String rtnCode = function.getExportParameterList().getString("E_CODE");
String rtnMsg = function.getExportParameterList().getString("E_MSG");
System.out.println(rtnCode+"/"+rtnMsg); //결과 콘솔 출력
//받아오는 결과정보-원하던 결과 테이블
JCoTable resTable = function.getTableParameterList().getTable("OUTTABLE명"); //OUTTABLE명
//System.out.println("\n"+resTable); //받아오는 출력결과 테이블 콘솔 출력
//받아온 값 Controller로 리턴
return convertToRFCByJSON.getRFCList(function, resTable, rtnCode, rtnMsg);
콘솔로 결과를 알기 위해서 System.out.println으로 출력해 주었으나,
결과가 성공적으로 받아져 오면 주석은 필수!
받아오는 테이블을 그대로 사용할 거라면 Controller.java 에서 ModelAndView에 담아 넘기면 끝!
데이터를 가공할 거라면 ServiceImpl 단 에서 모두 처리 후 넘겨준다.
@RequestMapping(value="/functionName.json") //호출 링크
public ModelAndView functionName(ParameterMap params) throws Exception{
//ServiceImpl에서 위에 작성한 코드가 들어있는 function명
return new ModelAndView("jsonView", Service.functionName(params));
}
RFC명 밖에 모를 땐,
SAP에서 T-CODE: SE37으로 SAP FUNCTION, 즉 RFC를 조회할 수 있는데,
RFC명으로 검색해서 나오는 RFC정보들을 참고하면 위에 빈 값들을 잘 채워 넣을 수 있다.
Import탭이 입력할 파라미터 명,
Export탭이 받아오는 결과 정보,
Tables탭이 받아오는 결과 테이블 정보들이 있는 것을 알 수 있다!
도움이 되었다면 공감♥ 부탁드려요!
로그인하지 않아도 가능!