
Stateful oder stateless programmieren?
Wie schon unter
Stateless und Stateful Modell beschrieben, wird von dem zugrundeliegenden Framework sowohl der stateful (Benutzerkontext im SAP-System wird gehalten) als auch der stateless (Benutzerkontext wird für jeden Request neu auf- und wieder abgebaut) Modus unterstützt.Die folgende Grafik stellt diesen Sachverhalt dar.

Im stateless Fall sieht der Verlauf so aus:

Hier deuten die Zahlen an, welcher Benutzer gerade eine Aktion durchführt. Die Reihenfolge ist aufgrund des Zeitverlaufs klar.
Wann stateful, wann nicht?
Beim Entwickeln einer BSP-Applikation müssen die Vor- und Nachteile von stateful und stateless gegeneinander abgewogen werden.
Soll ein Status (etwa die Objekte in einem Einkaufskorb) über mehrere Seiten gehalten werden, kann dies durch den stateful Modus oder die Verwendung von Cookies auf der Clientseite erreicht werden. Wird mit stateful Modus gearbeitet, so muss nicht über die ganze Ablauflogik der BSP-Applikation der Benutzerkontext gehalten werden. Es ist auch denkbar, die stateful Arbeitsweise nur für die Zeitspanne festzulegen, wo der Zustand gehalten wird. Es kann jederzeit wieder durch das Kommando
RUNTIME->KEEP_CONTEXT = 0 auf stateless umgeschaltet werden.Für Applikationen, die keine Statusinformationen brauchen, ist stateless (Default) sinnvoller, da nicht unnötig Ressourcen im SAP-System belegt werden.
Wie wird der Modus eingestellt?
Bei der Erstellung einer BSP-Applikation kann dies durch Zugriff auf das
runtime-Objekt dynamisch oder für die ganze BSP-Applikation in der Entwicklungumgebung eingestellt werden.Dies ist im Abschnitt
Einstellung als stateful oder stateless beschrieben.Stateful bedeutet hier, dass das
Objekt application, das durch die Anwendungsklasse (siehe auch Applikationsklasse einer BSP-Applikation) festgelegt ist, gehalten wird. Im stateless Modus wird das Objekt zurückgesetzt.Dies soll anhand einer kleinen Beispielapplikation demonstriert werden: