Как получить текущий год в представлении ABAP CDS - PullRequest
2 голосов
/ 05 ноября 2019

Есть ли способ получить текущую метку времени или текущую дату? Синтаксис SQL date.now(), но он не работает в ABAP CDS. Есть ли решение без параметров?

Ответы [ 2 ]

1 голос
/ 05 ноября 2019

В 7.50 у вас есть tstmp_current_utctimestamp(). Его можно использовать для сравнения с другими временными метками, что приводит к необходимости преобразования типовых полей даты и времени. Пример:

// As our system is set to UTC already, these cast and calculation are OK awaiting ABAP 7.51. Add a day if time is 24:00.
case resb.bdztp when '240000' 
                then cast( cast( cast( concat( DATS_ADD_DAYS( resb.bdter, 1, 'NULL'), '000000' ) as abap.numc(14) ) as abap.dec( 15, 0 ) ) as timestamp )
                else cast( cast( cast( concat( resb.bdter, resb.bdztp )                          as abap.numc(14) ) as abap.dec( 15, 0 ) ) as timestamp )
end as RequirementDateTimeUTC,

Расход:

// Seconds since Requirement Date & Time for view isOverdue. 
tstmp_seconds_between( resb.RequirementDateTimeUTC, tstmp_current_utctimestamp(), 'NULL') as SecondsSinceReqDateTimeUTC,
1 голос
/ 05 ноября 2019

Переменная сеанса $session.system_date используется в представлении CDS для обеспечения прямого доступа к текущей системной дате.

Пока нет переменной сеанса для текущего системного времени, и представление CDS может быть предоставлено. вместо этого соответствующий входной параметр. Специальная аннотация @Environment.systemField позволяет передавать значение системного поля ABAP sy-uzeit параметру этого типа.

Источник

...