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 채우기 — 둘 다 빠뜨리면 큰일납니다.