在很多 ABAP 项目里,SY/SYST就像空气一样自然:拿当前用户、系统日期时间、语言、消息字段、SY-SUBRC……随手就用。但当你把代码搬到 ABAP Cloud,或者开始认真做 ABAP Unit,你会立刻感受到两个现实:
- 可用性在变化:部分系统字段在 ABAP Cloud 场景下会出现限制、告警,或缺少等价替代方案。(SAP Help Portal)
- 可测试性偏弱:系统字段由运行时填充,测试里很难稳定复现与控制,导致用例容易脆弱、覆盖率也被迫妥协。
下面分享一套“迷你框架”思路:把系统信息访问集中到一个语义化接口后面,用工厂创建实例,用 Injector 在测试里注入 Double,让生产代码保持干净,同时让测试可以随意“伪造系统环境”。
重新看待系统字段:问题不在SY,而在“耦合方式”
系统字段本身没有原罪,真正的问题是它把业务逻辑和运行时环境绑得太死:
- 业务逻辑里直接依赖
SY-SUBRC