Opening a File for Write Access Locate the document in its SAP Library structure

To open a file for writing, use the FOR OUTPUT addition to the OPEN DATASET statement.

Syntax

OPEN DATASET <dsn> FOR OUTPUT.

If the file does not already exist, it is created automatically. If it does already exist, but is closed, its contents are overwritten. If the file exists and is already open (for read or write access, or for appending), the position is reset to the beginning of the file. If the system can open the file <dsn> successfully, SY-SUBRC is set to 0. If not, it is set to 8.

Example

DATA: MESS(60),
      FNAME(10) VALUE '/tmp'.

OPEN DATASET FNAME FOR OUTPUT MESSAGE MESS.

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

If the R/3 System is ruining under UNIX, the output looks like this:

This graphic is explained in the accompanying text

The system cannot open the file, since the name you specified is that of a directory.

Example

The following program shows how the system sets the position when you open a file for writing. However, it is better programming style to close files that are already open before you reopen them for a different operation (for further information about closing files, refer to Closing a File).

DATA FNAME(60) 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.

The output appears as follows:

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

This example performs the following steps using the file "myfile":

  1. It is opened for writing
  2. It is filled with 10 integers (for information about the TRANSFER statement, refer to Writing Data to Files)
  3. It is then opened for reading. The position is reset accordingly to the beginning of the file.
  4. It is read into the field NUM. For information about the READ DATASET statement, refer to Reading Data from Files. The values of NUM are displayed on the screen.
  5. It is reopened for writing The position is reset to the beginning of the file.
  6. It is filled with five integers, which overwrite the previous contents of the file.
  7. It is then reopened for reading. The position is reset to the beginning of the file.
  8. The file is read into the field NUM. The values of NUM are displayed on the screen.
  9. It is closed (for information about the CLOSE DATASET statement, refer to Closing a File).
  10. It is then reopened for writing. The system deletes the existing contents of the file.
  11. It is filled with 5 integers.
  12. It is then opened for reading. The position is reset to the beginning of the file.
  13. The file is read into the field NUM. The values of NUM are displayed on the screen.

 

 

 

 

 

Leaving content frame