직접 해보기
1. BDEF 선언
먼저 Behavior Definition에서 validation 키워드로 메서드와 트리거를 선언합니다.
define behavior for ZRAP_TRAVEL alias Travel
...
{
validation validateDates on save { create; update; }
validation validateCustomer on save { create; update; }
}
2. Validation 메서드 구현
선언한 메서드를 ABAP 클래스에 구현합니다. 오류가 있는 인스턴스는 failed에, 사용자에게 보여줄 메시지는 reported에 담습니다.
METHOD validateDates.
READ ENTITIES OF ZRAP_TRAVEL IN LOCAL MODE
ENTITY Travel
FIELDS ( BeginDate EndDate )
WITH CORRESPONDING #( keys )
RESULT DATA(lt_travel).
LOOP AT lt_travel INTO DATA(ls_travel).
IF ls_travel-BeginDate > ls_travel-EndDate.
APPEND VALUE #( %tky = ls_travel-%tky )
TO failed-travel.
APPEND VALUE #(
%tky = ls_travel-%tky
%msg = NEW zcm_rap_travel(
severity = if_abap_behv_message=>severity-error
textid = zcm_rap_travel=>date_invalid )
%element-BeginDate = if_abap_behv=>mk-on
%element-EndDate = if_abap_behv=>mk-on )
TO reported-travel.
ENDIF.
ENDLOOP.
ENDMETHOD.
3. FAILED vs REPORTED
FAILED는 처리에 실패한 엔티티 키를 RAP 프레임워크에 알립니다. REPORTED는 실제 오류 메시지 객체를 담아 사용자 화면에 표시합니다. 둘 중 하나라도 빠지면 오류가 사일런트하게 넘어가거나 메시지 없이 저장이 막힙니다.
핵심 한 줄
RAP Validation = BDEF 선언 + 메서드에서 FAILED/REPORTED 채우기 — 둘 다 빠뜨리면 큰일납니다.
댓글 0
아직 댓글이 없습니다.