Boolean in ABAP
Dealing with two state flags is nothing new and a very common scenario in ABAP development, Historically they have been used to represent a true or false state.
For example: Y or N, X or ' ', 0 or 1.
Booleans are data objects that store truth values i.e. True or False, which are results of logical expressions.
Truth values are the results of logical expressions. A truth value is either true or false. ABAP does not yet support boolean data types and thus does not support data objects for truth values. Therefore, the result of a logical expression cannot be assigned directly to a data object. However, it can be achieved using Boolean functions.
It has become common practice to express the truth value "true" as value "X" and the truth value "false" as a blank (" ").
When working explicitly with truth values, use the type abap_bool as a substitute for a real boolean data type. A data object declared in this way should have no values other than the relevant constants abap_true and abap_false (also abap_undefined).
Using the type abap_bool and the constants abap_true and abap_false makes it clear that you are working with truth values.
Truth values are the results of logical expressions. A truth value is either true or false. ABAP does not yet support boolean data types and thus does not support data objects for truth values. Therefore, the result of a logical expression cannot be assigned directly to a data object. However, it can be achieved using Boolean functions.
It has become common practice to express the truth value "true" as value "X" and the truth value "false" as a blank (" ").
which leads to one of the bad practices still prevalent:
Using the Data Type abap_bool for Truth Values
The type group ABAP contains a data type abap_bool of elementary type c with length 1, and the constants abap_true of value "X" and abap_false of value " " as substitutes for a real boolean data type. There is also a constant abap_undefined of value "-".
When working explicitly with truth values, use the type abap_bool as a substitute for a real boolean data type. A data object declared in this way should have no values other than the relevant constants abap_true and abap_false (also abap_undefined).
Using the type abap_bool and the constants abap_true and abap_false makes it clear that you are working with truth values.
Transforming the above-mentioned example using boolean subsitues: