ABAP Keyword Documentation → ABAP − Reference → Processing Internal Data → Character String and Byte String Processing → Statements for Character String and Byte String Processing
SET BIT
Other versions: 7.31 | 7.40 | 7.54
Syntax
SET BIT bitpos OF byte_string [TO val].
Effect
This statement sets the bit in bit position bitpos
of the variable
byte_string to 1 or, if specified, to the value of data object val
. The other bits in byte_string
remain unchanged.
The data object byte_string
must be byte-like, whereas bitpos
and val
are
numeric expression
positions of operand type i
. The value of bitpos
must be greater than 0 and val
must be either 0 or 1. Otherwise a non-handleable
exception is raised. The bit positions in byte_string
are counted from the
beginning of the data object. If the value of bitpos
is greater than the
number of bits in byte_string
, no bit is replaced and sy-subrc
is set to 4.
System Fields
sy-subrc | Meaning |
---|---|
0 | A bit in data object byte_string was set at position bitpos . |
4 | The value of bitpos is greater than the number of bits in byte_string , therefore no bit was set. |
Notes
-
If
byte_string
has the deep typexstring
, a bit is set in the referenced byte string, not in the reference. - Setting single bits is especially suited to preparing operators in bit expressions.
-
The built-in function
bit-set
can also be used to set a single bit.
Example
In the data object hex
with eight bits, the bit is set to the value 1 at
the position determined by the loop counter sy-index
, with all other bits set to 0. The output is "80 40 20 10 08 04 02 01".
DATA hex TYPE x LENGTH 1.
DATA output TYPE string.
DO 8 TIMES.
CLEAR hex.
SET BIT sy-index OF hex.
output &&= |{ hex } |.
ENDDO.
cl_demo_output=>display( output ).
Exceptions
Non-Handleable Exceptions
-
Cause: The bit position is greater than or equal to
0
.
Runtime error:BIT_OFFSET_NOT_POSITIVE
-
Runtime error:BIT_NO_ZERO_OR_ONE