如何在 ABAP CDS 视图中获取当前年份
How to get current year in ABAP CDS view
有没有办法获取当前时间戳或当前日期? SQL 语法是 date.now()
但它在 ABAP CDS 中不起作用。有没有不带参数的解决方案?
会话变量 $session.system_date
在 CDS 视图中用于提供对当前系统日期的直接访问。
当前系统时间还没有会话变量,可以为 CDS 视图提供适当的输入参数。特殊注释 @Environment.systemField
可以将 ABAP 系统字段 sy-uzeit 的值传递给这种类型的参数。
在 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,
有没有办法获取当前时间戳或当前日期? SQL 语法是 date.now()
但它在 ABAP CDS 中不起作用。有没有不带参数的解决方案?
会话变量 $session.system_date
在 CDS 视图中用于提供对当前系统日期的直接访问。
当前系统时间还没有会话变量,可以为 CDS 视图提供适当的输入参数。特殊注释 @Environment.systemField
可以将 ABAP 系统字段 sy-uzeit 的值传递给这种类型的参数。
在 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,