본문으로 바로가기

SAP JCO manual 번역

category SAP 2014.03.13 10:18



jco관련 프로젝을 하는데 이 메뉴얼을 조금 번역 해보았다.


참고로 jco connector계정이 있어야 다운로드 받을 수 있고, sap server sm59에 setting이 되어 있어야 한다.





SAP Java Connector


목표

SAP 자바 컨넥터(SAP JCo)는 아밥으로 작성된 컴포넌트와 어플리케이션을 자바에서 개발할 수 있도록 해주는 미들웨어 컴포넌트이다. SAP JCo를 이용하면 자바에서 아밥 펑션을 사용 할 수 있고 아밥에서 자바 펑션을 사용할 수도 있다.


SAP JCo는 pc 어플리케이션과 웹 어플리케이션을 개발하는데 사용할 수 있다.


JCo는 두가지 버젼이 있는데 각각의 특징은 아래와 같다.

· 통합 버젼은 AS Java와 SAP 비즈니스 컨넥터를 지원한다.

· 단일 버전은 AS ABAP과 외부 자바 비즈니스 어플리케이션을 지원한다.


해당 문서는 JCo 3.0 단일 버전에 대해 외부 자바와 연동하는 방법을 설명합니다.

자세한 정보는 http://help.sap.com 을 참고 바랍니다.


구현 노트

· IDoc기반 연동 방법에 대해서는 'IDoc Class Livery 3.0'을 참고 하면 됩니다.

· SAP JCo와 IDoc 클래스 라이브러리 설치 파일은 'service.sap.com/conectors'에서 다운 받으시기 바랍니다.


SAP JCo 함수

SAP JCo는 아밥 종속적인 외부 자바 어플리케이션을 만들기 위한 아래의 기능을 제공합니다.

· SAP JCo는 CPI-C 라이브러리를 엑세스 하기 위한 JNI(자바 네이브 인터페이스)를 기반으로 합니다.

· JCo는 SAP(R/3) 3.1이상을 지원하며 BAPI 또는 RFMs(Remote Function Moduls)가 설치된 mySAP를 지원합니다.

· 외부 자바 함수를 호출 할 수 있고 자바에서 아밥 함수를 호출 할 수 있습니다.

· SAP JCo를 이용하면 동기적, 트렌젝션적, 순차적, 백그라운드 RFC를 이용할 수 있습니다.

· SAP JCo는 서로 다른 플랫폼 끼리도 연동이 가능합니다.


SAP JCo 아키텍처

아래 그림은 SAP JCo에서의 데이터 교환 계층을 나타냅니다(단일 버전 기준). 자바 어플리케이션에서 출발해서, 자바 메소느든 JCo 자바 API를 통해 CPIC계층으로 갑니다, 해당 메소드가 JNI 계층을 이용해 RFC로 변환 되었을 때, RFC 호출은 자바로 변환되고 자바 어플리케이션으로 들어갑니다.



SAP JCo 설치


SAP JCo 커스터마이징과 연동

SAP JCo를 설치한 후 com.sap.conn.jco.ext 패키지를 이용해 시스템을구축할 수 있습니다. 시스팀을 구축하기 위해, 해당 패키지의 관련 인터페이스를 구현하고 구현한 인터페이스를 com.sap.com.jco.ext.Environment 클래스를 통해 등록 합니다.


아래의 인터페이스는 com.sap.conn.jco.ext 패키지에 포함된 인터페이스입니다. JCo연동하는데 사용합니다.


ClientPassportManager - 클라이언트에서 SAP ABAP 어플리케이션에 서버에 접근하기 위한 JDSR 권한 관리 인터페이스.

DestinationDataProvider - 원격 SAP 시스템으로 접근하기 위한 정보를 제공함.

ServerDataProvider - JCoServer 속성을 제공합니다.

ServerPassportManager - 

SessionReferenceProvider -




AS ABAP과 컨넥션 맺기

JCO 3.0에서 컨섹션 설정은 싱글과 풀을 엄격하게 구분하지 않는다.


대신, 컨넥션이 풀링인지 싱글인지는 프로퍼티에서 결정한다.


컨넥션 파라메터는 컨넥션 경로를 결정한다. 하나의 경로는 유일한 이름과 여러개의 컨넥션 파라메터를 가진다. 경로의 이름은 어플리케이션에서 설정한 논리적인 이름으로 정한다. 좀더 효율적인 시스템에서는, 하나의 아밥 시스템에 대하여 여러개의 접근 포인트를 생성한다.


경로 이름이 정해지면, 해당 컨넥션 설정이 완료된다.




펑션 실행하기

아래의 예제에서 펑션은 펑션 호출 모듈에 의해 실행되며 하나의 스트럭쳐가 액세스된다.


예제

'STFC_CONNECTION', 'RFC_SYSTEM_INFO'를 호출하려고 하는 경우.

1.경로를 호출하고 관련 펑션을 호출한다.

2.모든 펑션 파라메터는 'getImportParameterList()', 'getExportParameterList()', 'getTableParameterList()'를 이용해 호출할 수 있다.

3.'getStructure()'는 파라메터 임포트 또는 익스포트를 도와준다.




SAP GUI 실행하기

SAP에서 펑션 모듈을 호출 할 때 SAP GUI를 실행시켜야 할 경우가 있다.

!몇몇 이전 버젼에서 SAP GUI실행이 필요한 경우가 있는데, JCO를 실행중에 화면을 보여주어야 할 경우가 있다.


외부 클라이언트에서 SAP GUI를 실행하기 위해, SAP시스템은 몇가지 요구사항을 갖추어야한다. 자세한 정보는 SAP note 1258724를 참고 바란다.


아래와 같이 하면 된다.







테이블 처리하기

할일

다음 스텝에서는 '회사 코드(Company Code)'를 호출해볼 것이다. 관련 RFM이 호출 될 것이다. 해당 RFM은 어떠한 임포트 파라메터가 없다.

1.테이블 파라메터 리스트 액세스를 통해 테이블 객체를 받아오자.(getTableParameterList()).

2.해당 리스트에서, 실제 테이블을 액세스 하자(getTable()). 'JCo Table' 인터페이스는 테이블을 처리하기 위한 추가적인 메소드들을 포함한 JCoStructuer에 대한 모든 메소드를 포함하고있다. 하나의 테이블은 Row갯수에 제한이 또는 Row를 하나도 포함하지 않을수도 있다.


아래의 다이어그램은 setRow() 메소드에 대한 것이다, 가장 최근 레코드를 가리키는 포인터는 해당 순서에 테이블의 해당 열을 가리킨다. getNumRows()메소드는 테이블에 있는 모든 레코드의 수를 알려준다.


다이어그램의 아랫쪽에 보면 setRow()메소드 대신 nextRow()를 사용할 수도 있다.




파라메터 넘기기

이번 스텝에서는 BAPI '회사코드'를 호출한다. 각각의 회사코드의 상세 정보도 호출해볼 것이다. 관련 RFM은 'BAPI_COMPANYCODE_GETDETAIL'이다. 해당 RFM을 이용하려면, COMPANFCODEID에 특정 파라메터를 지정해주어야 한다.


할일

1.전달해줄 파라메터 리스트를 불러오려면, getImportParameterList() 메소드를 이용한다.

2.파라메터 값은 setValue() 메소드를 이용해 할당한다. 먼저 값을 넣고 그 다음에 이름을 넣는다. SAP  JCo는 모든 데이터타입들에 대하여 여러가지 다른 버전의 setValue() 메소드를 제공한다.

3.SAP JCo는 해당 값들을 변환하고 변환된 값들을 해당 필드의 데이터 타입에 맞게 전송한다. 값을 변환 하는 중 에러가 발생하면 예외가 발생한다. setValue() 메소드는 JCo 스트럭쳐, 테이블, 필드 모두에서 사용할 수 있다. 그러므로 테이블의 한개의 열로 만들어진 스트럭처에 값을 할당 할 수 있다.











댓글을 달아 주세요