
Der WorkProtect-Modus des SAP NetWeaver Portals stellt die Infrastruktur für den Umgang mit ungesicherten Daten bereit. Eine Anwendung wird als "Dirty" bezeichnet, wenn die eingegebenen Daten noch nicht gesichert wurden. Normalerweise würden die Daten verloren gehen, wenn der Benutzer zu einer anderen Anwendung navigiert, ohne die Daten vorher abgespeichert zu haben. Um dies zu verhindern, überwacht das Client Framework des Portals den aktuellen Status aller Anwendungen auf der Portalseite.
Beispiel-Popup für den WorkProtect-Modus
Dazu muss die Anwendung einen speziellen Status als Sicherheitskennzeichen ("Dirty"-Kennzeichen) pflegen, der das Portal darüber informiert, wenn ungesicherte Daten vorliegen. Diesen Status können Sie mit der Methode SET_APPLICATION_DIRTY_FLAG des Interfaces IF_WD_PORTAL_INTEGRATION setzen oder zurücksetzen (″TRUE″, ″FALSE″). Ist das "Dirty"-Kennzeichen auf ″TRUE″gesetzt, wird jeder Navigationsschritt automatisch in einem neuen Fenster ausgeführt. Die ungesicherten Daten im ursprünglichen Fenster bleiben dabei erhalten. So hat der Benutzer die Möglichkeit, in die ursprüngliche Anwendung zu wechseln und die Daten anschließend abzuspeichern.
Der folgende Quelltext veranschaulicht, wie Sie den "Dirty"-Status setzen können:
|
data L_COMPONENTCONTROLLER type ref to IG_COMPONENTCONTROLLER . data L_API_COMPONENTCONTROLLER type ref to IF_WD_COMPONENT. data L_PORTAL_MANAGER type ref to IF_WD_PORTAL_INTEGRATION. L_COMPONENTCONTROLLER = WD_THIS->GET_COMPONENTCONTROLLER_CTR( ). L_API_COMPONENTCONTROLLER = L_COMPONENTCONTROLLER->WD_GET_API( ). L_PORTAL_MANAGER = L_API_COMPONENTCONTROLLER->GET_PORTAL_MANAGER( ). call method L_PORTAL_MANAGER->SET_APPLICATION_DIRTY_FLAG exporting DIRTY_FLAG = TRUE | FALSE . |
Sie fügen das Coding in eine Controller-Methode einer Web-Dynpro-Component ein.
Web Dynpro unterstützt den WorkProtect-Modus auf drei unterschiedliche Arten (Methode SET_WORK_PROTECT_MODE im Interface IF_WD_PORTAL_INTEGRATION):
Mit diesem Wert wird der WorkProtect-Modus von der Web-Dynpro-Anwendung nicht benutzt. Wenn Sie innerhalb des Portals zu einer anderen Anwendung navigieren, gehen ungesicherte Daten verloren, auch wenn Sie das "Dirty-Kennzeichen" gesetzt haben.
Mit diesem Wert entscheidet die Web-Dynpro-Anwendung selbst, ob Daten vorliegen, die noch nicht gesichert wurden, die Anwendung also "Dirty" ist. Der "Dirty"-Status wird daher nur Server-seitig überwacht. Sie können mit diesem Wert nicht sicherstellen, dass keine der Daten verloren gehen, die noch nicht auf den Server übertragen wurden.
Mit diesem Wert überprüft zusätzlich der Client den "Dirty"-Status. Damit wird sichergestellt, dass keine Benutzereingaben verloren gehen, die noch nicht auf den Server übertragen wurden. Dies wird dadurch erreicht, dass der "Dirty"-Status der Anwendung im SAP Enterprise Portal gesetzt wird, sobald der Benutzer Daten eingegeben hat.
Während der Laufzeit einer Web-Dynpro-Anwendung können die erwähnten Modi beliebig oft geändert werden. Beispielsweise können Sie den Modus ändern, wenn der Benutzer von einer View zu einer anderen View navigieren möchte. Denn für die eine View kann es Sinn machen, dass Daten, die in ein Eingabefeld eingetragen werden, gesichert werden sollen, dann übergeben Sie den Wert ″BOTH″ oder APPLICATION_ONLY. Für die andere View muss dieser Sicherungsmechanismus nicht unbedingt wirken, dann übergeben Sie den Wert ″NONE″.
Der folgende Quelltext veranschaulicht das Setzen des WorkProtect-Modus:
|
data L_COMPONENTCONTROLLER type ref to IG_COMPONENTCONTROLLER . data L_API_COMPONENTCONTROLLER type ref to IF_WD_COMPONENT. data L_PORTAL_MANAGER type ref to IF_WD_PORTAL_INTEGRATION. L_COMPONENTCONTROLLER = WD_THIS->GET_COMPONENTCONTROLLER_CTR( ). L_API_COMPONENTCONTROLLER = L_COMPONENTCONTROLLER->WD_GET_API( ). L_PORTAL_MANAGER = L_API_COMPONENTCONTROLLER->GET_PORTAL_MANAGER( ). call method L_PORTAL_MANAGER->SET_WORK_PROTECT_MODE exporting MODE = NONE | APPLICATION_ONLY | BOTH . |
Beachten Sie in Zusammenhang mit derCLOSE_WINDOW-Funktionalität Folgendes:
CLOSE_WINDOW überstimmt im Portal ggf. den WorkProtect-Modus, d.h. es gibt bei CLOSE_WINDOW=TRUE kein WorkProtect-Popup (You have unsaved data oder eine ähnliche Meldung).
Ein Beispiel finden Sie im System in der Web-Dynpro-Applikation WDR_TEST_PORTAL_WORKPROTECT.