본문 바로가기

CDS View(Core Data Service)/Core Data Service 기초

CDS View 내장 함수 & 표현식 1. Numeric Built-In Function

ABAP CDS 프레임워크는 데이터 처리 작업을 데이터베이스 레이어에서 수행하기 위해 여러 내장 SQL 함수(built-in SQL function)와 표현식(expression)을 사용하는 것을 권장합니다. 다음과 같은 작업을 수행할 수 있습니다:

■ ABS, CEIL, DIV(Integer), DIVISION(Dec), FLOOR, MOD, ROUND과 같은 내장 함수 또는 +, -, *, /와 같은 산술식을 사용하여 복잡한 계산 수행.
■ CONCAT, INSTR, LEFT/RIGHT, LENGTH, LPAD/RPAD, LTRIM/RTRIM, REPLACE와 같은 내장 함수 또는 표현식에서 연결 연산자 &&을 사용하여 문자열 처리.
■ 특수한 CURRENCY_CONVERSION 및 UNIT_CONVERSION 함수를 사용하여 통화나 수량 값을 변환.
■ 특수한 날짜 함수인 DAYS_BETWEEN, ADD_DAYS, ADD_MONTH, CURRENT_TMSTP, DATE_IS_VALID, TMSTP_IS_VALID, SECONDS_BTW, TMSTPS, ADD_SECONDS를 사용하여 날짜, 시간, 타임스탬프의 유효성 검증이나 계산 수행.
■ NULL 값을 상수로 대체하기 위해 COALESCE와 같은 일반적인 SQL 표현식 사용.


Numeric Built-In Function


Built-In Function Possible Outcomes
ABS(expr)
● 반올림 함수로 사용됨
● ABS 함수는 표현식의 절댓값을 반환하며, 표현식 값이 0으로 반올림됩니다.
● expr에는 INT1, INT2, INT4, INT8, DEC, CURR, QUAN 및 FLTP와 같은 지원되는 데이터 유형이 있습니다.
ABS(2.5) = 2 or
ABS(-2.5) =
ROUND(expr, POSITION)
● ROUND 함수는 반올림 기능으로 사용됩니다.
● 함수에서 지정된 POSITION에 따라 expr 값을 소수점 이하의 지정된 소수 자리수까지 반올림합니다.
● expr에는 INT1, INT2, INT4, INT8, DEC, CURR 및 QUAN과 같은 지원되는 데이터 유형이 있으며, POSITION 값은 데이터 소스의 필드나 INT1, INT2 및 INT4 유형의 입력 매개변수일 수 있습니다.
ROUND(555.555,2) = 555.56
DIV(expr1, expr2)
● DIV 함수는 계산 기능으로 사용됩니다.
● DIV 함수는 expr1을 expr2로 나눈 결과의 정수 부분을 반환합니다.
● expr에는 소수 자리수가 없는 INT1, INT2, INT4, INT8, DEC, CURR 및 QUAN과 같은 지원되는 데이터 유형이 있습니다.

DIV(11/5) = 2
MOD(expr1, expr2)
● MOD 함수는 계산 기능으로 사용됩니다.
● MOD 함수는 expr1을 expr2로 나눈 결과의 나머지 부분을 반환합니다.
● expr에는 INT1, INT2, INT4 및 INT8과 같은 지원되는 데이터 유형이 있습니다.
MOD(11/5) = 1
DIVISION(expr1,expr2, POSITION)
● DIVISION 함수는 계산 기능으로 사용됩니다.
● DIVISION 함수는 expr1을 expr2로 나눈 결과를 지정된 소수 자리수로 반올림하여 반환합니다.
● expr에는 INT1, INT2, INT4, INT8, DEC, CURR 및 QUAN과 같은 지원되는 데이터 유형이 있으며, POSITION 값은 0 이상 6 이하이며, expr2의 길이와 expr2의 소수 자리수를 합한 값보다 작거나 같아야 합니다.
DIVISION (444.44444444/555.555,3) = 0.8

아래 표는 CDS 뷰 정의에서 사용하는 Numeric Function인 DIV와 DIVISION의 차이를 나타낸 표입니다.

Feature Div(expr1,, expr2) Division(expr1, expr2, Position)
Input 오직 정수값만이 허용된다 FLOAT 유형의 숫자는 제외됩니다
Result 정수값으로 나타납니다 결과의 정밀도를 지정할 수 있습니다

아래 코드는 단일 데이터 소스(SFLIGHT)를 사용하는 CDS(View) 정의의 예시를 보여줍니다. 이 정의는 PRICE, SEATSOCC 및 PAYMENTSUM 필드에서 숫자 함수를 사용하여 여러 숫자 및 반올림 연산을 수행합니다. 이러한 연산을 기반으로 한 CDS(View)의 결과는 그림 1에 표시된 대로 나타납니다. 이러한 함수들은 데이터 처리 작업을 데이터베이스 계층으로 이동시켜 새로운 SAP HANA 아키텍처 및 관련 기능을 최대한 활용하기 위해 Code-to-Data Paradigm을 구현하는 데 도움이 됩니다.

@AbapCatalog.sqlViewName: 'ZCDS_EX_SQL07'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'Demo CDS view using numeric functions'
define view ZCDS_Example_07
 as select from sflight
{
 sflight.mandt,
 sflight.carrid,
 sflight.connid,
 sflight.fldate,
--CEIL returns the integer value greater than the price
 CEIL(sflight.price) as fnceil,
--FLOOR returns the largest integer value that is not greater than the price
 FLOOR(sflight.price) as fnfloor,
--ABS returns absolute value for seatsocc
 ABS(sflight.seatsocc) as fnabs,
--DIV returns the integer part of the division of seatsmax by seatsocc
 DIV(seatsmax, seatsocc) as fndiv,
--MOD returns the remainder part of the division of seatsmax by seatsocc
 MOD(seatsmax, seatsocc) as fnmod,
--Round returns the rounded value of paymentsum by position specified.
 ROUND(sflight.paymentsum,1) as fnround,
 --Division returns, division of paymentsum by price, and rounded to 2 decimals 
places.
 DIVISION(sflight.paymentsum,sflight.price,2) as fndivision
}

그림 1

 

반응형