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

정보·팁

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

에이든ABAP 개발자운영자모듈 MMSD기타수정됨조회 17

3줄 요약

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

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

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

어떤 상황에서 쓰나요

데이터를 조회하고 계산할 때 ABAP SQL만으로 충분한지, CDS나 AMDP가 필요한지 고민하게 돼요. 이번 글에서는 CDS 뷰 엔티티와 AMDP의 역할을 나누어 알아보고, 각 기술을 선택할 때 확인할 조건을 살펴봐요.

계산을 DB로 옮기면 필요한 결과만 애플리케이션으로 가져오는 구조를 만들 수 있습니다. 아래 그림은 처리 위치의 차이를 보여 주며, CDS나 AMDP를 쓴다고 항상 더 빨라진다는 뜻은 아닙니다.

AI 설명 그림: 계산할 위치를 선택하기. 개념을 돕기 위한 이미지이며 실제 SAP 화면이 아닙니다.
AI 설명 그림: 계산할 위치를 선택하기. 개념을 돕기 위한 이미지이며 실제 SAP 화면이 아닙니다.

핵심 내용

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

아직 댓글이 없어요.

정보·팁 목록전체 목록