바로투입이력카드
SAP 게시판

정보·팁

CDS 뷰 엔티티와 AMDP: 언제 DB에서 계산하고 언제 ABAP SQL로 충분한가

에이든ABAP 개발자운영자모듈 MMSD기타조회 4

3줄 요약

  • CDS 뷰 엔티티는 DB(SAP HANA)에서 계산과 조인을 처리하는 데이터 모델이고, ABAP SQL SELECT 로 읽어요.

  • AMDP 는 ABAP 클래스 안에 SQLScript 로 DB 프로시저/함수를 쓰고 HANA 에서만 실행하는 방식이에요.

  • 치트시트는 ABAP SQL 로 같은 일을 할 수 있으면 AMDP 를 권하지 않아요. CDS 로 안 되는 경우의 선택지로 보는 게 맞아요.

어떤 상황에서 쓰나요

"CDS 뷰냐 Open SQL 이냐, 성능은?", "AMDP 는 언제 쓰나?"는 개발팀에서 자주 나오는 질문이에요. SAP 공식 ABAP 치트시트의 *CDS View Entities* 편과 *AMDP* 편은 각각 어떤 기능이 있는지 짧게 알려 줘요. 이 글은 두 편을 함께 정리해서 선택 기준을 세우는 데 도움을 줘요.

핵심 내용

CDS 뷰 엔티티

  • CDS(Core Data Services)는 AS ABAP 의 표준 데이터베이스 위에서 의미가 풍부한 데이터 모델을 정의하고 쓰는 기반이에요.

  • 치트시트의 CDS 편은 짧아요. 예제 CDS 아티팩트의 목록을 안내하고, 거기서 볼 수 있는 기능은 다음과 같아요.

- 입력 파라미터, 데이터 소스의 필드 지정, 타입 있는/없는 리터럴, 세션 변수 - 식: 캐스트, 재사용, 산술, CASE, 논리식 - 내장 함수: 숫자, 문자열, coalesce, 날짜·시간 - 집계 표현식, 조인(내부, 왼쪽/오른쪽 외부, 크로스), 연관(association)

  • 예제 뷰는 문법을 보여 주는 용도이고 CDS 뷰 설계의 모범이 아니라고 스스로 밝혀요.

  • 읽는 방법은 ABAP SQL SELECT 로 CDS 뷰 엔티티에서 읽는 것이에요(ABAP SQL 연재 참고). 코드 푸시다운(복잡한 계산과 조인을 DB 로 내려보내기)은 성능 체크리스트 글에도 나와요.

AMDP (ABAP Managed Database Procedures)

  • DB 프로시저(저장 프로시저)와 DB 함수를 클래스 기반으로 관리하고 부르는 프레임워크예요. 구현은 DB 전용 언어로 쓰는데, 현재는 SAP HANA 의 SQLScript 만 지원해요.

  • AMDP 클래스는 IF_AMDP_MARKER_HDB 인터페이스를 구현해야 하고, 일반 메서드와 AMDP 메서드가 섞여도 돼요. 선언부만 봐서는 AMDP 메서드를 구분할 수 없어요(예외 있음).

  • 프레임워크가 프로시저/함수를 DB 에 복제하고, 메서드 호출은 DB 로 전달돼요. SQLScript 코드는 AS ABAP 가 아니라 HANA 에서만 실행돼요.

  • 프로시저 선언의 특징: 매개변수는 VALUE(...) 로 값 전달만 가능, 제네릭 타입 불가, 타입은 기본 데이터 타입이나 구조체 줄 타입의 테이블(컴포넌트는 기본 타입만), RETURNING 불가, 선택 매개변수는 입력만 가능.

  • 구현부: METHOD name BY DATABASE PROCEDURE FOR HDB LANGUAGE SQLSCRIPT OPTIONS READ-ONLY USING db_object. 이고 본문이 비면 안 돼요.

METHOD amdp_meth
  BY DATABASE PROCEDURE
  FOR HDB
  LANGUAGE SQLSCRIPT
  OPTIONS READ-ONLY
  USING db_object.
  " SQLScript 코드
ENDMETHOD.
  • AMDP 함수: 스칼라(단일 값)와 테이블 함수가 있고, CDS 테이블 함수를 AMDP 메서드로 구현할 수도 있어요.

  • 치트시트의 강한 문장: ABAP SQL 로 같은 작업을 할 수 있다면 AMDP 사용은 권장하지 않아요. 또 AMDP 클래스는 ADT 에서만 편집할 수 있어요.

클라우드용 ABAP 에서의 AMDP

  • 읽기만 허용돼서 OPTIONS READ-ONLY 가 필수이고, SQLScript 만 쓸 수 있고, 접근하는 데이터 소스는 클라우드용 ABAP 에 릴리스된 것이어야 해요.

  • ABAP SQL 은 현재 클라이언트를 암묵적으로 처리하지만 네이티브 SQL(AMDP)은 그렇지 않아요. 그래서 AMDP 는 클라이언트 안전(client-safe) 해야 하고, 한 클라이언트 데이터만 접근하거나 클라이언트 독립인 소스만 써야 해요. USING 목록의 객체도 모두 클라이언트 안전이어야 하고, 이를 위한 추가 구문과 주석이 있어요.

주의할 점

  • 치트시트는 CDS 와 AMDP 의 성능을 비교하지 않아요. "CDS 가 더 빠르다" 같은 말은 이 자료에서 확인한 내용이 아니에요. 선택은 데이터 크기와 측정으로 판단하세요.

  • AMDP 는 HANA 전제이고 SQLScript 지식이 필요해요. 기존 시스템이 HANA 가 아니면 쓸 수 없어요.

  • 클라이언트 안전 관련 구체적인 추가 구문(AMDP OPTIONS, 주석)은 이 글에서 다루지 않았어요. 치트시트의 해당 절을 보세요.

  • 치트시트는 계속 갱신되는 문서예요. AMDP 편의 첫 공개는 2022년 12월이고, 제가 읽은 판은 2026년 10월 기준이에요. 이 글은 읽고 정리한 것이고 예제를 직접 실행해 보지는 않았어요.

원문 주소: https://github.com/SAP-samples/abap-cheat-sheets/blob/main/12_AMDP.md

출처와 이용 안내
  • 원문: ABAP Cheat Sheets - ABAP Managed Database Procedures AMDP and CDS View Entities · 작성자 SAP SE and contributors SAP-samples · 작성일 2022-12-30 · 기준 릴리스에 따라 다름 SAP HANA 데이터베이스 전제 · 확인일 2026-10-25

  • 이 글은 위 원문을 읽고 한국어로 요약·재구성한 글이며 번역본이 아니에요. 원문의 저작권은 작성자와 SAP에 있어요.

  • 원문은 Apache-2.0 라이선스(https://www.apache.org/licenses/LICENSE-2.0)로 공개된 자료예요. 이 글은 내용을 한국어로 줄이고 순서를 바꾼 변경본이며, 원저작자가 이 글을 보증하지 않아요.

  • 설정과 화면은 릴리스마다 달라요. 적용하기 전에 원문과 SAP Help Portal, 관련 SAP Note에서 최신 내용을 확인해 주세요.

  • SAP와 SAP 제품명은 SAP SE의 상표예요. 바로투입은 SAP와 관련이 없어요.

댓글 0

아직 댓글이 없어요.

정보·팁 목록전체 목록