ABAP CDS 中如何获取系统日期、用户日期与时区信息
在 SAP S/4HANA 的实际项目里,日期看起来只是一个YYYYMMDD,真正进入全球化业务场景后却很快会变复杂。系统服务器有自己的日期,登录用户有自己的日期,用户还有自己的时区。一个部署在欧洲数据中心的 SAP S/4HANA 系统,可能同时服务中国、印度、美国和澳大利亚的业务人员。同一个物理时刻,不同用户眼中的业务日期完全可能不同。这类差异在 ABAP 程序里并不陌生。传统 ABAP 开发经常会接触sy-datum、sy-uzeit、sy-datlo、sy-timlo、sy-zonlo。进入 ABAP CDS 之后,问题依然存在,只是获取这些上下文信息的方法变了。ABAP CDS 为这类需求提供了两条很重要的路径。一条是直接读取$sessionSession Variable,另一条是通过@Environment.systemFieldAnnotation,把运行时系统信息自动注入 CDS Input Parameter。SAP 当前的 ABAP Data Models 文档明确给出了与日期和时间相关的三个 Session Variable,分别是$session.system_date、$session.user_timezone和$session.user_date。其中$session.system_date返回当前 AS ABAP 的系统日期,$session