데이터 일관성 안 지키면 큰일 #shorts #SAP #ABAP

Moderator

데이터 일관성 없이 저장하면?

RAP에서 Validation을 구현하지 않으면 잘못된 금액, 빈 필드, 논리 오류가 그대로 DB에 저장됩니다. 저장 전 체크 없이는 데이터 정합성을 보장할 방법이 없습니다.

Behavior Definition 선언

Behavior Definition에서 validate 키워드로 Validation을 등록합니다.

validation validateAmount
  on save { create; update; };

구현 클래스 작성

Behavior Implementation 클래스에서 실제 체크 로직을 작성합니다. FAILED와 REPORTED 구조로 오류 위치와 메시지를 함께 반환합니다.

METHOD validateAmount.
  READ ENTITIES OF ZI_Order IN LOCAL MODE
    ENTITY Order FIELDS ( Amount )
    WITH CORRESPONDING #( keys )
    RESULT DATA(orders).

  LOOP AT orders ASSIGNING FIELD-SYMBOL(<o>).
    IF <o>-Amount <= 0.
      APPEND VALUE #( %tky = <o>-%tky )
        TO failed-Order.
      APPEND VALUE #(
        %tky = <o>-%tky
        %msg = new_message_with_text(
          severity = if_abap_behv_message=>severity-error
          text = '금액은 0보다 커야 합니다' )
      ) TO reported-Order.
    ENDIF.
  ENDLOOP.
ENDMETHOD.

on save vs on trigger

on save는 저장 시점에만 실행되어 성능을 아끼고, on trigger는 필드 변경마다 즉시 검사합니다. DB 조회가 필요한 복잡한 로직은 반드시 on save로 처리합니다.

핵심 한 줄

Validation 없이 저장 허용 = 데이터 일관성을 개발자가 매번 직접 보장하는 것 — RAP Validation에 위임하라.