Die Neptune Application Class
Bei der Application Class handelt es sich um eine ABAP Objects Klasse, welche die Logik der Applikation implementiert. Diese wird in den Application Settings des Neptune Application Designers festgelegt und repräsentiert das Model des Model - View - Control Patterns.
Voraussetzungen
Damit eine ABAP Objects Klasse als Neptune Application fungieren kann, muss sie das Interface /NEPTUNE/IF_NAD_SERVER implementieren. Gibt es Strukturen oder interne Tabellen, die später an UI Controls gebunden werden sollen, so müssen diese als public Attribute der Application Class deklariert sein. Die Datentypen, die für diese public Attribute verwendet werden, müssen entweder aus dem Dictionary Stammen oder lokal in der Klasse definiert werden.
Definieren der Application Class
Um eine Application Class zu definieren, öffnen Sie aus dem Neptune Application Designer den Class Builder oder rufen Sie die Transaktion SE24 auf. Wie oben beschrieben, muss hier das Interface /NEPTUNE/IF_NAD_SERVER implementiert werden.
Sobald Sie die Klasse aktiviert haben, sind die Methoden des Interfaces im Methodenreiter verfügbar. Welche Sie davon implementieren hängt von Ihrer Anwendung ab. Im Normalfall werden sie die SAPUI5 Bibliothek verwenden, weshalb es notwendig ist, mindestens die Methode /NEPTUNE/IF_NAD_SERVER~HANDLE_ON_AJAX zu implementieren. Diese ist dafür verantwortlich die Interaktions-Events des Nutzers zu verarbeiten, die von den UI Controls zur Laufzeit der Applikation ausgesandt werden.
Hintergrund
Zur Designzeit wird jedem User Interface (UI) Control im Application Designers eine AJAX ID zugewiesen. Wird zur Laufzeit eine Datenbindung getriggert, so werden die AJAX ID und sämtliche konfigurierte Attribute, die zum Backend geschickt werden sollen, an die implementierte HANDLE_ON_AJAX Methode der Application Class übergeben. Dementsprechend muss die Implementierung in der Lage sein relevante Attribute der Application Class zu verändern. Der Neptune HTTP-Request Handler wird anschließend automatisch die angeforderten Daten an die UI Controls schicken, die an die zugehörigen Klassenattribute gebunden sind.
Um die Ergebnisse von HANDLE_ON_AJAX zu verarbeiten sollte ihre Applikation die Eventhandler ajaxSuccess und ajaxError des UI Controls verwenden, dass den AJAX Request abgesetzt hat.
Haben Sie bereits eigene Neptune Anwendungen im Betrieb, welche die Application Class auf diese Weise implementiert haben oder interessieren Sie sich weiterführend für das Thema? In den Kommentaren freue ich mich auf Ihre Gedanken und Fragen.