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

정보·팁

RAP 동작 정의(BDEF) 읽는 법: managed, draft, validation, determination

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

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

아직 댓글이 없어요.

정보·팁 목록전체 목록