RAP 동작 정의(BDEF) 읽는 법: managed, draft, validation, determination
3줄 요약
RAP BO(비즈니스 객체)는 CDS 엔터티로 데이터를 모델링하고, 동작 정의(BDEF)로 트랜잭션 동작을 선언하고, 구현 클래스(ABP)로 동작을 구현하고, 서비스로 노출하는 구조예요.
BDEF 는 헤더(managed/unmanaged, strict, draft), 엔터티 특성(테이블, ETag, 락, 권한, 채번), 본문(필드 특성, 표준 작업, 액션, 검증, 결정)으로 읽어요.
managed 는 새로 만들 때, unmanaged 는 기존 로직을 RAP 에 얹을 때 쓰는 구현 유형이에요.
어떤 상황에서 쓰나요
S/4HANA 확장이나 Fiori 앱 개발에서 managed implementation in class ... unique; 로 시작하는 BDEF 파일을 처음 열면 키워드가 쏟아져서 막막해요. SAP 공식 ABAP 치트시트의 *RAP Behavior Definition Language* 편은 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
아직 댓글이 없어요.
로그인하고 댓글 쓰기