메뉴 건너뛰기

SAP 한국 커뮤니티

[Tutorial] ABAP CDS 3부 / AMDP / CDS with AMDP

공상우 2017.03.05 17:09 조회 수 : 10421 추천:1

1. ABAP CDS


1.1 Extend View
원래 View를 건드리지 않고 필드를 추가하고자 할 때 사용한다. 스탠다드 CDS View에 필드를 추가하고자 할 때 유용하다.
1.PNG


Z_ddl_0001을 기반으로한 z_ddl_0002 DD 오브젝트를 작성하는 방법이다.

2.PNG


이 오브젝트를 Active하면 Dictionary 오브젝트인z_ddl_v0002가 생성된다. 하지만 이 View는 데이터 조회가 불가능하다. 추가된 필드는 원본 View인 z_ddl_v0001에 append 되어 있으므로 원본 View에서 데이터를 조회한다.

3.PNG


1.2 Semantics
시멘틱은 Fiori, HANA View, BW에서 사용되는 메타 데이터를 정의할 때 사용한다.

그러나 ABAP에서는 해당속성을 거의 이용할 수 없기 때문에 주석정도로 이해하고 넘어간다.

currency fields and quantity fields 의 통화 필드 및 수량 필드를 정의하는 데 사용할 수 있다.


1.3 Unit Conversion
수량단위 변환

일반적인 단위환산을 의미한다. 자재마스터의 단위환산과 무관하다.
5.PNG
환율 변환

스탠다드 환율정보를 이용해 환율을 계산해준다.

6.PNG


1.4 System field
시스템필드값을 사용해 현재일자,시간 언어키들을 사용할 수 있다. 다만 파라미터를 이용하기 때문에 SE11에서 조회할 수 없다는 불편함이 있다.

7.PNG


1.5 $session

파라미터없이 현재 클라언트와 언어키를 사용할 수 있다. 다만 1511 이후 버전에서 지원하며 그것마저 현재 사용 가능한 필드는 3 개밖에 없다.

8.PNG


2. AMDP
하나의 비즈니스 로직을 구현하기 위해 많은 수의 CDS View를 만든다면 관리도 어렵고 효과적이지 않다.

또한 싱글 데이터를 가져와 조인을 거는데 응용하거나 관계형 DB관점에서 올바른 관계임에도 고객의 요청에 의해 극단적인 예외처리를 해야할 때가 많이 있다.  이런 경우에 프로시져를 사용하게 되는데 이 때 프로시져를 HDB모델링을 이용해 개발하는 대신 ABAP 레벨에서 처리할 수 있도록 기능을 제공하는데 이를 AMDP라고 한다.

단 AMDP를 제대로 사용하기 위해서는 권한이 있어야 한다.

- 프로시져를 호출하는 아이디에 HDB 레벨의 SAP ERP 스키마 조회 권한이 있어야 한다.

- 데이터 검증을 위한 AMDP 디버깅 권한을 HDB 레벨에서 필요하다.


2.1 클래스 생성

AMDP는 HDB로 접근해서 생성할 수 있었던 프로시져를 ABAP으로 다룰 수 있는 객체이다.

인터페이스 IF_AMDP_MARKER_HDB를 사용해 만든 클래스안에 SQLScript 가 적힌 프로스져를 메소드로 생성한 뒤 Active하면 ABAP 클래스 오브젝트와 함께 HDB프로시져가 생성된다. 
9.PNG

2.2 클래스 로직 작성

AMDP 클래스는 기본적으로  input 파라미터와 내부 SQLScript 만 변동되는 수준으로 바뀔 뿐 크게 바꿀게 없다.

따라서 스탠다드 샘플을 복사한뒤 그대로 사용하는게 편하다.

제약사항으로 ABAP 7.5까지 나온 현시점에서 AMDP의 output으로 받을 수 있는 것은 1개로 제한되어 있음을 유의한다.

다른 예제와 달리 아래 소스는 스탠다드 샘플을 그대로 사용했습니다. 문제가 될 경우 교체하도록 하겠습니다.

10.PNG


2.3 ABAP에서 호출하는 방법

1.PNG


3. AMDP 기반 CDS View
AMDP로 가공한 데이터를  ABAP CDS View에서 직접 호출해 사용할 수도 있다.


3.1 AMDP 만들기
먼저 AMDP를 만든다.

다른 예제와 달리 아래 소스는 스탠다드 샘플을 그대로 사용했습니다. 문제가 될 경우 교체하도록 하겠습니다.

2.PNG


3.2 Table Function DD 오브젝트 만들기

3.PNG


3.3 View DD 오브젝트 만들기

14.PNG