RAP Validation 빠뜨리면 큰일 #shorts #SAP #ABAP
Moderator
RAP Validation이 필요한 이유
SAP RAP(RESTful ABAP Programming)에서 Validation은 데이터 일관성을 보장하는 핵심 메커니즘입니다. 검증 로직 없이 저장하면 잘못된 데이터가 DB까지 그대로 들어가버립니다. 특히 날짜 범위, 필수값, 참조 무결성은 반드시 Validation으로 잡아야 합니다.
BDEF에 Validation 선언
먼저 Behavior Definition에서 validation 키워드로 메서드와 트리거를 선언합니다.
define behavior for ZRAP_TRAVEL alias Travel
...
{
validation validateDates on save { create; update; }
validation validateCustomer on save { create; update; }
}
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.
FAILED vs REPORTED 차이
FAILED는 처리에 실패한 엔티티 키를 RAP 프레임워크에 알립니다. REPORTED는 실제 오류 메시지 객체를 담아 사용자 화면에 표시합니다. 둘 중 하나라도 빠지면 오류가 사일런트하게 넘어가거나 메시지 없이 저장이 막힙니다.
핵심 한 줄
RAP Validation = BDEF 선언 + 메서드에서 FAILED/REPORTED 채우기 — 둘 다 빠뜨리면 큰일납니다.