ABAP Keyword Documentation → ABAP - Reference → Processing External Data → ABAP File Interface → Statements for the ABAP File Interface
SET DATASET
Other versions: 7.31 | 7.40 | 7.54
Syntax
SET DATASET dset [POSITION {pos|{END OF FILE}}]
[ATTRIBUTES attr].
Extras
1. ... POSITION {pos|{END OF FILE}}
2. ... ATTRIBUTES attr
Effect
This statement uses the addition POSITION
to determine the position of the
file pointer in the file specified in dset
. It uses the addition ATTRIBUTES
to set additional attributes for the file. At least one of these two additions must be specified.
dset
expects a character-like data object containing the
physical name of the file. The file must already be open, otherwise a handleable exception is raised.
Addition 1
... POSITION {pos|{END OF FILE}}
Effect
This addition sets the file pointer in the file, either in the position specified in pos
, or at the end of the file. pos
expects a numerical data object.
The position is specified in bytes; the start of the file corresponds to position 0. If the value of
pos
is -1, the file pointer is set at the end of the file. Other negative values are not permitted.
Note the following special cases:
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. If write changes are then made to the file, in a non-
Unicode program, the file is padded with hexadecimal 0's from the end of the file to the specified position. pos
is greater than the
length of the file, the next time the file is written in, it is padded with hexadecimal 0s from the end of the file to the specified position. pos
is greater than
the length of the file, at the next write access, hexadecimal 0s are added from the end of the file to the specified position.
The addition POSITION
cannot be specified for files that have been opened
with the addition FILTER
of the statement OPEN DATASET
. This raises a handleable exception.
Notes
-
For file sizes greater than 2 GB, a data object
pos
of data typei
is not sufficient for entering all the possible positions of the file pointer. -
Free position specifications are more suitable for binary files than for text files. In text files,
positions depend on the character format, line-end markers, and in UTF-8 files, also on a Byte Order
Mark (BOM). In text files, only place the file pointer in positions known precisely, for example positions obtained using
GET DATASET
.
Example
When writing, the file is read from the start of the file until the first end-of-line marker, and then
the new content is written starting from the end of the file. If the data pointer is not explicitly
set after reading, the last TRANSFER
statements would overwrite the file after the first end-of-line marker.
DATA: file TYPE string VALUE 'test1.dat',
pos TYPE i,
text TYPE string.
OPEN DATASET file FOR OUTPUT IN TEXT MODE
ENCODING DEFAULT
WITH SMART LINEFEED.
TRANSFER: 'Line1' TO file,
'Line2' TO file,
'Line3' TO file.
SET DATASET file POSITION 0.
READ DATASET file INTO text.
SET DATASET file POSITION END OF FILE.
TRANSFER: 'Line4' TO file,
'Line5' TO file,
'Line6' TO file.
CLOSE DATASET file.
Addition 2
... ATTRIBUTES attr
Effect
This addition can be used to change some of the attributes that were determined when the file was opened with the statement
OPENDATASET
. attr
expects a data object of type dset_changeable_attributes
from the
type group DSET (see the table below). The structure
dset_changeable_attributes
corresponds to the substructure changeable
of the structure dset_attributes
. Data objects of the structure dset_attributes
can be filled using the statement
GET DATASET
.
Component | Meaning |
---|---|
indicator |
Structure with the components repl_char , conv_errors ,code_page , endian , and linefeed_mode .If these components contain the value "X" in attr , the values are used inthe components with the same names in the structure dset_changeable_attributes for changing. |
repl_char |
In this component of attr , a single-character character-like replacementcharacter can be specified to overwrite the replacement character specified when the file was openedusing the addition REPLACEMENT CHARACTER of the statement OPEN DATASET . |
conv_errors |
In this component of attr , the value "I" or "R" can be specified to overwritethe setting made when the file was opened using the addition IGNORING CONVERSION ERRORS . The value "I" suppresses the exceptions, "R" raises the exceptions. |
code_page |
In this component of attr , acode page from the columnCPCODEPAGE of the database table TCP00 can be specified, to overwrite thecodepage specified when the file was opened using the addition CODE PAGE of the statement OPEN DATASET . |
endian |
In this component of attr , the value "B" or "L" can be specified to overwritethe setting made when the file was opened using the additions { BIG |
linefeed_mode |
In this component of attr , one of the values "N", "S", "U" or "W" canbe entered to overwrite the setting made using the addition WITH NATIVE |
For some components, the possible input values are defined as constants in the type group DSET.
The values entered in attr
must comply with the syntax rules for the relevant additions of the statement OPEN DATASET
, otherwise this raises a handleable exception:
-
The components
repl_char
andconv_errors
can only be used when making changes if the file is opened as a text file, legacy text file, or legacy binary file, but not if it is opened as a binary file -
The components
code_page
andendian
can only be used when making changes if the file is opened as a legacy text file or a legacy binary file. -
The component
linefeed_mode
can only be used in changing if the file is opened as a text file or a legacy text file and if the line-end marker has been set explicitly using the additionWITH LINEFEED
.
Note
:The modifiable attributes do not affect the attributes of the file in the operating system, but rather the attributes with which the file is opened in ABAP, and which affect how it is handled in ABAP.
Example
Depending on the non-modifiable attributes of the file test.dat
, some of its modifiable attributes are changed.
DATA: dset TYPE string VALUE 'test.dat',
attr TYPE dset_attributes.
OPEN DATASET dset FOR INPUT IN LEGACY TEXT MODE
WITH NATIVE LINEFEED.
...
GET DATASET dset ATTRIBUTES attr.
IF attr-fixed-mode = 'T' OR
attr-fixed-mode = 'LT'.
CLEAR attr-changeable.
attr-changeable-indicator-conv_errors = 'X'.
attr-changeable-conv_errors = 'I'.
attr-changeable-indicator-linefeed_mode = 'X'.
attr-changeable-linefeed_mode = 'S'.
IF attr-fixed-mode = 'LT'.
attr-changeable-indicator-code_page = 'X'.
attr-changeable-code_page = '1100'.
ENDIF.
SET DATASET dset ATTRIBUTES attr-changeable.
ENDIF.
CLOSE DATASET dset.
Exceptions
Catchable Exceptions
CX_SY_CODEPAGE_CONVERTER_INIT
-
Cause: The specified code page is not available on the application server.
Runtime Error:CONVT_CODEPAGE_INIT
CX_SY_CONVERSION_CODEPAGE
-
Cause: The escape character cannot be displayed in the target code page.
Escape characters and handling of conversion errors can only be changed in
TEXT MODE
or inLEGACY ... MODE
.
Runtime Error:CONVT_CODEPAGE
CX_SY_FILE_OPEN_MODE
-
Error Type: READ_ONLY
Cause: Read-only access to file
Runtime Error:DATASET_READ_ONLY
-
Error Type: NOT_OPEN
Cause: File is not open.
Runtime Error:DATASET_NOT_OPEN
-
Error Type: INCOMPATIBLE_MODE
Cause: File opened in incompatible mode.
Runtime Error:DATASET_INCOMPATIBLE_MODE
CX_SY_FILE_POSITION
-
Error Type: SEEK_ERROR
Cause: Error when positioning in file.
Runtime Error:DATASET_SEEK_ERROR
-
Error Type: TELL_ERROR
Cause: No access to current read/write position in the file.
Runtime Error:DATASET_NO_POSITION
-
Error Type: OFFSET_TOO_LARGE
Cause: The specified offset for the file exceeds the defined
system limit for the platform.
Runtime error:DATASET_OFFSET_TOO_LARGE
Non-Catchable Exceptions
-
Cause: An attempt was made to change the position for a pipe. Pipes cannot, however, be positioned.
Runtime Error:DATASET_PIPE_POSITION