CRUD 0줄로 끝 — RAP Managed Scenario #shorts #SAP #ABAP

Moderator

이 글이 답하는 질문

  • RAP Managed와 Unmanaged의 실질 차이는?
  • CRUD 코드를 직접 안 써도 되는 이유는?
  • Behavior Definition에 뭘 써야 CRUD가 완성되나?

직접 해보기

1. Behavior Definition 선언

managed implementation in class zbp_i_travel unique;
strict ( 2 );

define behavior for ZI_TRAVEL alias Travel
  persistent table ztravels
  lock master
  authorization master ( global )
  etag master LocalLastChangedAt
{
  field ( readonly ) TravelID;
  field ( mandatory ) AgencyID, CustomerID;

  create;
  update;
  delete;
}

위 BDL(Behavior Definition Language) 선언 하나로 CRUD 핸들러가 프레임워크에서 자동 생성됩니다.

2. Unmanaged와 비교

-- Unmanaged: 직접 구현 필수
method create_travel.
  INSERT ztravels FROM VALUE #( ... ).
endmethod.

-- Managed: 선언만 하면 끝
create;  " 이 한 줄이 전부

Unmanaged는 CREATE/UPDATE/DELETE 메서드를 각각 직접 코딩해야 합니다. Managed는 managed 키워드 선언만으로 프레임워크가 해당 메서드를 모두 처리합니다.

3. 자동으로 따라오는 것들

  • 트랜잭션 관리 (SAVE / ROLLBACK)
  • Lock 처리 — 동시 편집 충돌 방지
  • ETag 기반 낙관적 동시성 제어
  • OData v4 서비스 자동 연결

삽질 노트

  • persistent table 매핑이 잘못되면 CREATE 후 DB에 안 쌓임 — 뷰 이름과 실테이블 이름 반드시 확인
  • lock master 빠트리면 동시 편집 시 데이터 덮어쓰기 발생
  • etag master 없으면 Fiori Elements 수정 화면에서 낙관적 잠금 오류 뜸

핵심 한 줄

managed 키워드 하나 → CRUD 핸들러 자동화, 직접 구현 코드 0줄.

더 파볼 주제

  • RAP Managed — Draft Handling 적용
  • Action / Function 추가로 비즈니스 로직 확장
  • Unmanaged Scenario 전환 시점 판단