从一个很常见的现场说起
在很多 SAP 项目里,我第一次认真盯住$session,往往不是在教程里,而是在一段已经跑了很多年的CDS View源码里。表面上看,它像一个普通变量,写法也不复杂,像$session.system_language、$session.client这样直接放在表达(eduardocopat.github.io)on是谁提供的,值从哪来,和sy-uname、sy-langu这些系统字段是什么关系,为什么有时能用,有时又会报语法错误,或者到了Native SQL、AMDP、ADBC一类场景里行为突然变得不一样。SAP 官方文档给出的定义很明确,$session不是某一个单独变量,而是一组session variable的统一前缀,用来在ABAP CDS里读取当前会话上下文信息。它们是在通过ABAP SQL访问CDS` 时由运行时填充的。(