Die Systemvariablen werden von der ABAP-Laufzeitumgebung gesetzt und werden in ABAP-Programmen dafür verwendet, um Systemzustände abzufragen. Generell sollte man auf Systemfelder nur lesend zugreifen. Nur in wenigen Fällen dürfen Systemfelder in ABAP-Programmen überschrieben werden, um das Systemverhalten zu steuern.
Die Systemstruktur SY bzw. SYST wird sehr häufig in ABAP-Programmen verwendet. Denn hier werden zur Laufzeit wichtige Informationen gespeichert. Das Feld sy-subrc speichert zur Laufzeit den Erfolg einer Ausführung. So kann man einfach und leicht prüfen, ob z.B. eine Selektion erfolgreich verlaufen ist.
Bei READ TABLE muss man prüfen, ob das Feldsymbol zugewiesen ist, da ansonsten eine Ausnahme (Exception) geworfen wird, die das Programm abstürzen lässt. Diese Prüfung führt man mit der Systemvariable sy-subrc durch. Ist diese 0, war die Abfrage erfolgreich und man kann auf das Feldsymbol zugreifen.
READ TABLE lt_test WITH KEY id = '1' ASSIGNING <ls_test>. IF sy-subrc = 0. " Zugriff auf das Feldsymbol <ls_test> ENDIF.
Die wichtigsten Systemvariablen in ABAP
Attribut | Typ | Länge | Beschreibung |
---|---|---|---|
sy-subrc | i | 10 | Statuscode des letzten Befehls. 0 für erfolgreiche Ausführung |
sy-datlo | d | 8 | Lokales Datum des SAP-Benutzers |
sy-datum | d | 8 | Systemdatum des SAP-Applikationsservers |
sy-host | c | 32 | Name des SAP-Applikationsservers |
sy-index | i | 10 | Index des Schleifendurchlaufs |
sy-langu | c | 1 | Sprache des SAP-Benutzers |
sy-mandt | c | 3 | Mandant |
sy-tcode | c | 20 | Transaktionscode |
sy-uzeit | t | 6 | Uhrzeit des SAP-Anwendungsservers |
sy-uname | c | 12 | SAP-Benutzername |
sy-lsind | i | 10 | Index der Listenebene |
sy-tabix | i | 10 | Index der letzten (gelesenen) Zeile einer internen Tabelle |
sy-timlo | t | 6 | Lokale Uhrzeit des SAP-Benutzers |
sy-subrc
Die Systemvariable sy-subrc ist eines der wichtigsten Systemvariablen. Sie gibt an, ob eine ABAP-Anweisung erfolgreich ausgeführt wurde. Dabei kann sie 0, 4, 8 oder andere Zahlenwerte annehmen. Dieser Wert wird verwendet, um den Status der Ausführung einer ABAP-Anweisung zu bestimmen. Wenn sy-subrc 0 ist, wurde die ABAP-Anweisung erfolgreich ausgeführt. Ist der Wert ungleich 0, dann hat die Anweisung einen Fehler oder eine Warnung ausgelöst. Normalerweise bedeuten 4 und 8 einen Fehler. Es hängt von der Anweisung ab.
Je nachdem, welche Anweisung sy-subrc gesetzt hat, kann aus diesem Wert die Ursache eines Fehlers abgeleitet werden. Generell muss man den Wert abhängig von der Anweisung betrachten.
Wert | Beschreibung |
---|---|
0 | Erfolgreiche Ausführung |
4 | Fehler |
8 | Fehler (Falsche Abfrage) |
Man kann die Bedeutung dieser Systemvariable auch daran erkennen, dass der Wert von sy-subrc in einem eigenen Feld im ABAP Debugger angezeigt wird.
sy-datlo
Hierbei handelt es sich um das lokale Datum eines SAP-Benutzers in der Benutzerzeitzone. Die Datumsdarstellung kann in den Benutzerparametern (Transaktion SU3) gepflegt werden.
sy-datum
Es ist das lokale Datum des ABAP-Applikationsserver in der Systemzeitzone.
sy-host
Mit dieser Systemvariable wird der Netzwerkname des Computers, auf dem der aktuelle Applikationsserver instanziiert wird gespeichert.
sy-index
In der ABAP-Programmierung wird man häufiger sy-index verwenden. Dadurch wird der Schleifenindex angezeigt. In einer DO-/WHILE-Schleife wird die Anzahl der bisherigen Schleifendurchläufe inklusive des aktuellen Durchlaufs gespeichert.
sy-langu
Die Anmeldesprache des SAP-Benutzers wird als einstelliger Sprachenschlüssel im Systemfeld sy-langu gehalten. Durch die ABAP-Anweisung SET LOCALE LANGUAGE kann man die Anmeldesprache setzen. Beispiel: SET LOCALE LANGUAGE ‚D‘. Dadurch wird sy-langu auf Deutsch gesetzt.
sy-mandt
Den Mandanten, indem das ABAP-Programm ausgeführt wird, kann man mit der Systemvariable sy-mandt ermitteln. So kann man bspw. prüfen, in welchem Mandanten sich ein SAP-Benutzer angemeldet hat.
sy-tcode
Der aktuelle Transaktionscode wird in der Systemvariable sy-tcode gespeichert. In der Hintergrundverarbeitung ist diese Variable leer, es sei denn während der Hintergrundverarbeitung wurde eine Transaktion aufgerufen.
sy-uzeit
Die Systemuhrzeit, also die lokale Zeit des ABAP-Applikationsservers in der Systemzeitzone, wird in sy-uzeit gespeichert.
sy-uname
Man kann mit sy-uname den SAP-Anmeldenamen ermitteln. In logischen Ausdrücken sollte man diese Abfrage stets gut überlegen und hinterfragen. Es kann als Sicherheitsrisiko eingestuft werden. So könnte man bspw. Berechtigungsprüfungen umgehen.
Ein sinnvoller Anwendungsfall ist die Überprüfung von RFC- oder Hintergrundbenutzer. Unter Umständen kann das Programm in solchen Fällen anders reagieren.
sy-lsind
Die Stufe der Liste, die gerade erstellt wird, wird mit sy-lsind ausgedrückt. Bei einer Grundliste wird der Wert 0 und bei Verzweigungslisten größer 0 gesetzt. Bei jedem interaktiven Listenereignis wird die Systemvariable automatisch um 1 erhöht. Diese Systemvariable darf geändert werden, damit man zwischen Verzweigungslisten navigieren kann. Jedoch wird eine Änderung erst am Ende eines Listenereignisses berücksichtigt.
sy-tabix
Die Anzahl an Zeilen in einer internen Tabelle werden in sy-tabix gespeichert. Sie enthält die zuletzt über einen primären oder sekundären Tabellenindex angesprochene Zeile. Bei einer Hash-Tabelle ist sy-tabix gleich 0.
Sy-tabix ist ein Tabellenindex und sy-index ein Schleifenindex.
sy-timlo
Die Systemvariable sy-timlo zeigt die Benutzerzeit an. Dabei handelt es sich um die lokale Uhrzeit des SAP-Benutzers in seiner Benutzerzeitzone.
Übersicht über alle Systemvariablen in ABAP
Im ABAP Dictionary (Transaktion SE11) kannst Du über „Datentyp > SYST“ alle Attribute der Struktur SYST einfach und bequem anzeigen lassen.

Über die Kurzbeschreibung erfährst Du außerdem, welcher Wert in der Systemvariable gespeichert wird und welche Systemvariablen obsolet sind.
Obsolete Systemvariablen
Es gibt eine Reihe von obsoleten Systemvariablen. Diese wurden vom Übergang von SAP R/2 zu R/3 übernommen und werden nicht mehr verwendet. Diese Systemvariablen sollten deshalb nicht mehr verwendet werden. Obsolete Systemvariablen enthalten die Kurzbeschreibung „ABAP-Systemfeld: obsolet“.

Systemklasse CL_ABAP_SYST
Die Klasse CL_ABAP_SYST enthält zahlreiche statische Methoden, die die sichere Ermittlung wichtiger Systemvariablen gewährleisten. So kann man sicherstellen, dass eine Systemvariable nicht fälschlicherweise im ABAP-Programm geändert wurde. Für die Verwendung der Variable sy-dbsys wird die Klasse CL_DB_SYS empfohlen.

Über den Autor
Mein Name ist Andreas Geiger und ich bin ein erfahrener Senior SAP Berater. Mit mehr als 10 Jahren Berufserfahrung habe ich mehrere SAP-Projekte erfolgreich abgeschlossen und umfangreiche Kenntnisse in verschiedenen Bereichen wie SAP FI, SAP MM und ABAP erworben. Nun möchte ich mein Wissen mit Dir teilen, um Dir einen Mehrwert zu bieten und Dich bei Deiner täglichen Arbeit mit dem SAP-System zu unterstützen.
ERP UP unterstützen
Wenn Du mit ERP UP zufrieden bist, kannst Du mich gerne unterstützen. Dabei gibt es unzählige Möglichkeiten, wie Du mich einfach und schnell unterstützen kannst. Wie Du genau ERP UP unterstützen kannst, erfährst Du hier. Vielen Dank.