RAP 동작 정의(BDEF) 읽는 법: managed, draft, validation, determination
3줄 요약
RAP은 CDS 데이터 모델, 동작 정의(BDEF), 동작 구현, 서비스 노출로 역할을 나누어요.
BDEF는 구현 방식·엔터티 특성·필드와 작업 선언 순서로 읽으면 이해하기 쉬워요.
managed는 프레임워크가 표준 처리를 제공하고, unmanaged는 개발자가 직접 구현할 범위가 넓어요.
어떤 상황에서 쓰나요
RAP 동작 정의 파일을 처음 열면 managed·draft·validation 같은 키워드가 낯설어요. 이번 글에서는 BDEF를 헤더, 엔터티 특성, 본문으로 나누어 읽는 방법을 알아봐요. 각 선언이 데이터 생성·수정·검증 과정에서 어떤 역할을 하는지 살펴볼게요.
RAP을 읽을 때는 데이터의 모양, 허용할 동작, 동작의 구현, 서비스 공개를 나누어 보세요. 아래 그림의 층들은 역할의 구분이며, 이번 글은 그중 동작 정의를 중심으로 설명합니다.
핵심 내용
RAP BO의 층 — 데이터 모델링(DB 테이블이나 CDS 테이블 엔터티, 루트 엔터티와 자식 엔터티를 구성 관계로 엮은 CDS 엔터티), 동작 정의(BDEF), 동작 구현(ABAP 동작 풀, ABP), 서비스 노출. 치트시트는 RAP BO를 "특정 데이터와 특성, 기능(동작)을 가진 실세계 비즈니스 엔터티"로 설명해요.
BDEF의 큰 구조 (치트시트의 예시)
managed implementation in class ZBP_R_DEMO_ABAP unique;
strict ( 2 );
with draft;
define behavior for ZR_DEMO_ABAP alias demo_abap
persistent table zdemoabap
draft table zdemoabap_d
etag master LocalLastChangedAt
lock master
total etag LastChangedAt
authorization master ( none )
late numbering
{
field ( readonly ) ID, CalcResult;
field ( mandatory ) Number1, Number2, Operator;
create; update; delete;
validation validate on save { create; field Number1, Number2, Operator; }
determination det_modify on modify { field Number1, Number2, Operator; }
internal action calculation;
draft action Edit; draft action Activate optimized; draft action Discard;
mapping for zdemoabap corresponding { ... }
}헤더
managed/unmanaged: 트랜잭션 버퍼와 동작을 누가 제공하는지의 차이예요. managed는 처음부터 새로 개발하는 상황(greenfield)에 알맞고, 표준 작업(생성, 읽기, 수정, 삭제)이 별도 개발 없이 동작해요. BDEF에create,update,delete만 쓰면 되고, 읽기는 문법 없이도 돼요. unmanaged는 기존 로직을 RAP에 올릴 때(brownfield) 쓰고, 개발자가 트랜잭션 버퍼와 모든 작업을 구현해야 해요.strict ( 2 ): 추가 문법 검사를 켜요. 치트시트는 가장 최신 버전을 쓰길 권하고, 당시 최신이 2라고 해요.with draft: 임시 저장 후 이어서 편집하는 draft를 켜요. draft 데이터의 DB 기록은 트랜잭션 엔진이 맡아요.with collaborative draft는 여러 사용자의 동시 작업도 허용해요.ABP 보조 클래스로 구현을 나눠 쓸 수 있어요.
엔터티 특성
persistent table: 데이터를 저장할 DDIC 테이블이나 CDS 테이블 엔터티(managed만 가능).동시성 제어: 낙관적(
etag master필드로 의도치 않은 덮어쓰기 방지)과 비관적(lock master, 독점 잠금).채번(numbering): 기본 키 값을 언제(RAP 상호작용 단계에서 일찍 vs 저장 순서에서 늦게), 누가(RAP 프레임워크 또는 개발자) 부여할지 정해요. managed 내부 채번은 16바이트 UUID 키 필드에 프레임워크가 유일 값을 넣어요.
권한 제어(
authorization master/dependent,global/instance): 누가 생성, 수정, 삭제하거나 어떤 인스턴스에 접근하는지 제한해요.
본문
필드 특성:
readonly,mandatory등. 정적 특성이고features : instance만 동적이에요.표준 작업(
create,update,delete): 쓰지 않으면 그 작업은 할 수 없어요. managed는 구현이 필요 없고 unmanaged는 핸들러 메서드를 직접 써요.액션(비표준 작업, 데이터를 바꿈)과 함수(정보를 돌려줌, 잠그거나 바꾸지 않음): 핸들러 메서드에서 직접 구현해요.
연관(association) 작업: 연관을 지정하면 read-by-association이 자동으로 켜지고, create-by-association 등은 자식 엔터티의 동작 정의가 전제예요.
draft 작업(
Edit,Activate,Discard,Resume,Prepare): 구현이 암묵적으로 제공돼요.검증(validation): 저장 순서에서 인스턴스 데이터의 일관성을 확인하고, 틀리면 저장을 거부하고 메시지를 돌려줘요.
on save.결정(determination): 트리거 조건에 따라 인스턴스 값을 계산하거나 바꿔요.
on modify와on save.determine action: 결정과 검증을 요청 시 실행해요.
RAP 비즈니스 이벤트, 부수 효과(side effects, UI가 영향받는 속성을 다시 읽게 함), 타입 매핑(
mapping for ... corresponding: DB 필드 이름과 CDS 요소 이름이 다를 때 필수).
주의할 점
치트시트는 선택된 문법만 보여 주고 전부를 다루지 않으며, 인터페이스/프로젝션/추상 동작 정의와 확장은 다루지 않는다고 스스로 밝혀요. 전체는 ABAP 키워드 문서와 RAP 개발 가이드를 보세요.
strict 모드 버전,
with collaborative draft같은 문법은 RAP가 새로 나온 릴리스에 따라 지원 여부가 달라요. 내 시스템에서 확인하세요.이 글은 읽는 법 요약이에요. 저는 실제 BDEF를 활성화하거나 서비스를 만들어 실행해 보지 않았어요.
치트시트는 계속 갱신되는 문서예요. 이 편의 첫 공개는 2026년 1월이고, 제가 읽은 판은 2026년 10월 기준이에요.
원문 주소: https://github.com/SAP-samples/abap-cheat-sheets/blob/main/36_RAP_Behavior_Definition_Language.md
출처와 이용 안내
원문: ABAP Cheat Sheets - RAP Behavior Definition Language · 작성자 SAP SE and contributors SAP-samples · 작성일 2026-01-15 · 기준 릴리스에 따라 다름 원문은 최신 ABAP 기준, strict 모드 2 · 확인일 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
아직 댓글이 없어요.
로그인하고 댓글 쓰기