ABAP - Keyword Documentation →  ABAP - Reference →  Processing External Data →  ABAP File Interface →  Statements for the ABAP File Interface →  OPEN DATASET → 

OPEN DATASET - position

Quick Reference

Syntax

... AT POSITION pos ...

Effect

This addition sets the file pointer at the position specified in pos. pos expects a numeric data object. Numbers with a value greater than the value range of the data type i can also be entered.

The position is specified in bytes; the start of the file corresponds to position 0. If pos contains the value -1, the position is at the end of the file. For all other negative values, the behavior is undefined.

Note the following special cases:

  1. If the file is opened for reading and the value of pos is greater than the length of the file, the file pointer is positioned outside the file. Unless the position is changed, no data can be read.

  2. If the file is opened for writing, the next time writing takes place, the file is filled with hexadecimal 0 from the start of the file to the specified position, and the new content is written after that.

  3. If the file is opened for appending, the specified position is ignored and the file pointer remains positioned at the end of the file.

  4. If the file is opened for changing, and the value of pos is greater than the length of the file, the next time the file is written in, it is filled with hexadecimal 0 from the end of the file to the specified position, and the new content is written after that.

The addition POSITION cannot be specified if one of the additions FILTER or BYTE-ORDER MARK is specified at the same time.

Notes

Example

A file test.dat is created as a text file, then filled with data, changed, and read. Since each TRANSFER statement appends an end-of-line selection to the written content, the content of the file is double-lined after the change. The first line contains "12ABCD". The second line contains "890". The character "7" is overwritten by the end-of-line selection of the first line.

DATA(file) = `test.dat`.

OPEN DATASET file FOR OUTPUT IN TEXT MODE
                             ENCODING DEFAULT
                             WITH SMART LINEFEED.
TRANSFER `1234567890` TO file.
CLOSE DATASET file.

OPEN DATASET file FOR UPDATE IN TEXT MODE
                             ENCODING DEFAULT
                             WITH SMART LINEFEED
                             AT POSITION 2.
TRANSFER `ABCD` TO file.
CLOSE DATASET file.

...

OPEN DATASET file FOR INPUT IN TEXT MODE
                            ENCODING DEFAULT
                            WITH SMART LINEFEED.
DATA: result TYPE string,
      output      TYPE TABLE OF string WITH EMPTY KEY.
WHILE sy-subrc = 0.
  READ DATASET file INTO result.
  APPEND result TO output.
ENDWHILE.
CLOSE DATASET file.

cl_demo_output=>display_data( output ).

DELETE DATASET file.