ABAP Keyword Documentation → ABAP − Reference → Processing External Data → ABAP File Interface → Statements for the ABAP File Interface → OPEN DATASET
OPEN DATASET - mode
Other versions: 7.31 | 7.40 | 7.54
Syntax
... {BINARY MODE}
| {TEXT MODE
encoding [linefeed]}
| {LEGACY BINARY MODE [
endian][
CODE PAGE cp]}
| {LEGACY TEXT MODE [
endian] [
CODE PAGE cp] [
linefeed]} ...
Alternatives
1. ... BINARY MODE
2. ... TEXT MODE
3. ... LEGACY BINARY MODE
4. ... LEGACY TEXT MODE
Effect
These mandatory additions define whether the file is handled as a binary file or as a text file. By specifying LEGACY
, files can be written in the format that is expected by a non-
Unicode system, and files that have been created by a non-Unicode-system can be read. The
byte order or the
code page must be specified explicitly.
Alternative 1
... BINARY MODE
Effect
The addition IN BINARY MODE
opens the file as a binary file. When writing
to a binary file, the binary content of a data object is passed in unchanged form to the file. When reading from a binary file, the binary content of the file is passed in unchanged form to a data object.
Example
Opens a binary file for reads and writes. The binary data is created by converting a string to UTF-8.
DATA(utf8) =
cl_abap_conv_codepage=>create_out( )->convert( 'Blahblahblah ...' ).
DATA(dset) = 'test.dat'.
OPEN DATASET dset FOR OUTPUT IN BINARY MODE.
TRANSFER utf8 TO dset.
CLOSE DATASET dset.
...
CLEAR utf8.
OPEN DATASET dset FOR INPUT IN BINARY MODE
READ DATASET dset INTO utf8.
CLOSE DATASET dset.
cl_demo_output=>display(
cl_abap_conv_codepage=>create_in( )->convert( utf8 ) ).
DELETE DATASET dset.
Alternative 2
... TEXT MODE
Effect
The addition IN TEXT MODE
opens the file as a text file. Only the content of character-like data objects can be passed to text files and read from text files.
The addition encoding
defines how the characters are represented in the text file. When writing to a text file, the content
of a data object is converted to the representation entered after encoding
, and passed to the file. If the data type is character-like and
flat, any trailing blanks are cut off. In the data type string
, trailing blanks are not cut off.
The end-of-line selection of the relevant platform is applied to the passed data by default. When reading
from a text file, the content of the file is read until the next end-of-line selection, converted from
the format specified after ENCODING
into the current character format, and
passed to a data object. The end-of-line selection used is controlled using the addition linefeed
.
Example
Opens a text file for reads and writes. A line end marking is appended in every write in every
TRANSFER statement. Any reads are performed row by row. Compare the example for the addition
NO END OF LINE
of the statement TRANSFER
.
DATA(dset) = 'test.dat'.
OPEN DATASET dset FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
DO 5 TIMES.
TRANSFER 'Blah' TO dset.
ENDDO.
CLOSE DATASET dset.
...
DATA text TYPE string.
OPEN DATASET dset FOR INPUT IN TEXT MODE ENCODING UTF-8
SKIPPING BYTE-ORDER MARK.
DO.
READ DATASET dset INTO text.
IF sy-subrc <> 0.
EXIT.
ENDIF.
cl_demo_output=>write( text ).
ENDDO.
CLOSE DATASET dset.
cl_demo_output=>display( ).
DELETE DATASET dset.
Alternative 3
... LEGACY BINARY MODE
Effect
Opening a legacy file.
The addition IN LEGACY BINARY MODE
opens the file as a legacy binary file, where endian
can be used to specify the
byte order and CODE PAGE
can be used to specify the
code page that handle the content of the file.
Note
When a flat character-like field is written to the legacy binary files, the number of bytes written
to the file is the same as the number of characters in the source field. The field content can be influenced
by this when writing texts in Eastern Asian languages. It is therefore best to only write texts opened without the addition LEGACY
to text files.
Alternative 4
... LEGACY TEXT MODE
Effect
Opening a legacy file.
The addition IN LEGACY TEXT MODE
opens the file as a legacy text file, where
(in legacy binary files) endian
can be used to specify the byte order and
CODE PAGE can be used to specify the code page that handle the content of the file. The syntax and semantics of {BIG|LITTLE} ENDIAN
and CODE
PAGE cp are the same as in legacy binary files. The syntax and meaning of linefeed
are the same as for regular text files.
In contrast to legacy binary files, the trailing blanks are cut off when writing character-like
flat data objects to a legacy text file. Also, as in the case of a text file, an
end-of-line selection is appended to the passed
data by default. Unlike the text files opened by the addition IN TEXT MODE
,
there is no check on whether the data objects used in writing or reading are character-like. Also, the
LENGTH
additions of the statements READ DATASET
and TRANSFER
are used for counting. In legacy text files these additions count in bytes, and an text files they count in the units of a character represented in the memory.
Notes
- As is the case with legacy binary files, it is possible to access text files written in non-Unicode systems as legacy text files. In this case, the content is converted accordingly.
-
When writing to a flat character-like field in legacy text files, the maximum number of bytes that can
be written to the file is the maximum number of characters in the source field. The field content can
be influenced by this when writing texts in Eastern Asian languages. It is therefore best to only write texts opened without the addition
LEGACY
to text files.
Example
See the example for the addition CODE PAGE
.