데이터 일관성 안 지키면 큰일 #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에 위임하라.