web관련 공부들

Java에서 SAP RFC 작성하기

초코맛 2021. 12. 16. 16:40
반응형

웹사이트 작업을 하다 보면 사이트와 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탭이 받아오는 결과 테이블 정보들이 있는 것을 알 수 있다!

 

도움이 되었다면 공감♥ 부탁드려요!

로그인하지 않아도 가능!

반응형