计算ABAP CDS中的前一天



我从ABAP开始,我使用以下说明在系统中获取日期,但我无法获取前一天的日期,有人有什么建议吗?谢谢。

我尝试过:

{ 
$session.system_date as today,
$session.system_date - 1 as yesterday
}

但我不会用日期做算术运算,这标志着一个错误。

您可以将DATS_ADD_DAYS函数用于此任务。

它不允许将会话变量直接作为参数,但我们可以使用以下技巧:

define view Z_TODAY
as select from 
zsomething
{ 
key field1 as type1,
key field2 as type2,
...
$session.system_date as today,
DATS_ADD_DAYS( cast( $session.system_date as abap.dats ),-1,'NULL') as yesterday
}

将系统日期封装到CAST中即可。

另一种不太直观的方法(有时可能更灵活(是将可选参数与预定义值相加:

define view Z_TODAY
with parameters  
@Environment.systemField : #SYSTEM_DATE 
p_datum : abap.dats
as select from zsomething
{ 
key field1 as type1,
key field2 as type2,
...
$session.system_date as today,
DATS_ADD_DAYS( :p_datum,-1,'NULL') as yesterday
}

最新更新