ABAP Keyword Documentation → ABAP - Reference → Processing External Data → ABAP File Interface → Statements for the ABAP File Interface → OPEN DATASET → OPEN DATASET - mode
OPEN DATASET - WITH LINEFEED
Other versions: 7.31 | 7.40 | 7.54
Syntax
... WITH { NATIVE
| SMART
| UNIX
| WINDOWS } LINEFEED ...
Alternatives
1. ... WITH NATIVE LINEFEED
2. ... WITH SMART LINEFEED
3. ... WITH UNIX LINEFEED
4. ... WITH WINDOWS LINEFEED
Effect
These additions determine which line end marker is used for
text files or
legacy text files. If these additions are used, the
profile parameter
abap/NTfmode is ignored. The two values "UNIX"
or "NT" cannot both be specified in the addition TYPE
at the same time.
If these additions are not used, the line end marker is determined as follows, depending on the operating system of the current application server:
- The line end marker for Unix is "LF". On Unix, OS/390, and IBM i5/OS (previously known as OS/400), only "LF" is used for reading and writing.
-
The line end marker for MS Windows is "CRLF". On MS Windows, however, the values of the
profile parameter
abap/NTfmode can also be used to specify whether new files are handled
according to Unix conventions or Windows conventions. If the profile parameter has the value "b", the
Unix line end marker "LF" is used. If the profile parameter has the value
"t" or is initial, the Windows line end marker "CRLF" is used. The setting
in the profile parameter can be overridden with the addition
TYPE
and the value "UNIX" or "NT". If an existing file is opened without the additionTYPE
, this file is searched for the first line end marker ("LF" or "CRLF"), and this is used for the whole file. If no line end marker is found, the profile parameter is used. This applies particularly if an existing file is completely overwritten withFOR OUTPUT
.
If an addition WITH NATIVE|SMART|UNIX|WINDOWS LINEFEED
is used, this setting
can be changed for the open file using the statement
SET DATASET. If neither of the additions is used, the line end marker cannot be changed using SET DATASET
either.
Notes
-
Without the use of an addition
WITH LINEFEED
, the line end marker is dependent on various implicit factors such as the operating system of the application server, a profile parameter, and line end markings that are already used. For this reason, the explicit use of WITH LINEFEED is recommended, which renders the use of the additionTYPE
for setting the line end marker obsolete. -
The line end marker that is currently used can be determined for every open file using
GET DATASET
.
Alternative 1
... WITH NATIVE LINEFEED
Effect
This addition defines the line end marker independently of the access type in accordance with the operating system of the application server, in other words "LF" for Unix, OS/390, and IBM i5/OS (previously known as OS/400), and "CRLF" for MS Windows.
The line end marker is interpreted in accordance with the current code page. If a code page is specified explicitly using the addition CODE PAGE, the control characters of the line end marker must be available or be written according to this code page.
Note
The addition WITH NATIVE LINEFEED
is intended for editing files on an application
server that can also be accessed by other means. The addition receives the appropriate line end marker without the program needing to know the operating system.
Alternative 2
... WITH SMART LINEFEED
Effect
This addition depends on the access type:
-
In files that are opened for reading using
FOR INPUT
, both "LF" and "CRLF" are interpreted as a line end marker. When opening an EBCDIC file with the additionCODEPAGE
, the corresponding ASCII control characters are recognized alongside the "LF", "CRLF", and EBCDIC control characters. In addition, the EBCDIC control characters "NL" (line separator) is also interpreted as a line end marker. -
In files opened for appending or changing with
FOR APPENDING
or FOR UPDATE, the program searches for a line end marker that is already used in the file. The end of the file is identified first. If no line end marker is found here, a number of characters at the beginning is analyzed. If a line end marker is found, this is used when writing to the file. This is also affected by the addition CODE PAGE. For example, ASCII line end markers are recognized and used in a file opened with EBCDIC, but not the other way round. If no line end marker is found or no search is possible (for example, if the file is opened with the additionFILTER
), the line end marker is defined in accordance with the operating system of the application server, as with the additionWITH NATIVE LINEFEED
. -
In files opened for writing using
FOR OUTPUT
, the line end marker is determined in accordance with the operating system of the application server, as with the additionWITH NATIVE LINEFEED
.
Note
The addition WITH SMART LINEFEED
is intended for the generic editing of files
in heterogeneous environments. The line end marker is recognized and set for different formats. Using this addition is the best solution for most application cases.
Alternative 3
... WITH UNIX LINEFEED
Effect
The line end marker is set to "LF" regardless of the access type and operating system of the application server.
The line end marker is interpreted in accordance with the current code page. If a code page is specified explicitly using the addition CODE PAGE, the control character for the line end marker must be available or be written according to this code page.
Note
The addition WITH UNIX LINEFEED
is intended for editing Unix files in which
the specific line end markers are to be retained, even if the operating system of the current application server is MS Windows.
Alternative 4
... WITH WINDOWS LINEFEED
Effect
The line end marker is set to "CRLF" regardless of the access type and operating system of the application server.
The line end marker is interpreted in accordance with the current code page. If a code page is specified explicitly using the addition CODE PAGE, the control character for the line end marker must be available or be written according to this code page.
Note
The addition WITH WINDOWS LINEFEED
is intended for use with MS Windows files
in which the specific line end marker is to be retained, even if the operating system of the current application server is Unix, OS/390, or IBM i5/OS (previously known as OS/400).