从 C0 到 C4,理解 SAP ABAP 发布契约与稳定扩展的边界
在 ADT 中打开一个 SAP 标准 CDS 实体,字段已经齐全,数据预览也能正常返回结果,准备把它放进自定义开发时,却遇到对象未发布的检查错误。这种情况在 ABAP Cloud 开发中很常见。对象存在、对象可以被工具查看、对象允许被某一种开发方式使用,是三个不同的问题。更容易产生误解的情况是,属性面板里已经出现 Released,开发仍然无法按预期推进。原因往往藏在发布契约及其可见性设置中。为扩展而发布,不等于允许普通代码直接消费;允许系统内部调用,不等于可以作为远程接口交给外部应用;允许 ABAP 程序使用,也不等于可以在 AMDP 场景下建立同样的依赖。SAP 使用 Release Contracts,即发布契约,表达这些区别。C0、C1、C2、C3、C4 分别覆盖扩展、系统内部使用、远程接口、配置内容管理和 AMDP 使用。它们不是从低到高的成熟度等级,也不是权限逐级增加的五个档位,而是针对不同使用方式建立的兼容性承诺。发布对象需要满足什么一致性要求,后续修改必须守住哪些边界,都与选用的契约有关。SAP Help Portal理解这一点,我们对 Clean Core 的认识会更具体。保持核心清洁,并不只是避免修改 SAP 标准代码。自定义应用即使全部写在 Z 命名空间中,只要长期依赖没有稳定承诺的标准内部对象,升级时仍然可能受到影响。发布契约把依赖关系中的稳定边界明确下来,使 SAP 标准实现与企业扩展能