Die wichtigsten Systemvariablen in ABAP

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

AttributTypLängeBeschreibung
sy-subrci10Statuscode des letzten Befehls. 0 für erfolgreiche Ausführung
sy-datlod8Lokales Datum des SAP-Benutzers
sy-datumd8Systemdatum des SAP-Applikationsservers
sy-hostc32Name des SAP-Applikationsservers
sy-indexi10Index des Schleifendurchlaufs
sy-languc1Sprache des SAP-Benutzers
sy-mandtc3Mandant
sy-tcodec20Transaktionscode
sy-uzeitt6Uhrzeit des SAP-Anwendungsservers
sy-unamec12SAP-Benutzername
sy-lsindi10Index der Listenebene
sy-tabixi10Index der letzten (gelesenen) Zeile einer internen Tabelle
sy-timlot6Lokale 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.

WertBeschreibung
0Erfolgreiche Ausführung
4Fehler
8Fehler (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.

Struktur SYST enthält alle Systemvariablen

Ü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“.

Obsolete Systemvariablen in der Struktur SYST

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.

Statische Methoden der Klasse CL_ABAP_SYST

Über den Autor

Andreas Geiger

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.

Mehr zu ERP UP

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.

Schreibe einen Kommentar