[SAP-JCO] JCo 예제 및 연결 정리

[SAP-JCO] JCO( SAP Java Connector ) 예제 및 연결 정리

 


JCO 란? 

 
SAP는 SAP JCo ( SAP Java Connector ) 를 제공하여,  SAP NetWeaver Appliacation Sever 에서 ABAP 와 JAVA 간의 양방향 통신을 지원합니다. (RFC , 원격함수호출)을 기반으로 구현을 합니다.


 

JCO 연결

 

사전 준비

  • Windows 서버의 경우 sapjco.jar 파일과 sapjco.dll 파일
  • Linux 서버의 경우 sapjco.jar 파일과 libsapjco.so


sapjco3.jar
1.22MB

조금 더 최신으로 쓴다고 하면 sapjco3.jar
아파치 톰캣 혹은 Jeus 내 lib 경로에 넣어준다.
해당 SAP 관련 파일은 SAP BC로부터 전달 받을 수 있도록 한다.
 
* 연결 에러 - 로컬에서 안되는 경우 (폐쇄망에서 생기는 것 같은데, SAP Jco가 제대로 안된다면 해당 dll 파일이 있는 지 확인 해볼 것 - msvcp71, msvcr71)
경로 : c\windows - System32 / SysWow64 
 

msvcp71.dll
0.48MB
msvcr71.dll
0.33MB

JCO 연결 예시

* 소스코드는 일부만 참고용으로 제공합니다.
 

1. SAP GUI(클라이언트)와 연결, Connection을 생성한다.

SAP의 JCO Class를 이욯합니다.

JCO.Pool pool = null;

pool = JCO.getClientPoolManager().getPool(dbpool);

if ( pool == null )
{
	JCO.addClientPool( dbpool,   // 오라클 Pool, Alias for this Pool
    				  poolsize, // 커넥션 수 최대
                       cleint,	 // SAP Client Ex. 100 , 200 과 같은 세자리수
                       userId,   // SAP userId(logon)
                       pwd,		 // password
                       langu,	 // 언어, SAP 3인 경우 KR
                       hostName,	// host 명 - SAP logon 시 접속 IP
                       systmeNumber  // 시스템 번호
}

IRepository repository = JCO.createRepository("CreateMyRepo", dbpool);

 
 

2. SAP RFC 호출하여 데이터 가져오기

 
RFC Spec
SAP RFC인 Z_MY_FRC는 Import(인풋) 으로 FROM_DATE(시작일)과 TO_DATE(마지막 일)을 받는다.
Tables - ITAB 이 매개변수로 설정되어 있다. (Internal Table)

// 연결된 레포지토리로부터 RFC 펑션 템플릿을 가져온다.
IFunctionTemplate ftemplate = repository.getFunctionTemplate("Z_MY_RFC");

// Function 을 생성한다. 생성한 Function 템플릿으로부터
JCO.Function Function = new JCO.Function(ftemplate);

// Pool에서 Client 를 가져온다.
JCO.Client client = JCO.getClient(dbpool);

// Function 내 Input 파라미터
JCO.ParameterList Input = function.getImportParameterList();

input.setValue(FROM_DATE, "FROM_DATE");
input.setValue(TO_DATE, "TO_DATE");

// 실행
client.execute(function);

// RFC 결과 내 Internal Table 값 가져오기
JCO.Table tables = function.getTableParameterList().getTable("ITAB");

 


마치며

 
[주의] JCO연결 자료는 최신 자료는 아니므로 SAP Help Portal 이나 Document 등을 참고해보는 게 좋습니다.
JAVA에서 바로 RFC를 통한 접근이 가능하여 ABAP 내 결과값이나 데이터 전송 등을 할 수 있다는 게 가장 큰 장점이며 ABAP에 대한 간단한 이해(* RFC, Internal Table)만 있다면 JAVA 개발자들도 사용하는 데 큰 어려움은 없을 것 입니다.
 
RFC : Remote Function Call, SAP 내의 Function을 외부에서도 호출이 가능하게 설정한 것
Internal Table : 내부 테이블로 SAP의 구조체 등을 이용하여 내부 테이블을 설정하고 Select 값 등을 저장하는데 사용함.
주로 ABAP 개발 시 select join 등으로 값을 뽑아낸 다음 Loop나 기타 Funcion 등을 이용해 데이터를 가공합니다.
 
 
JCO 관련 참고
https://help.sap.com/saphelp_ewm900/helpdata/en/45/182526d1590067e10000000a1553f7/content.htm?no_cache=true

SAP Java Connector - SAP Documentation

SAP provides the SAP Java Connector (SAP JCo) to enable communication in the SAP NetWeaver Application Server between the ABAP and Java stacks. SAP JCo can be used for the internal communication of SAP NetWeaver Application Server, where the ABAP personali

help.sap.com