[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
아파치 톰캣 혹은 Jeus 내 lib 경로에 넣어준다.
해당 SAP 관련 파일은 SAP BC로부터 전달 받을 수 있도록 한다.
* 연결 에러 - 로컬에서 안되는 경우 (폐쇄망에서 생기는 것 같은데, SAP Jco가 제대로 안된다면 해당 dll 파일이 있는 지 확인 해볼 것 - msvcp71, msvcr71)
경로 : c\windows - System32 / SysWow64
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
'ERP - 구매모듈' 카테고리의 다른 글
[SAP-Error] 내부번호를 지정하는 중, 오류가 발생하였습니다. 시스템 관리자에게 알리십시오 (0) | 2024.07.04 |
---|---|
[MM] 구매단가 관리, 구매정보레코드 Info Record 란? (1) | 2024.07.01 |
SAP 운영 정리 및 T-code 등등 (0) | 2024.06.05 |
[ERP] SAP MM 모듈 개요 (3) - 자재 이동, 송장 처리 (1) | 2024.04.09 |
SAP MM 모듈 자격증 후기(SAP Certification ,C_TS452_2021) (0) | 2024.04.02 |