Binärmodus angeben Dokument im Navigationsbaum lokalisieren

Um eine Datei im Binärmodus zu bearbeiten, verwenden Sie den Zusatz IN BINARY MODE der Anweisung OPEN DATASET:

Syntax

OPEN DATASET <dsn> IN BINARY MODE [FOR ....].

Wenn Sie Daten aus einer Datei lesen oder in eine Datei schreiben, die im Binärmodus geöffnet ist, werden die Daten Byte für Byte übertragen. Der Inhalt der Datei wird während der Übertragung nicht interpretiert. Wenn Sie den Inhalt eines Feldes in eine Datei schreiben, überträgt das System alle Bytes des Quellfeldes. Wenn Sie Daten aus einer Datei in ein Feld übertragen, hängt die Anzahl der übertragenen Bytes von der Länge des Zielfeldes ab. Wenn Sie das Zielfeld nach dem Lesen mit einer anderen ABAP-Anweisung ansprechen, interpretiert das System den Feldinhalt abhängig von dessen Datentyp.

Beispiel

DATA fname(60) TYPE c VALUE 'myfile'.

DATA: num1     TYPE i,
      num2     TYPE i,
      text1(4) TYPE c,
      text2(8) TYPE c,
      hex      TYPE x.

OPEN DATASET fname FOR OUTPUT IN BINARY MODE.

num1  = 111.
text1 = 'TEXT'.
TRANSFER num1  TO fname.
TRANSFER text1 TO fname.

OPEN DATASET fname FOR INPUT IN BINARY MODE.

READ DATASET fname INTO text2.
WRITE / text2.

OPEN DATASET fname FOR INPUT IN BINARY MODE.

READ DATASET fname INTO num2.
WRITE / num2.

OPEN DATASET fname FOR INPUT IN BINARY MODE.

SKIP.
DO.
  READ DATASET fname INTO hex.
  If sy-subrc <> 0.
    EXIT.
  ENDIF.
  WRITE  hex.
ENDDO.

Ausgabe:

###oTEXT

111

00 00 00 6F 54 45 58 54

Nach Öffnen der Datei "myfile" für das Schreiben im Binärmodus wird der Inhalt der Felder NUM1 und TEXT1 in die Datei geschrieben (Informationen zur Anweisung TRANSFER finden Sie in Daten in Dateien schreiben). Dann wird die Datei zum Lesen geöffnet, und der gesamte Inhalt wird in das Feld TEXT2 übertragen (Informationen zur Anweisung READ DATASET finden Sie in Daten aus Dateien lesen). Die ersten vier Stellen der Zeichenkette TEXT2 haben keinen Sinn, da es sich bei den entsprechenden Bytes um die (plattformabhängige) Darstellung der Ganzzahl 111 handelt. Das System versucht, alle Bytes als Zeichen zu interpretieren. Diese Interpretation funktioniert nur bei den letzten vier Bytes. Nach Rücksetzen der Positionierung mit einer OPEN-Anweisung werden die ersten vier Bytes der Datei nach NUM2 übertragen. Der Wert von NUM2 ist sinnvoll, da er denselben Datentyp wie NUM1 hat. Schließlich werden die acht Bytes der Datei nacheinancer in das Feld HEX eingelesen. Aus der Bildschirmausgabe von HEX können Sie die hexadezimale Darstellung des Dateiinhalts ersehen. Die letzten vier Bytes sind die ASCII-Darstellung der Zeichen im Wort TEXT.

 

Ende des Inhaltsbereichs