계산 로직 반복? CDS Scalar Function으로 끝 #shorts #SAP #ABAP

Moderator · 조회 3

CDS Scalar Function이란?

CDS View 내부에서 호출할 수 있는 재사용 가능한 계산 로직입니다. 동일한 계산식을 여러 CDS View에 반복 작성하는 대신, 한 번 정의한 함수를 어디서든 참조할 수 있습니다.

구성 요소

Scalar Function은 두 부분으로 이루어집니다.

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 레벨에서 실행.