如何在ABAP CDS视图中获取当前年份

如何在ABAP CDS视图中获取当前年份,abap,cds,Abap,Cds,有没有办法获取当前时间戳或当前日期?SQL语法是date.now,但在ABAP CD中不起作用。有没有不带参数的解决方案?会话变量$session.system\u date用于CDS视图中,以提供对当前系统日期的直接访问 当前系统时间还没有会话变量,可以为CDS视图指定适当的输入参数。特殊注释@Environment.systemField可以将ABAP系统字段sy-uzeit的值传递给此类型的参数 在7.50中,有tstmp\u current\u utctimestamp。它可用于与其他时

有没有办法获取当前时间戳或当前日期?SQL语法是date.now,但在ABAP CD中不起作用。有没有不带参数的解决方案?

会话变量$session.system\u date用于CDS视图中,以提供对当前系统日期的直接访问

当前系统时间还没有会话变量,可以为CDS视图指定适当的输入参数。特殊注释@Environment.systemField可以将ABAP系统字段sy-uzeit的值传递给此类型的参数

在7.50中,有tstmp\u current\u 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,

只是为了确保:您不想使用sy datum/$session.system\u date?请仔细检查您的ABAP版本。CD在到7.51之间有很多变化。例如,在ABAP 7.50中不可能在WHERE子句或联接条件中使用当前日期时间。@konstantin,这个答案有什么问题吗?没关系。会话变量从7.50到7.51没有改变,OP和answerer都没有提到where/JOIN的需要。不要为了简单的目的编造额外的限制question@Suncatcher:在我的情况下,在选择列表中使用$session.system_date会在激活ABAP 7.50中的CDS定义时导致ABAP激活问题:意外单词“$session.system_date”我只能使用变通方法并将其作为参数注入:带参数@Environment.systemField:SYSTEM_DATE p_datum:syst_datum,具有许多性能副作用。另请参见Horst Keller。另请参见:在7.50版之前,ABAP CD中没有系统日期的会话变量。这将只在即将发布的7.51版本中提供。在7.51之前,您可以使用一个参数。请参见ABAP CDS视图| SCN中的当前日期讨论。如果您已经在使用7.51,请使用$session.system_date。是的,日期变量出现在7.51中,但由于问题中没有明确指定版本,因此答案应该是版本无关的,并建议所有版本的解决方案。因此,如果有人发现这个问题,这个答案是完全正确的。谢谢!我可以自己想象出这样一个铸造级联。您是否在官方文档中找到了这些解决方法/破解方法,或者您是使用试用和错误开发的?谢谢。但是我的abap 7.40:这是7.40的孤独吗?还是7.50版本很难升级?@konstantin:演员阵容的灵感来自这里:@Mert:对于7.40版本,我不知道有什么解决方案。