Skip to content

ABAP Keyword Documentation →  ABAP − Reference →  Processing Internal Data →  Character String and Byte String Processing →  Statements for Character String and Byte String Processing 

SET BIT

Quick Reference

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 type xstring, 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