Betriebsystemkommandos auf dem Applikationsserver

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:

  1. 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. 
  2. Tastatureingaben die das Programm erwartet müssen per Eingabeumlenkung mitgegeben werden, da andernfalls die Eingabe an der Konsole des Applikationsservers erwartet wird. 
  3. 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.
  • COMMAND 
der Systembefehl der ausgeführt werden soll.
  • TAB
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 )