放到我们正在做的 RAP 开发场景里,这个问题很容易遇到。某个 RAP 查询接口返回abap_bool,旧函数模块或传统 DDIC 结构里却有一个字段使用BOOLEAN。两个字段在调试器里看起来都只是长度为一的字符,赋值也通常不会产生语法错误,于是很容易把它们当成同一种布尔类型。真正危险的地方不在技术长度,而在值的解释规则。abap_bool把空格解释为假,把连字符解释为未定义。经典 DDIC 数据元素BOOLEAN则把连字符解释为假,把空格解释为未知。两者只有真值X保持一致,假值与未知值的位置刚好相反。这不是命名风格上的小差异,而是可能直接改变业务判断结果的数据语义差异。两套类型最核心的区别早期以及当前大量 ABAP 代码都使用abap_bool表达真假。它来自类型组ABAP,技术类型是长度为一的字符类型。与它配套的常量是abap_true、abap_false和abap_undefined。SAP 官方文档明确说明,abap_true的值为X,abap_false的值为空格,abap_undefined的值为连字符。abap_bool的初始值为空格,因此初始状态在这套约定中等同于假。(