본문 바로가기

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

CDS View 내장 함수 & 표현식 5. Date and Time Function

CDS 뷰 정의에서는 여러 내장된 날짜, 시간 및 타임스탬프 함수를 사용할 수 있으며, 유효성 검사, 계산 및 타임스탬프 변환을 수행하는 데 사용할 수 있습니다.

내장 함수를 사용하여 CDS 뷰 정의에서 다음과 같은 작업을 수행할 수 있습니다.

■ 날짜, 시간 및 타임스탬프를 유효성 검사할 수 있습니다.
■ 일 또는 월을 날짜에 추가하여 날짜를 계산할 수 있습니다.
■ 두 날짜 간의 일 수를 계산할 수 있습니다.
■ 클라이언트 종속적인 시스템 시간대 또는 사용자 종속적인 시간대를 제공할 수 있습니다.
■ 타임스탬프를 날짜, 시간 등으로 변환할 수 있습니다.


Date Function


CDS 뷰에서는 미리 정의된 데이터 유형 DATS의 표현식과 함께 날짜 함수를 사용하여 작업을 수행할 수 있습니다. 변환 함수와 달리 날짜 함수에는 Optional인 Parameter가 없으며, Actual Parameter가 할당되어야 하는 Importing Parameter가 포함되어 있습니다. 이러한 실제 매개변수는 데이터 소스 필드, 리터럴, 매개변수, 경로 표현식, 미리 정의된 함수 또는 표현식일 수 있습니다. 실제 매개변수에 null 값이 포함되어 있는 경우, 날짜 유효성 검사 함수 DATS_IS_VALID를 제외한 모든 함수는 null 값을 반환합니다.

다음은 사전 정의된 날짜 함수이며, 단축키 (Ctrl) + (Space)를 사용하여 소스 코드 편집기의 데이터 정의의 프로젝션 목록에서 확인할 수 있습니다:

■ dats_add_days(date, days,on_error)
■ dats_add_months(date, months,on_error)
■ dats_days_between(date1, date2)
■ dats_is_valid(date)

● DATS_IS_VALID

DATS_IS_VALID 함수는 DATS 유형의 실제 매개변수가 형식 YYYYMMDD의 유효한 날짜를 포함하는지 평가하는 데 사용됩니다. 결과 매개변수는 유효한 날짜와 형식에 대해 1의 값을 생성하고, null 또는 기타 입력 값에 대해 0의 값을 생성합니다.

관련 구문은 다음과 같습니다.

DATS_IS_VALID(date)

이 함수의 매개변수는 다음과 같습니다:

날짜는 데이터 소스의 적합한 필드, 리터럴, 매개변수, 경로 표현식, 사전 정의된 함수 또는 표현식이 될 수 있습니다.
Resulting Parameter(결과 매개변수)는 INT4 유형입니다.

DATS_DAYS_BETWEEN

DATS_DAYS_BETWEEN 함수는 두 지정된 매개변수 date1과 date2 사이의 차이(일 수)를 계산하는 데 사용될 수 있습니다. 이러한 매개변수는 형식 YYYYMMDD의 유효한 날짜를 포함해야 하며, DATS 유형의 날짜로 사전에 정의되어야 합니다. 결과 매개변수는 date1이 date2보다 큰 경우 양수 값을 포함하고, 그렇지 않으면 결과는 음수입니다.

관련 구문은 다음과 같습니다.

DATS_DAYS_BETWEEN(date1,date2)

이 함수의 매개변수는 다음과 같습니다:

date1과 date2 매개변수는 데이터 소스의 적합한 필드, 리터럴, 매개변수, 경로 표현식, 사전 정의된 함수 또는 표현식이 될 수 있습니다. Resulting Parameter(결과 매개변수)는 INT4 유형입니다.

DATS_ADD_DAYS

DATS_ADD_DAYS 함수는 매개변수 date에 지정된 날짜에 일 수를 추가하는 데 사용됩니다. 실제 매개변수 date는 사전에 정의된 DATS 데이터 유형이어야 하며, 형식 YYYYMMDD의 유효한 날짜를 포함해야 합니다. 결과 매개변수는 DATS 데이터 유형이며, 일 수가 양수인 경우 날짜에 더해지고, 음수인 경우 날짜에서 빼집니다. 잘못된 결과의 경우, 오류는 매개변수 on_error에 따라 처리됩니다.

관련 구문은 다음과 같습니다.

DATS_ADD_DAYS(date, days,on_error)

이 함수의 매개변수는 다음과 같습니다.

날짜는 데이터 소스의 적절한 필드, 리터럴, 매개변수, 경로 표현식, 사전 정의된 함수 또는 표현식이 될 수 있습니다.

-일수는 사전에 정의된 INT4 데이터 유형이어야 합니다.
-매개변수 on_error는 길이가 10인 사전에 정의된 CHAR 데이터 유형이어야 하며, 다음 값 중 하나를 포함해야 합니다:
FAIL: 오류가 예외를 발생시킵니다.
NULL: 오류가 null 값을 반환합니다.
INITIAL: 오류가 초기 값 반환합니다.
UNCHANGED: 오류가 날짜의 변경되지 않은 값을 반환합니다.
-형식은 대소문자를 구분하지 않으며, 잘못된 값은 예외를 발생시킵니다.

DATS_ADD_MONTHS

이 함수는 실제 매개변수 date에 지정된 날짜에 개월 수를 추가하는 데 사용됩니다. 실제 매개변수 date는 사전에 정의된 DATS 데이터 유형이어야 하며, 형식 YYYYMMDD의 유효한 날짜를 포함해야 합니다. 실제 매개변수 days는 사전에 정의된 INT4 데이터 유형이어야 합니다. 날짜가 유효하지 않은 경우, 오류는 실제 매개변수 on_error를 사용하여 지정된 대로 처리됩니다.

관련 구문은 다음과 같습니다.

DATS_ADD_MONTHS(date,days,on_error)

매개변수 date, days, on_error에 대해서도 DATS_ADD_DAYS 함수와 동일한 규칙과 지침이 적용됩니다.

아래 구문은 데이터 소스 SBOOK을 사용한 CDS 뷰 정의의 예를 보여줍니다.
이 CDS 뷰는 데이터베이스 테이블 SBOOK의 적절한 열에 날짜 함수를 적용합니다. 

@AbapCatalog.sqlViewName: 'ZCDS_EX_SQ_L15'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'CDS usingDatefunctions'
define viewZCDS_EXAMPLE_15
as selectfromsbook
{
carrid,
connid,
fldate,
--Determine ifflightdateisvalid
dats_is_valid(fldate) asfldate_valid,
order_date,
--Determine iforderdateisvalid
dats_is_valid(order_date) asbookid_valid,
--Calculate thedifferenceindatesbetweentwodates
dats_days_between(order_date, fldate) asdays_diff,
--Add daystoorderdate
dats_add_days(order_date,1,'FAIL') asadd_days_to_date,
--Add monthstoorderdate
dats_add_months(order_date, 1, 'FAIL') asadd_months_to_date
}

 

 


Time Functions


CDS (Core Data Services) 뷰에서는 Time Function가 사용되며, 이 함수들은 사전 정의된 데이터 타입 TIMS를 사용하는 표현식과 작업을 수행하는 데 사용됩니다. Conversion Function와 달리 Time Function에는 선택적(Optional) 매개변수가 없으며, 실제(Actual) 매개변수에 할당해야 하는 Importing 매개변수가 포함되어 있습니다. 이러한 실제(Actual) 매개변수는 데이터 소스 필드, 리터럴, 매개변수, 경로 표현식, 사전 정의된 함수 또는 표현식이 될 수 있습니다. 실제(Actual) 매개변수에 null 값이 전달되면, 시간 유효성 검사 함수 TIMS_IS_VALID를 제외한 모든 함수는 null 값을 반환합니다.

TIME_IS_VALID라는 사전 정의된 시간 함수는 사용 가능하며, 소스 코드 편집기에서 단축키 (Ctrl) + (Space)를 사용하여 데이터 정의의 프로젝션 목록에서 볼 수 있습니다.

CDS 뷰에서는 현재 시스템 시간에 직접적으로 접근하는 것은 현재로서는 불가능합니다. 대신, CDS 뷰에 적절한 입력 매개변수를 제공할 수 있습니다. 특별한 Annotation인 @Environment.systemField를 사용하여 ABAP 시스템 필드인 sy-uzeit의 값을 이 매개변수에 전달할 수 있습니다. 입력(Input) 매개변수에 값이 전달되지 않으면, 시스템 시간을 기본 입력값으로 간주합니다. 이 함수는 TIMS 타입의 실제 매개변수가 HHMMSS 형식의 유효한 시간을 포함하는지를 평가하는 데 사용됩니다. 결과 매개변수는 유효한 시간과 형식에 대해 값 1을 생성하며, null 또는 다른 입력값의 경우 0을 생성합니다.

관련하여 구문은 하기 소스와 같습니다.

TIMS_IS_VALID(time)

함수의 파라미터로 time은 데이터 소스의 적절한 필드, 리터럴, 매개변수, 경로 표현식, 사전 정의된 함수 또는 표현식으로 사용될 수 있습니다. 결과(Resulting) 매개변수의 데이터 타입은 INT4입니다.

아래 소스는 데이터 소스 SBOOK를 사용하는 CDS 뷰 정의의 예시를 보여줍니다. 이 CDS 뷰는 데이터베이스 테이블 SBOOK의 열 BOOTIME에 시간 함수를 적용하여 유효성 검사를 수행합니다.

@AbapCatalog.sqlViewName: 'ZCDS_EX_SQL_16'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'CDS using Time functions'
define view ZCDS_EXAMPLE_16
with parameters
--System Date
@Environment.systemField : #SYSTEM_TIME
p_uzeit : syst_uzeit
as select from sbook
{
carrid,
connid,
fldate,
booktime,
customid,
:p_uzeit as SYSTEMTIME,
--Determine if book and system time is valid
tims_is_valid(booktime) as BOOKTIME_VALID,
tims_is_valid(:p_uzeit ) as SYSTEMTIME_VALID
}
where
carrid = 'AA'
and customid = '00000169'

 


Timestamp Functions


CDS 뷰 정의에서는 타임스탬프 함수를 사용하여 내장 데이터 타입인 길이가 15인 DEC 또는 표준 데이터 요소 TIMESTAMP의 표현식에 대해 유효성 검사, 계산 등 여러 작업을 수행합니다. 이 함수들은 Optional Parameter를 갖지 않으며, Actual Parameter에 할당해야 하는 가져오기 매개변수를 포함합니다. 이러한 Actual Parameter는 데이터 소스 필드, 리터럴, 매개변수, 경로 표현식, 사전 정의된 함수 또는 표현식이 될 수 있습니다.

소스 코드 편집기의 데이터 정의의 프로젝션 목록에서 단축키 (Ctrl) + (Space)를 사용하여 여러 사전 정의된 타임스탬프 함수를 확인할 수 있습니다. 다음과 같은 사전 정의된 타임스탬프 함수들을 사용할 수 있습니다.

■ tstmp_add_seconds(tstmp, seconds, on_error)
■ tstmp_current_utctimestamp()
■ tstmp_is_valid(tstmp)
■ tstmp_seconds_between(tstmp_from, tstmp_to, on_error)

 

■ TSTMP_IS_VALID

이 함수는 유효한 타임스탬프를 예상하며, 형식은 YYYYMMDDHHMMSS이어야 합니다. 또한, 사전 정의된 길이가 15이고 소수점이 없는 DEC 데이터 타입이어야 합니다. 결과 매개변수는 INT4 데이터 타입이며, 유효한 타임스탬프인 경우 값 1을 가지고 있으며, 그 외의 값인 경우 0을 가지고 있습니다.

함수의 문법은 다음과 같습니다.

TSTMP_IS_VALID(tstmp)

함수의 파라미터로서 실제 매개변수 tstmp는 형식이 YYYYMMDDHHMMSS인 유효한 타임스탬프를 포함해야 하며, 사전 정의된 길이가 15이고 소수점이 없는 DEC 데이터 타입이어야 합니다. 결과 값은 INT4 데이터 타입을 가집니다.

■ TSTMP_CURRENT_UTCTIMESTAMP

이 함수는 POSIX 표준을 따르는 UTC 타임스탬프를 제공합니다. 결과 값은 데이터베이스 서버의 시계에서 생성됩니다.

함수의 문법은 다음과 같습니다.

TSTMP_CURRENT_UTCTIMESTAMP( )

이 함수의 매개변수는 결과 값이 길이가 15이고 소수점이 없는 DEC 데이터 타입을 가진다는 것입니다.

TSTMP_SECONDS_BETWEEN

이 함수는 두 개의 유효한 타임스탬프를 받아들이고, 매개변수 tstmp_from과 tstmp_to에 지정된 타임스탬프 간의 차이를 초 단위로 계산합니다. 결과 값은 tstmp_to가 tstmp_from보다 큰 경우에는 양수입니다. 그렇지 않은 경우 결과 값은 음수입니다.

함수의 문법은 다음과 같습니다.

TSTMP_SECONDS_BETWEEN(tstmp_from, tstmp_to, on_error)

함수의 파라미터의 내용은 다음과 같습니다.
-실제 매개변수 tstmp_from과 tstmp_to는 형식이 YYYYMMDDHHMMSS인 유효한 타임스탬프를 포함해야 하며, 사전 정의된 길이가 15이고 소수점이 없는 DEC 데이터 타입이어야 합니다.
-on_error 매개변수는 오류 처리에 사용되며, 사전 정의된 길이가 10인 CHAR 데이터 타입을 가져야 하며, 다음 값 중 하나를 포함해야 합니다. (Fail : 에러로 Exception을 발생시킴 / NULL : 에러가 Null 값을 반환 함 / INITAL : 에러가 초기값을 반환함)
- 이 포맷은 대소문자를 구분하지 않으며, 잘못 지정된 값은 예외를 발생시킵니다.

■ TSTMP_ADD_SECONDS

이 함수는 유효한 타임스탬프를 받아들이고, 실제 매개변수인 seconds에 지정된 초를 타임스탬프에 추가합니다. 매개변수에 음수 값이 전달되면 타임스탬프에서 빼기 연산이 수행됩니다. 잘못된 결과에 대해서는 on_error 매개변수를 사용하여 오류 처리를 관리할 수 있습니다.

함수의 문법은 다음과 같습니다.

TSTMP_ADD_SECONDS(tstmp, seconds, on_error)

함수의 파라미터의 내용은 다음과 같습니다.

-실제 매개변수 tstmp는 형식이 YYYYMMDDHHMMSS인 유효한 타임스탬프를 포함해야 하며, 사전 정의된 길이가 15이고 소수점이 없는 DEC 데이터 타입이어야 합니다.
-실제 매개변수 seconds는 사전 정의된 길이가 15이고 소수점이 없는 DEC 데이터 타입이어야 합니다.
-on_error 매개변수에 대해서는 TSTMP_SECONDS_BETWEEN 함수와 동일한 규칙과 지침이 적용되지만, 여기에는 'UNCHANGED'라는 추가적인 매개변수 값이 사용될 수 있습니다. 이 경우 오류가 발생하면 변경되지 않은 타임스탬프 값이 반환되어야 함을 지정할 수 있습니다.


아래 코드는 데이터 소스 SBOOK를 사용하는 CDS 뷰 정의의 예시를 보여줍니다. 이 CDS 뷰는 데이터베이스 테이블 SBOOK의 열 TIMESTAMP에 타임스탬프 함수를 적용합니다.

@AbapCatalog.sqlViewName: 'ZCDS_EX_SQL_17'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'CDS using Timestamp functions'
define view ZCDS_EXAMPLE_17
 with parameters
 p_secs : abap.dec( 15, 0 )
 as select from sbook
{
 carrid,
 connid,
 customid,
 timestamp,
 --Determines if timestamp is valid
 tstmp_is_valid(timestamp) as tstmp_valid,
 --Add seconds to timestamp
 tstmp_add_seconds(timestamp, :p_secs, 'FAIL')
 as tstmp_add_secs,
 --Provides Current timestamp based on server time and date
 tstmp_current_utctimestamp()
 as tstmp_current,
 --Calculate difference between timestamps
 tstmp_seconds_between(timestamp,
 tstmp_current_utctimestamp(),
 'FAIL')
 as tstmp_sec_diff1,
 --Calculate difference between timestamps using expression as the actual 
parameter
 tstmp_seconds_between( tstmp_add_seconds(timestamp,
 :p_secs,
 'FAIL'),
 tstmp_current_utctimestamp(),
 'FAIL')
 as tstmp_sec_diff2
}
where
 carrid = 'AA'
 and customid = '00000169'

 


Time Zone Functions


CDS 뷰 정의에서는 타임존 함수를 사용하여 클라이언트에 종속된 시스템 타임존과 현재 AS ABAP 서버의 사용자에 따른 타임존을 제공합니다. 다른 변환 함수와 달리, 이러한 함수들은 선택적 매개변수가 없으며, 실제 매개변수에 할당해야 하는 가져오기 매개변수를 포함합니다. 이러한 실제 매개변수는 데이터 소스 필드, 리터럴, 매개변수, 경로 표현식, 사전 정의된 함수 또는 표현식이 될 수 있습니다.

소스 코드 편집기에서 데이터 정의의 프로젝션 목록에서 단축키 (Ctrl) + (Space)를 사용하여 여러 사전 정의된 타임존 함수를 확인할 수 있습니다. 다음과 같은 사전 정의된 타임존 함수들을 사용할 수 있습니다:

■ abap_system_timezone(client, on_error) 
■ abap_user_timezone(user, client, on_error)


ABAP_SYSTEM_TIMEZONE


이 함수는 매개변수로 클라이언트와 on_error를 예상하며, 매개변수 client에 지정된 클라이언트를 기반으로 AS ABAP 서버의 시스템 타임존을 제공합니다. 반환되는 시스템 타임존은 데이터베이스 테이블 TTZCU의 열 TZONESYS의 클라이언트에 종속된 내용입니다. 시스템 타임존을 결정할 수 없는 경우 오류가 발생하며, 이는 매개변수 on_error를 사용하여 처리할 수 있습니다.

함수의 문법은 다음과 같습니다.

ABAP_SYSTEM_TIMEZONE(client, on_error)

함수의 파라미터의 내용은 다음과 같습니다.

-실제 매개변수 client는 유효한 클라이언트를 포함해야 하며, 내장 사전형 CLNT을 가져야 합니다.
-매개변수 on_error는 오류 처리에 사용되며, 사전 정의된 길이가 10인 CHAR 데이터 타입을 가져야 하며, 다음 값 중 하나를 포함해야 합니다:
-> 'FAIL': 오류가 예외를 발생시킵니다.
-> 'NULL': 오류가 null 값을 반환합니다.
-> 'INITIAL': 오류가 초기값을 반환합니다.
-이 포맷은 대소문자를 구분하지 않으며, 잘못 지정된 값은 예외를 발생시킵니다.
-결과 값은 CHAR 데이터 타입이며 길이가 6입니다.


ABAP_USER_TIMEZONE


이 함수는 실제 매개변수로 사용자, 클라이언트, on_error를 예상하며, 매개변수 user와 client에 지정된 사용자와 클라이언트를 기반으로 AS ABAP 서버의 사용자 타임존을 제공합니다. 현재 클라이언트에 대해 반환되는 사용자 타임존은 ABAP의 시스템 필드 sy-zonlo의 내용과 일치합니다. 사용자 타임존을 결정할 수 없는 경우 오류가 발생하며, 이는 매개변수 on_error를 사용하여 처리할 수 있습니다.

함수의 문법은 다음과 같습니다.

ABAP_USER_TIMEZONE(user, client, on_error)

함수의 파라미터의 내용은 다음과 같습니다.

-실제 매개변수 user는 사전 정의된 CHAR 데이터 타입을 가져야 합니다.
-Client와 on_error와 같은 다른 매개변수에 대해서는 ABAP_SYSTEM_TIMEZONE 함수와 동일한 규칙과 지침이 적용됩니다.
- 결과 값은 CHAR 데이터 타입이며 길이가 6입니다.

아래 코드는 데이터 소스 SBOOK를 사용하는 CDS 뷰 정의의 예시를 보여줍니다. 이 CDS 뷰는 시간대 함수를 사용하여 현재 AS ABAP 서버에 대한 시스템 및 사용자별 시간대를 가져옵니다.

@AbapCatalog.sqlViewName: 'ZCDS_EX_SQL_18'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'CDS using Timezone functions'
define view ZCDS_EXAMPLE_18
 as select from sbook
{
 carrid,
 connid,
 --Provides system timezone for the logon client
 abap_system_timezone($session.client, 'FAIL') 
 as system_timezone,
 --Provides user timezone for the logon client
 abap_user_timezone($session.user, $session.client, 'FAIL') 
 as user_timezone
}

 


Date and Time Conversion Functions


CDS 뷰 정의에서는 날짜 및 시간 변환 함수를 사용하여 타임스탬프를 날짜나 시간으로 변환하거나 그 반대로 변환할 수 있습니다. 다른 변환 함수와 달리, 이러한 함수들은 선택적 매개변수가 없으며, 실제 매개변수에 할당해야 하는 가져오기 매개변수를 사용합니다. 이러한 실제 매개변수는 데이터 소스 필드, 리터럴, 매개변수, 경로 표현식, 사전 정의된 함수 또는 표현식이 될 수 있습니다.

이러한 함수들은 ABAP 특정 시간대 규칙을 따르며, 변환 작업을 수행합니다. 정확한 결과를 얻기 위해 TTZ* (TTZZ, TTZD, TTZDF 및 TTZDV)로 시작하는 관련 시간대 테이블을 적절하게 채워야 합니다.

이러한 함수들은 ABAP 문의 CONVERT TIME STAMP 및 CONVERT INTO TIME STAMP의 기능을 데이터베이스로 이식하는 데 사용할 수 있습니다.

소스 코드 편집기에서 데이터 정의의 프로젝션 목록에서 단축키 (Ctrl) + (Space)를 사용하여 여러 사전 정의된 날짜 및 시간 변환 함수를 확인할 수 있습니다. 다음과 같은 사전 정의된 날짜 및 시간 변환 함수를 사용할 수 있습니다.

■ dats_tims_to_tstmp(date, time, time_zone, client, on_error)
■ tstmp_to_dats(tstmp, time_zone_ client, on error)
■ tstmp_to_dst(tstmp, time_zone, client, on_error)
■ tstmp_to_tims(tstmp, time,zone, client, on_error)

 

■ TSTMP_TO_TIMS

이 함수는 실제 매개변수로 타임스탬프, 타임존, 클라이언트 및 on_error를 예상하며, 매개변수 tstmp와 time_zone에 지정된 타임스탬프와 타임존을 기반으로 날짜를 추출합니다.

함수의 문법은 다음과 같습니다.

TSTMP_TO_DATS(tstmp, time_zone, client, on_error)

 

함수의 파라미터의 내용은 다음과 같습니다.

-실제 매개변수 tstmp는 형식이 YYYYMMDDHHMMSS인 유효한 타임스탬프를 포함해야 하며, 사전 정의된 길이가 15이고 소수점이 없는 DEC 데이터 타입이어야 합니다.
-실제 매개변수 time_zone는 유효한 타임존을 포함해야 하며, 사전 정의된 길이가 6인 CHAR 데이터 타입이어야 합니다.
-실제 매개변수 client는 유효한 클라이언트를 포함해야 하며, 내장 사전형 CLNT을 가져야 합니다. 이 클라이언트 ID는 시간대 규칙의 시스템 테이블 평가에 사용됩니다.
-매개변수 on_error는 오류 처리에 사용되며, 사전 정의된 길이가 10인 CHAR 데이터 타입을 가져야 하며, 다음 값 중 하나를 포함해야 합니다:
-> 'FAIL': 오류가 예외를 발생시킵니다.
-> 'NULL': 오류가 null 값을 반환합니다.
-> 'INITIAL': 오류가 초기값을 반환합니다.
-> 'UNCHANGED': 오류가 변경되지 않은 날짜의 값을 반환합니다.
-> 이 포맷은 대소문자를 구분하지 않으며, 잘못 지정된 값은 예외를 발생시킵니다.
-> 결과 값은 내장 데이터 타입 DATS를 가집니다.

■ TSTMP_TO_DST

이 함수는 실제 매개변수로 타임스탬프, 타임존, 클라이언트 및 on_error를 예상하며, 매개변수 tstmp와 time_zone에 지정된 타임스탬프와 타임존을 기반으로 일광절약시간(Daylight Saving Time) 표시자를 제공합니다. 결과 값은 타임존의 타임스탬프가 일광절약시간에 있는 경우 'X'이며, 그렇지 않은 경우에는 초기값(INITIAL)입니다.

함수의 문법은 다음과 같습니다.

TSTMP_TO_DST(tstmp, time_zone, client, on_error)

 

함수의 파라미터의 내용은 다음과 같습니다.
- 결과 값은 내장 데이터 타입인 길이가 1인 CHAR입니다.
- tstmp, time_zone, client, on_error와 같은 다른 매개변수에 대해서는 TSTMP_TO_DATS 함수와 동일한 규칙과 지침이 적용됩니다.

DATS_TIMS_TO_TSTMP

이 함수는 실제 매개변수로 날짜, 시간, 타임존, 클라이언트 및 on_error를 예상하며, 매개변수 date, time, time_zone에 지정된 날짜와 타임존을 기반으로 타임스탬프를 준비합니다. 이 함수는 일광절약시간(Daylight Saving Time)을 암묵적으로 관리합니다.

함수의 문법은 다음과 같습니다.

DATS_TIMS_TO_TSTMP(date, time, time_zone, client, on_error)

함수의 파라미터의 내용은 다음과 같습니다.
- 실제 매개변수 date는 형식이 YYYYMMDD인 유효한 날짜를 포함해야 하며, 내장 데이터 타입 DATS이어야 합니다.
- 실제 매개변수 time은 형식이 HHMMSS인 유효한 시간을 포함해야 하며, 내장 데이터 타입 TIMS이어야 합니다.
- 결과 값은 내장 데이터 타입인 길이가 15인 DEC로 표시되며, ABAP 특정 타임스탬프를 나타냅니다.
- time_zone, client, on_error와 같은 다른 매개변수에 대해서는 TSTMP_TO_DATS 함수와 동일한 규칙과 지침이 적용됩니다.

아래 소스는 데이터 소스 SBOOK를 사용하여 매개변수를 가진 CDS 뷰 정의의 예시를 보여줍니다. 이 CDS 뷰는 데이터베이스 테이블 SBOOK의 TIMESTAMP 및 FLDATE 필드에 날짜 및 시간 변환 함수를 적용합니다.

@AbapCatalog.sqlViewName: 'ZCDS_EX_SQL_19'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'CDS using Date and time conversions'
define view ZCDS_EXAMPLE_19
with parameters
--Time passed using input parameter
p_time :abap.tims
as select from sbook
{
carrid,
connid,
fldate,
customid,
timestamp,
--Convert timestamp to date
tstmp_to_dats(timestamp,
abap_system_timezone($session.client, 'FAIL'),
$session.client,'FAIL')
as converted_date,
--Convert timestamp to time
tstmp_to_tims(timestamp,
abap_system_timezone($session.client, 'FAIL'),
$session.client,'FAIL')
as converted_time,
--To identify summertime
tstmp_to_dst(timestamp,
abap_system_timezone($session.client, 'FAIL'),
$session.client,'FAIL')
as converted_dst,
--Convert date and time to timestamp
dats_tims_to_tstmp(fldate, :p_time,
abap_system_timezone($session.client, 'FAIL'),
$session.client,'FAIL')
as converted_timestamp
}
where
carrid = 'AA'
and customid = '00000169'

 

반응형