Variante 1 (xstring)
* Dateiinhalt (Binärdatenstrom) als xstring
DATA(lv_bytes_xstr) = CONV xstring( 'A0B0C0' ).
* Pfad + Dateiname auf dem Appl.-Server
DATA(lv_file) = '/usr/sap/tmp/file.bin'.
TRY.
* Datei zum binären Schreiben öffnen
OPEN DATASET lv_file FOR OUTPUT IN BINARY MODE.
IF sy-subrc = 0.
* Binärdaten in die Datei schreiben
TRANSFER lv_bytes_xstr TO lv_file.
* Datei schließen
CLOSE DATASET lv_file.
ELSE.
WRITE: / 'Konnte Datei nicht öffnen:', lv_file.
ENDIF.
CATCH cx_root INTO DATA(e_txt).
WRITE: / e_txt->get_text( ).
ENDTRY.
Variante 2 (itab mit Zeilen von 1024Bytes Länge)
TYPES: ty_raw1024 TYPE x LENGTH 1024.
* itab mit Zeilen von je 1kB Daten
DATA: it_raw1024 TYPE STANDARD TABLE OF ty_raw1024 WITH DEFAULT KEY.
* 2kB Testdaten erzeugen
it_raw1024 = VALUE #(
( CONV xstring( 'A0B0C0FFFF' ) )
( CONV xstring( 'C1D2E3FFFF' ) )
).
* Pfad + Dateiname auf dem Appl.-Server
DATA(lv_file) = '/usr/sap/tmp/file.bin'.
TRY.
* Datei zum binären Schreiben öffnen
OPEN DATASET lv_file FOR OUTPUT IN BINARY MODE.
IF sy-subrc = 0.
* Binärdaten Zeilenweise in die Datei schreiben
* es wird immer die volle Zeilenlänge geschrieben
LOOP AT it_raw1024 ASSIGNING FIELD-SYMBOL(<x>).
TRANSFER <x> TO lv_file.
ENDLOOP.
* Datei schließen
CLOSE DATASET lv_file.
ELSE.
WRITE: / 'Konnte Datei nicht öffnen:', lv_file.
ENDIF.
CATCH cx_root INTO DATA(e_txt).
WRITE: / e_txt->get_text( ).
ENDTRY.