ABAP

RAP Validation 빠뜨리면 큰일 #shorts #SAP #ABAP

직접 해보기

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

아직 댓글이 없습니다.