Anfang des Inhaltsbereichs

Öffnen einer Datei zum Schreiben Dokument im Navigationsbaum lokalisieren

Um eine Datei zum Schreiben zu öffnen, verwenden Sie den Zusatz FOR OUTPUT:

Syntax

OPEN DATASET <dsn> FOR OUTPUT.

Diese Anweisung öffnet eine Datei zum Schreiben. Wenn die Datei nicht vorhanden ist, wird sie angelegt. Wenn sie vorhanden und geschlossen ist, wird ihr Inhalt überschrieben. Wenn die Datei bereits vorhanden und geöffnet ist (zum Lesen, Schreiben oder Schreiben an das Ende der Datei), wird die Positionierung an den Anfang der Datei zurückgesetzt. Wenn das System die Datei öffnen kann, gibt SY-SUBRC 0 zurück. Anderenfalls gibt SY-SUBRC 8 zurück.

Beispiel

DATA: mess(60) TYPE c,
      fname(10) TYPE c VALUE '/tmp'.

OPEN DATASET fname FOR OUTPUT MESSAGE mess.

IF sy-subrc <> 0.
  WRITE: 'SY-SUBRC:', sy-subrc,
       / 'System Message:', mess.
ENDIF.

Wenn das SAP-System unter UNIX läuft, sieht die Ausgabe dieses Beispiels so aus:

Diese Grafik wird im zugehörigen Text erklärt

Das System kann die Datei nicht öffnen, da es sich um ein Verzeichnis handelt.

Beispiel

Das folgende Programm zeigt, wie die Positionierung durchgeführt wird, wenn eine Datei zum Schreiben geöffnet wird. Es wäre jedoch besserer Programmierstil, bei bereits geöffneten Dateien immer die CLOSE-Anweisung zu benutzen, bevor sie erneut geöffnet werden (Informationen zum Schließen von Dateien finden Sie in Schließen einer Datei).

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

OPEN DATASET fname FOR OUTPUT.

DO 10 TIMES.
  num = num + 1.
  TRANSFER num TO fname.
ENDDO.

PERFORM input.

OPEN DATASET fname FOR OUTPUT.

num = 0.
DO 5 TIMES.
  num = num + 10.
  TRANSFER num TO fname.
ENDDO.

PERFORM input.

CLOSE DATASET fname.

OPEN DATASET fname FOR OUTPUT.

num = 0.
DO 5 TIMES.
  num = num + 20.
  TRANSFER num TO fname.
ENDDO.

PERFORM input.

FORM input.
  SKIP.
  OPEN DATASET fname FOR INPUT.
  DO.
    READ DATASET fname INTO num.
    IF sy-subrc <> 0.
      EXIT.
    ENDIF.
    WRITE / num.
  ENDDO.
ENDFORM.

Ausgabe:

1
2
3
4
5
6
7
8
9
10

10
20
30
40
50
6
7
8
9
10

20
40
60
80
100

In diesem Beispiel geschieht folgendes mit der Datei "myfile":

    1. Sie wird zum Schreiben geöffnet.
    2. Sie wird mit 10 Ganzzahlen gefüllt (Informationen zur TRANSFER-Anweisung finden Sie in Daten in Dateien schreiben).
    3. Sie wird auch zum Lesen geöffnet. Die Positionierung wird deshalb auf den Anfang der Datei zurückgesetzt.
    4. Sie wird in das Feld NUM eingelesen (Informationen zur Anweisung READ DATASET finden Sie in Daten aus Dateien lesen). Die Werte von NUM werden auf das Ausgabebild geschrieben.
    5. Sie wird wieder zum Schreiben geöffnet. Die Positionierung wird auf den Anfang der Datei zurückgesetzt.
    6. Sie wird mit 5 Ganzzahlen gefüllt. Diese Ganzzahlen überschreiben den alten Dateiinhalt.
    7. Sie wird erneut zum Lesen geöffnet. Die Positionierung wird auf den Anfang der Datei zurückgesetzt.
    8. Sie wird in das Feld NUM eingelesen. Die Werte von NUM werden in das Ausgabebild geschrieben.
    9. Sie wird geschlossen (Informationen zur Anweisung CLOSE DATASET finden Sie in Schließen einer Datei).
    10. Sie wird erneut zum Schreiben geöffnet. Der Inhalt der bestehenden Datei wird gelöscht.
    11. Sie wird mit 5 Ganzzahlen gefüllt.
    12. Sie wird auch zum Lesen geöffnet. Die Positionierung wird auf den Anfang der Datei zurückgesetzt.
    13. Sie wird in das Feld NUM eingelesen. Die Werte von NUM werden in das Ausgabebild geschrieben.

 

 

 

Ende des Inhaltsbereichs