OPEN DATASET - os_additions
Short Reference
ABAP Syntax ... [TYPE attr]
[FILTER opcom] ... .
ABAP_ADDITIONS:
1 ... TYPE attr
2 ... FILTER opcom
What does it do? These additions can be used to make operating
system-specific settings and set operating system statements.
ABAP_ADDITION_1 ... TYPE attr
What does it do? The behavior of this addition depends on the operating
system of the application server .
If the operating system is not an MS Windows operating system, a
character-like field can be specified for attr that contains
operating system-specific parameters for the file that is to be opened.
These parameters are passed to the operating system of the application
server unchanged, and without being checked for correctness.
If the operating system is an MS Windows operating system, and
the file is opened as a text file or as a
legacy text file and the addition
WITH LINEFEED is not used, the
content of attr controls the end-of-line marking of the text
file:
If attr contains the value "NT" , the end-of-line is
marked by "CRLF" .
If attr contains the value "UNIX" , the end-of-line is
marked by "LF" .
All other values of attr are ignored in MS Windows
operating systems, and the end-of-line marking is opened in the same way
as described in the addition WITH
LINEFEED .
Latest notes: Instead of specifying the values "UNIX" or "NT"
after TYPE , we recommend using the addition
WITH LINEFEED . If it is used,
the values "UNIX" or "NT" cannot be specified.
Example ABAP Coding Creating a file test.dat . The properties entered
under TYPE are specific for the operating system IBM i5/OS
(previously OS/400 ).
OPEN DATASET 'test.dat'
TYPE 'lrecl=80, blksize=8000, recfm=FB'
FOR OUTPUT IN TEXT MODE
ENCODING DEFAULT
WITH SMART LINEFEED.
ABAP_ADDITION_2 ... FILTER opcom
What does it do? This addition can be used if the operating system of the
application server supports pipes (Unix and MS Windows). A
character-like field can be specified for opcom , which contains
an operating system statement that corresponds to the appropriate
command-level syntax.
When the statement OPEN DATASET is
executed, a process is started in the operating system for the specified
statement. When the file is opened for reading, a channel (pipe) is
linked with STDOUT of the process, from which the data is read
during file reading. The file itself is linked with STDIN of the
process. When the file is opened for writing, a channel (pipe) is linked
to STDIN of the process, to which data is passed when writing.
The output of the process is diverted to this file.
The addition FILTER must not be used together with the addition
AT POSITION or for the access
type FOR UPDATE .
Latest notes: When working with pipes, it must be ensured that the pipe
only exists in the current work process. If a change of
work process takes place during the time
that the file is open, the pipe is lost and an attempted read or write
access raises a handleable exception of the class
CX_SY_PIPE_REOPEN
.
Security Note
When specified dynamically, opcom is a dynamic programming
technique and can present a serious security risk if not used correctly.
If the content of opcom is used in a program from an external
source, it must first be checked thoroughly. See
System Command Injections .
Example ABAP Coding On a Unix platform, a compress filter is started
for writing, and an uncompress filter is started for reading.
When the file is accessed for writing the data is compressed, and when
it is accessed for reading, the data is decompressed.
DATA file TYPE string VALUE `/usr/test.Z`.
OPEN DATASET file FOR OUTPUT IN BINARY MODE
FILTER 'compress'.
...
CLOSE DATASET file.
OPEN DATASET file FOR INPUT IN BINARY MODE
FILTER 'uncompress'.
...
CLOSE DATASET file.
Documentation extract taken from SAP system, � Copyright SAP AG. All rights reserved