R/3 ermöglicht den Zugriff auf Betriebssystemkommandos aus den
eigenen ABAP-Entwicklungen heraus. Hierzu kann der Systemcall SYSTEM
verwendet werden.
Allerdings sind hierbei einige Spielregeln zu beachten:
-
Sinnvoll sind hier im allgemeinen nur Kommandos die eine reine Textausgabe
haben. Die Ausgabe wird über eine stdout Umlenkung abgefangen und
in einer internen Tabelle gespeicher.
-
Tastatureingaben die das Programm erwartet müssen per Eingabeumlenkung
mitgegeben werden, da andernfalls die Eingabe an der Konsole des Applikationsservers
erwartet wird.
-
Der Systemcall kann nicht zurückkehren solange das Betriebssystemkommando
nicht beendet ist, die Folge währe das unser Programm hängt.
( z.B. wenn wir einen Editor aufrufen. )
Dieses Beispiel ist ein Report, der den auszuführenden Befehl
im Selektionsbildschirm entgegennimmt und die Ausgabe des Befehls als Liste
auf den Bildschirm anzeigt.
Der Eingabeparameter kommando
muß in der Lage sein Kleinbuchstaben anzunehmen da ein Betriebssystem
wie z.B. UNIX einen Unterschied zwischen Klein- und Großbuchstaben
macht.
Die interne Tabelle itab sollte 80 Zeichen
breit sein, da dies die standart Bildschirmbreite für ALPHA-Terminals
ist.
Der Systemcall SYSTEM hat zwei Parameter
die beim Aufruf übergeben werden.
|
der Systembefehl der ausgeführt werden soll. |
|
die interne Tabelle die gefüllt werden soll. Um eine Referenz
auf die interne Tabelle übergeben zu können benötigen wir
das verdeckte Tabellenfeld *sys* das jede interne Tabelle besitzt. |
Abhängig von dem Betriebssystem das auf dem Applikationsserver
läuft können Sie den Report testen indem Sie nach dem starten
des Reports einfach einen Betriebssystembefehl eingeben und den Report
ausführen.
-
UNIX:
-
ls -ali
-
banner hello world
-
ps
-
NT:
-
dir
-
echo hello world
-
tlist ( Nur wenn die Tools der technischen Referenz installiert sind )
|