翻转布尔值最干净的方法

Lil*_*hal 3 sap abap boolean

是否有任何现有的方法或功能模块可以有效地翻转布尔值?

如果我必须定义自己的实用程序方法,我想出了一个简单的实现,但我想知道这是否是最有效的方法:

IF iv_bool = abap_true.
    rt_bool = abap_false.
ELSEIF iv_bool = abap_false.
    rt_bool = abap_true.
ELSE.
    rt_bool = abap_undefined.
ENDIF.
Run Code Online (Sandbox Code Playgroud)

编辑:正如Smigs所说,这个实现翻转三值布尔值或"trileans"

Smi*_*igs 10

rt_bool = boolc( iv_bool <> abap_true ).
Run Code Online (Sandbox Code Playgroud)

将翻转布尔值.但是,它不会处理abap_undefined.

从740 SP08开始,您可以使用xsdbool( )而不是boolc( )实现相同的结果.不存在给定的例子中没有什么区别,但是xsdbool( )更安全的使用比较时

  • 从 ABAP 7.4 SP 08 开始,有一个新的布尔函数 `xsdbool`。它通常应该替换`boolc`,因为后者有一个[与`abap_false`相比时的已知问题](http://scn.sap.com/community/abap/blog/2014/09/29/abap-news-for -740-sp08--logical-expressions): `boolc( 1 = 2 ) = abap_false` 由于字符串字符比较而评估为假。 (2认同)