[ABAP] Klasse zur Verarbeitung von Binärdaten (binary streams)

TRY.
* Beispieldaten
    DATA: lv_xstr TYPE xstring VALUE 'FF000000'.
    WRITE: / 'STREAM:', lv_xstr.

* Binary stream
    DATA(o_stream) = NEW cl_fxs_binary_stream( mv_byteorder = cl_fxs_binary_stream=>co_byteorder_little
                                               mv_data      = lv_xstr ).

* Länge
    DATA(lv_len) = o_stream->get_length( ).
    WRITE: / 'Länge:', lv_len.
* Byteorder
    WRITE: / 'Byteorder:', o_stream->get_byteorder( ).

    IF lv_len > 0.
* 1 Byte lesen
      WRITE: / 'BYTE:', o_stream->read_byte( iv_offset = 0 ).
* Int lesen
      WRITE: / 'INT:', o_stream->read_int( iv_offset = 0 ).
* Short lesen
      WRITE: / 'SHORT:', o_stream->read_short( iv_offset = 0 ).
* WORD lesen
      WRITE: / 'WORD:', o_stream->read_word( iv_offset = 0 ).
* 1 DWORD (4 Bytes) lesen, ahängig der Byteorder
      WRITE: / 'DWORD:', o_stream->read_dword( iv_offset = 0 ).
* Datenzeiger auf Byte 4 setzen
      o_stream->seek_to( 3 ).
* Byte schreiben
      WRITE: / 'Byte 4 schreiben:', 32.
      o_stream->write_byte( iv_offset = 0
                            iv_value  = 32 ).
* Byte-Sequenz lesen
      WRITE: / 'BYTE-Sequenz (Byte 3 und 4):', o_stream->read_byteseq( iv_offset = -1
                                                                       iv_len    = 2 ).
    ENDIF.

  CATCH cx_root INTO DATA(e_txt).
    WRITE: / e_txt->get_text( ).
ENDTRY.