ABAP Keyword Documentation → ABAP  Reference → Processing Internal Data → Character String and Byte String Processing → Expressions and Functions for Byte String Processing
bit_exp  Bit Expressions
Other versions: 7.31  7.40  7.54
Syntax
... [BITNOT] operand1
[{BITANDBITORBITXOR} [BITNOT] operand2
[{BITANDBITORBITXOR} [BITNOT] operand3
... ]] ... .
Effect
A bit expression formulates a binary calculation. The result of a bit expression is a byte chain in the
calculation length assigned to the bit expression.
In a bit expression bit_exp
, an operand operand1
can be joined with one or more operands operand2
, operand3
, and so on using
bit operators BITAND
, BITOR
, or BITXOR
;
Brackets are possible. Bit expressions can be used in the statement COMPUTE
or in
read positions in certain statements.
The operand positions operand
are
general expression positions, which means bytelike data objects,
functional methods
with bytelike return codes, or bracketed bit expressions can be specified. The bit operators
BITAND, BITOR
, and BITXOR
join two adjacent
operands. When the expression is evaluated, a bytelike value is calculated and joined with the next
adjacent operand. The priority of the join depends on the operators that are used; if use functional methods are used, the same applies as described for
arithmetic expressions.
The bit operator BITNOT
can be specified one or more times before an operand to negate the value of the operand. If BITNOT
is specified an even number of times, the operand remains unchanged. An odd number of uses negates the operand.
If functional methods are specified as operands, they are listed from left to right and from inside to outside before the remainder of the expression is evaluated. The return values are buffered to be used in the corresponding operand positions.
Example
Bit sequences are an efficient way of mapping set operations. If a set contains n elements, the existence
of an element i in n can be represented by a 1 at the position of i in a bytelike field. The statement
SET BIT
. among others, can be
used to add an element to the set. The operators BITAND
, BITOR
,
and BITXOR can then be used to calculate the intersection, the union, and the symmetric difference of different sets.
In the following example, the attributes of person groups are mapped in the fields p1
,
p2
, p3
of the type x
.
The bit operator BITAND
is then used to determine which attributes are shared by all people. The result shows that only the eighth attribute is shared.
DATA:
res TYPE x LENGTH 1,
p1 TYPE x LENGTH 1 VALUE '5B', "01011011
p2 TYPE x LENGTH 1 VALUE '13', "00010011
p3 TYPE x LENGTH 1 VALUE 'A5'. "10100101
res = p1 BITAND p2 BITAND p3. "00000001
Exceptions
NonCatchable Exceptions

Cause: An operand or the result field is not of type
x
.
Runtime Error:BITS_WRONG_TYPE