본문 바로가기

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

CDS View 내장 함수 & 표현식 2. String Function

ABAP에서 내장된 문자열 함수와 마찬가지로, CDS(View)도 문자 또는 숫자 데이터 유형의 필드를 사용하여 문자열 연산을 수행할 수 있습니다. 이러한 함수의 가용성은 사용 중인 SAP NetWeaver 버전에 따라 달라집니다. concat_with_space, length, left, right 등과 같은 일부 작업은 SAP NetWeaver 7.50부터 사용할 수 있으며, 이러한 기능은 기존 함수의 부족한 부분을 보완하고 특정 비즈니스 시나리오를 처리하기 위해 도입되었습니다.

아래 표는 CDS 프레임워크 내에서 문자열 연산을 수행하기 위해 사용할 수 있는 여러 내장 문자열 함수를 보여줍니다.

Built-In String Functions Possible Outcome
LENGTH(expr)
■ 표현식(expression)의 문자 수를 반환합니다. 표현식에 후행 공백이 포함되어 있다면, 이러한 공백은 무시됩니다.
■ expr에 대해 지원되는 데이터 유형은 CHAR, CLNT, LANG, NUMC, CUKY, UNIT, DATS, TIMS 및 SSTRING입니다.
■ 결과값의 데이터 유형은 INT4입니다.
LENGTH(‘String’) = 6
INSTR(expr, sub )
■ 함수에서 지정된 부분 문자열(pattern)의 시작 위치를 반환합니다.
■ expr에 대해 지원되는 데이터 유형은 CHAR, CLNT, LANG, NUMC, CUKY, UNIT, DATS, TIMS 및 SSTRING입니다.
■ 결과값의 데이터 유형은 INT4입니다.
INSTR(‘String’, ‘in’) = 4
CONCAT(expr1, expr2)
■ expr1과 expr2를 공백 없이 연결하는 데 사용됩니다.
■ expr에 대해 지원되는 데이터 유형은 CHAR, CLNT, LANG, NUMC, CUKY, UNIT, DATS, TIMS 및 SSTRING입니다.
■ 만약 표현식의 유형이 SSTRING이라면 결과값의 데이터 유형은 SSTRING이고, 그렇지 않으면 결과의 길이와 동일한 길이를 갖는 CHAR 데이터 유형입니다.
CONCAT(‘Concatenate’,’string’ ) = Concatenatestring
CONCAT_WITH_SPACE(expr1,expr2,spaces)
■ 함수에서 지정된 개수의 공백을 사용하여 expr1과 expr2를 연결하는 데 사용됩니다.
■ 이 경우, 공백은 양의 숫자로 범위를 가질(> 0 및 <=1331) 수 있습니다.
■ expr에 대해 지원되는 데이터 유형은 CHAR, CLNT, LANG, NUMC, CUKY, UNIT, DATS, TIMS 및 SSTRING입니다.
■ 만약 표현식의 유형이 SSTRING이라면 결과값의 데이터 유형은 SSTRING이고, 그렇지 않으면 결과의 길이와 동일한 길이를 갖는 CHAR 데이터 유형입니다.
CONCAT_WITH_SPACE(‘Concatenate’, ’string’,1) = Concatenate string
LEFT(expr,len)
■ 함수의 길이를 기반으로 표현식의 왼쪽에서 지정된 개수의 문자를 반환합니다.
■ 이 경우, len은 양의 숫자 리터럴(> 0 및 <=1333)일 수 있습니다.
■ expr에 대해 지원되는 데이터 유형은 CHAR, CLNT, LANG, NUMC, CUKY, UNIT, DATS, TIMS 및 SSTRING입니다.
■ 만약 표현식의 유형이 SSTRING이라면 결과값의 데이터 유형은 SSTRING이고, 그렇지 않으면 결과의 길이와 동일한 길이를 갖는 CHAR 데이터 유형입니다.
LEFT(‘STRING’,3) = STR
RIGHT(expr,len)
■ 함수의 길이를 기반으로 표현식의 오른쪽에서 지정된 개수의 문자를 반환합니다.
■ 이 경우, len은 양의 숫자 리터럴(> 0 및 <=1333)일 수 있습니다.
■ expr에 대해 지원되는 데이터 유형은 CHAR, CLNT, LANG, NUMC, CUKY, UNIT, DATS, TIMS 및 SSTRING입니다.
■ 만약 표현식의 유형이 SSTRING이라면 결과값의 데이터 유형은 SSTRING이고, 그렇지 않으면 결과의 길이와 동일한 길이를 갖는 CHAR 데이터 유형입니다.
RIGHT(‘STRING’,3) = ING
■ LPAD(expr,len,literal)
문자열 리터럴을 함수에서 지정된 길이에 따라 표현식의 왼쪽에 패딩합니다.
■ 이 경우, len은 양의 숫자 리터럴(> 0 및 <=1333)일 수 있으며, literal은 임의의 문자열 리터럴일 수 있습니다.
■ expr에 대해 지원되는 데이터 유형은 CHAR, CLNT, LANG, NUMC, CUKY, UNIT, DATS, TIMS 및 SSTRING입니다.
■ 만약 표현식의 유형이 SSTRING이라면 결과값의 데이터 유형은 SSTRING이고, 그렇지 않으면 결과의 길이와 동일한 길이를 갖는 CHAR 데이터 유형입니다.
LPAD(‘STRING’, 10, ‘L’) = LLLLSTRING
RPAD(expr,len,literal)
■ 문자열 리터럴을 함수에서 지정된 길이에 따라 표현식의 오른쪽에 패딩합니다.
■ 이 경우, len은 양의 숫자 리터럴(> 0 및 <=1333)일 수 있으며, literal은 임의의 문자열 리터럴일 수 있습니다.
■ expr에 대해 지원되는 데이터 유형은 CHAR, CLNT, LANG, NUMC, CUKY, UNIT, DATS, TIMS 및 SSTRING입니다.
■ 만약 표현식의 유형이 SSTRING이라면 결과값의 데이터 유형은 SSTRING이고, 그렇지 않으면 결과의 길이와 동일한 길이를 갖는 CHAR 데이터 유형입니다.
RPAD(‘STRING’, 10, ‘R’) = STRINGRRRR
LTRIM(expr,char)
■ 함수에서 지정된 문자를 표현식의 왼쪽에서 제거합니다.
이 경우, char는 길이가 1인 임의의 문자입니다.
 expr에 대해 지원되는 데이터 유형은 CHAR, CLNT, LANG, NUMC, CUKY, UNIT, DATS, TIMS 및 SSTRING입니다.
 만약 표현식의 유형이 SSTRING이라면 결과값의 데이터 유형은 SSTRING이고, 그렇지 않으면 결과의 길이와 동일한 길이를 갖는 CHAR 데이터 유형입니다.
LTRIM(‘STRING’,‘S’) = TRING
RTRIM(expr,char)
■ 함수에서 지정된 문자를 표현식의 오른쪽에서 제거합니다.
■ 이 경우, char는 길이가 1인 임의의 문자입니다.
■ expr에 대해 지원되는 데이터 유형은 CHAR, CLNT, LANG, NUMC, CUKY, UNIT, DATS, TIMS 및 SSTRING입니다.
■ 만약 표현식의 유형이 SSTRING이라면 결과값의 데이터 유형은 SSTRING이고, 그렇지 않으면 결과의 길이와 동일한 길이를 갖는 CHAR 데이터 유형입니다.
RTRIM(‘STRING’,’G’) = STRIN
LOWER(expr)
■ expr를 소문자로 변환합니다.
■ expr에 대해 지원되는 데이터 유형은 CHAR, CLNT, LANG, CUKY, UNIT 및 SSTRING입니다.
■ 결과값의 데이터 유형과 길이는 표현식과 동일합니다.
LOWER(‘STRING’) = string
UPPER(expr)
■ expr를 대문자로 변환합니다.
■ expr에 대해 지원되는 데이터 유형은 CHAR, CLNT, LANG, CUKY, UNIT 및 SSTRING입니다.
■ 결과값의 데이터 유형과 길이는 표현식과 동일합니다
UPPER(‘string’) = STRING
REPLACE(expr1, expr2, expr3)
■ expr1에서 expr2를 expr3로 대체하는 데 사용됩니다.
■ expr에 대해 지원되는 데이터 유형은 CHAR, CLNT, LANG, NUMC, CUKY, UNIT, DATS, TIMS 및 SSTRING입니다.
■ 결과값의 데이터 유형은 SSTRING입니다. expr1과 expr3가 SSTRING이면 SSTRING이고, 그렇지 않으면 결과의 최대 가능한 길이를 갖는 CHAR 데이터 유형입니다.
REPLACE(‘STRING’, ‘ING’, ‘XXX’) = STRXXX
SUBSTRING(expr,pos,len)
■ 함수에서 지정된 위치부터 expr의 부분 문자열을 반환합니다. 반환되는 부분 문자열의 길이도 여기에서 지정됩니다.
■ 이 경우, pos와 len은 0이 아닌 양의 숫자 리터럴입니다.
expr에 대해 지원되는 데이터 유형은 CHAR, CLNT, LANG, NUMC, CUKY, UNIT, DATS, TIMS 및 SSTRING입니다.
■ 결과값의 데이터 유형은 SSTRING입니다. 만약 expr이 SSTRING이라면, 함수의 길이가 지정된 CHAR 또는 NUMC 데이터 유형입니다.
SUBSTRING(‘STRING’, 2, 4) = TRIN

아래 코드는 데이터 소스 SCARR을 사용하는 CDS 뷰 정의의 예입니다. 이 CDS 뷰는 데이터 소스 필드 SCARR 테이블의 URL필드에 대해 여러 문자열 함수를 사용하여 문자열 연산을 수행합니다. 결과는 그림 1 에 있습니다.

@AbapCatalog.sqlViewName: 'ZCDS_EX_SQL_08'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'Demo CDS view using string functions'
define view ZCDS_Example_08
 as select from scarr
{
 carrname,
 --LENGTH returns the number of characters in a string
 LENGTH(url) as fnlength,
 --INSTR returns the start position of the substring pattern
 INSTR(url,'air') as fninstr,
 --Concatenates two expression without space
 CONCAT('Website', url) as fnconcat,
 --Concatenates two expressions with number of spaces specified
 CONCAT_WITH_SPACE( 'Website',url,1) as fnconcat_with_space,
 --LEFT returns the number of characters from the left side of the expression
 LEFT(url,3) as fnleft,
 --RIGHT returns the number of characters from the right side of the expression
 RIGHT(url,3) as fnright,
 --LPAD to pad literals to the left side of the expressions
 LPAD(url, 20, 'x') as fnlpad,
 --RPAD to pad literals to the right side of the expressions
 RPAD(url, 6, 'y') as fnrpad,
 --LRIM to remove character specified in the function from the left side of the 
expression
 LTRIM(url, 'A') as fnltrim,
 --RRIM to remove character specified in the function from the right side of 
the expression
 RTRIM(url, 'B') as fnrtrim,
 --Lower to translates the string to lowercase
 LOWER(url) as fnlower,
 --Upper to translates the string to uppercase
 UPPER(url) as fnupper,
 --REPLACE to replace the expression 2 with expression 3 from the expression 1
 REPLACE(url, 'http', 'https' ) as fnreplace,
 SUBSTRING(url, 2, 3 ) as fnsubstring
}

그림 1

 

반응형