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.
ABAP_ADDITION_1 ... POSITION {pos|{END OF FILE}}
What does it do? 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:
If the file is open 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. 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.
If the file is opened for writing and the value of 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.
If the file is opened for appending, the position specified is ignored
and the file pointer remains positioned at the end of the file.
If the file is opened for changing, and the value of 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.
Latest notes: For file sizes greater than 2 GB , a data object
pos of data type i 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 ABAP Coding 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.
ABAP_ADDITION_2 ... ATTRIBUTES attr
What does it do? 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 in the 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 replacement character can be specified to overwrite the
replacement character specified when the file was opened using 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 overwrite the 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 , a
code page from the column CPCODEPAGE
of the database table TCP00 can be
specified, to overwrite the codepage 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 overwrite the setting made when the
file was opened using the additions { BIG
| LITTLE } ENDIAN of the statement OPEN DATASET . The value
"B" sets the byte order to Big Endian, the value "L" sets
it to Little Endian.
linefeed_mode In this component of attr , one of the
values "N" , "S" , "U" or "W" can be entered
to overwrite the setting made using the addition
WITH NATIVE|SMART|UNIX|WINDOWS
LINEFEED of the statement OPEN DATASET as appropriate.
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 and conv_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 and endian 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 addition
WITH LINEFEED .
Latest notes: :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 ABAP Coding 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.
Runtime Exceptions
Catchable Exceptions
CX_SY_CODEPAGE_CONVERTER_INIT
Reason for error: The specified code page is not available on the
application server.
Runtime error: CONVT_CODEPAGE_INIT
CX_SY_CONVERSION_CODEPAGE
Reason for error: 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 in LEGACY ... MODE .
Runtime error: CONVT_CODEPAGE
CX_SY_FILE_OPEN_MODE
ABAP_TEXTID READ_ONLY
Reason for error: Read-only access to file
Runtime error: DATASET_READ_ONLY
ABAP_TEXTID NOT_OPEN
Reason for error: File is not open.
Runtime error: DATASET_NOT_OPEN
ABAP_TEXTID INCOMPATIBLE_MODE
Reason for error: File opened in incompatible mode.
Runtime error: DATASET_INCOMPATIBLE_MODE
CX_SY_FILE_POSITION
ABAP_TEXTID SEEK_ERROR
Reason for error: Error when positioning in file.
Runtime error: DATASET_SEEK_ERROR
ABAP_TEXTID TELL_ERROR
Reason for error: No access to current read/write position in the file.
Runtime error: DATASET_NO_POSITION
ABAP_TEXTID OFFSET_TOO_LARGE
Reason for error: The specified offset for the file exceeds the defined
system limit for the platform.
Runtime error: DATASET_OFFSET_TOO_LARGE
Non-catchable Exceptions
Reason for error: An attempt was made to change the position for a
pipe . Pipes cannot, however, be positioned.
Runtime error: DATASET_PIPE_POSITION
Documentation extract taken from SAP system, � Copyright SAP AG. All rights reserved