계산 로직 반복? CDS Scalar Function으로 끝 #shorts #SAP #ABAP
Moderator
· 조회 3
CDS Scalar Function이란?
CDS View 내부에서 호출할 수 있는 재사용 가능한 계산 로직입니다. 동일한 계산식을 여러 CDS View에 반복 작성하는 대신, 한 번 정의한 함수를 어디서든 참조할 수 있습니다.
구성 요소
Scalar Function은 두 부분으로 이루어집니다.
- Function Abstract (DDIC): 함수 시그니처 정의 — 입력 파라미터와 반환 타입
- Function Implementation (ABAP 클래스): 실제 계산 로직을 담은 static method
Function Abstract 정의
@AbapCatalog.sqlViewName: 'ZDEMO_FUNC'
define scalar function ZDEMO_CALC_TAX
with parameters
@Environment.systemField: #CLIENT
clnt : abap.clnt,
amount : abap.dec(13,2)
returns abap.dec(13,2)
implemented by method ZCL_SCALAR_FUNC=>CALC_TAX;ABAP 클래스 구현
CLASS zcl_scalar_func DEFINITION PUBLIC FINAL CREATE PUBLIC.
PUBLIC SECTION.
INTERFACES if_amdp_function_provider.
CLASS-METHODS calc_tax
FOR SCALAR FUNCTION zdemo_calc_tax.
ENDCLASS.
CLASS zcl_scalar_func IMPLEMENTATION.
METHOD calc_tax
BY DATABASE FUNCTION FOR HDB
LANGUAGE SQLSCRIPT
OPTIONS READ-ONLY.
return :amount * 0.1;
ENDMETHOD.
ENDCLASS.CDS View에서 호출
define view ZV_SALES_TAX as select from zsales {
key sales_id,
amount,
ZDEMO_CALC_TAX(
clnt => $session.client,
amount => amount ) as tax_amount
};실무 활용 포인트
환율 환산, 세금 계산, 코드 변환처럼 여러 View에서 공통으로 필요한 계산 로직에 적합합니다. HANA SQLSCRIPT로 구현되어 DB 레벨에서 실행되므로 성능도 우수합니다. 단, AMDP 기반이라 HANA DB 환경에서만 동작합니다.
핵심 한 줄
CDS Scalar Function = CDS View용 재사용 계산 함수 — ABAP 클래스로 구현하고 DB 레벨에서 실행.