我正在尝试获取通知对象的有效系统状态列表,为了不检查表中的所有通知,我想通过仅检查过去 2 年的数据来执行选择。
也许对我的问题有更好的解决方案,但我仍然对这个技术限制感到好奇。据我所知,SAP 中的系统状态是硬编码的,不能通过任何表来确定每个对象(SAP 可以随时添加新的系统状态)。
我尝试创建下面的 CDS 视图,但dats_add_months
在 where 条件下无法使用该功能,有解决方案吗?请注意,7.50 没有系统日期的会话参数,因此我使用了一个环境变量:
define view ZNOTIF_SYS_STATUS
with parameters sydat : abap.dats @<Environment.systemField: #SYSTEM_DATE
as select distinct from qmel as notif
inner join jest as notif_status on notif_status.objnr = notif.objnr
and notif_status.inact = ''
inner join tj02t as sys_status on sys_status.istat = notif_status.stat
and sys_status.spras = $session.system_language
{
key sys_status.txt04 as statusID,
sys_status.txt30 as description
} where notif.erdat > dats_add_months($parameters.sydat, -12, '') //THIS CAN'T BE USED!!