Ansicht
Dokumentation

CL_PRP_BSP_C_RMW_LIST - PRP BSP Applikation: Worklist Details

CL_PRP_BSP_C_RMW_LIST - PRP BSP Applikation: Worklist Details

ABAP Short Reference   CL_GUI_FRONTEND_SERVICES - Frontend Services  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

Funktionalität

Diese Controller-Klasse bildet mit der BSP-View roleGeneral.bsp eine UI-Komponente und ermöglicht das Erfassung, Ändern und Löschen der allgemeinen Projektrolleninformatien wie Projektrollenart, Aufwand und Zeitraum. Der Controller kann insgesamt 3 BSP-Views aufrufen:

roleGeneral.bsp - Rollendefinition/Detailansicht (mv_staffingview initial, lv_layout = 'DETAIL')

roleGeneralList.bsp - Rollendefinition/Listenansicht (mv_staffingview initial, lv_layout = 'ROLELIST')

roleGeneralSearch.bsp - Suchkriterien für Ressourcensuche (mv_staffingview = 'X', lv_layout = 'DETAIL')

Wird der Controller über die BSP-View staffDetail.bsp (Ressourcensuche) aufgerufen, wird der Parameter mv_staffingview = 'X' übergeben, wird er über die BSP-View roleDetail.bsp (Projektrollendefinition) aufgerufen, ist der Parameter initial.

Methodenliste DO_INIT (Redefinition)

Diese Methode wird nur ein mal beim ersten Aufruf der Klasse CL_PRP_BSP_C_ROLEGENERAL aufgerufen. Es werden dort die die Anzahl der maximalen Suchergebnisse aus der CL_PRP_SETTINGS Klasse geladen.

DO_REQUEST (Redefinition)

Diese Methode ist für den Aufbau der BSP-View verantwortlich. Es werden die Methoden GET_ROLE_DATA (Detailansicht) oder GET_ROLE_LIST_DATA (Listenansicht) aufgerufen, welche die anzuzeigenden Daten aufbereitet. Dieses geschieht in der Detailansicht, wenn die Member-Variable "mv_init" gesetzt ist. "mv_init" ist beim ersten Aufruf der Klasse und wenn sich aktuelle Rolle ändert (siehe Methode ON_ACTIVE_ROLE_CHANGED), gesetzt. Hier wird auch die Methode SHOW_TASK_ASSIGN aufgerufen.

Wird der Controller aus der Projektrollendefinition aufgerufen, und sind der Rolle bereits Aufgaben zugeordnet, werden die Informationen der Aufgaben auf der Oberfläche dargestellt. Die aus den Aufgabenzuordnung resultierenden Zeitintervalle können für die Rolle übernommen werden (siehe Methode TAKE_OVER_TASK_SETTINGS).

Desweiteren werden für die Listenansicht die Layaoutinformationen der Tabelle geladen (siehe Methode GET_TABLE_SETTINGS).

TAKE_OVER_TASK_SETTINGS

In dieser Methode wird das durch die zugeordneten Aufgaben ermittelte Zeitintervall der Projektrolle zugeordnet.

DO_FINISH_INPUT (Redefinition)

Hier wird dieser Controller vom Input - Processing abgemeldet, um nur dann die eingehenden Daten zu verarbeiten, wenn die korrespondierende BSP-View auch wirklich sichtbar ist. Würde man den Controller nicht abmelden, würden jedes mal die Methoden DO_HANDLE_DATA, DO_HANDLE_EVENT und DO_FINISH_INPUT aufgerufen. Es wird die Methode ACTUALIZE_ROLE_NAVIGATOR aufgerufen.

DO_HANDLE_DATA (Redefinition)

In dieser Methode werden die Formular-Felder der allgemeine Rolleninformatien aus der BSP-Seite ausgelesen. Wird der Controller für die Resourcensuche aufgerufen, werden zudem die Felder mit den Suchkriterien ausgelesen.

Bevor die Daten der Rolle mit der Methode SET_DATA_EXT der Klasse CL_DPR_PARTICIPANT abgespeichert werden, werden alle Rolleninformationen mit der Methode GET_DATA_EXT geladen. Das ist notwendig, weil immer ein ganzer Satz von Daten gespeichert wird, und die Formfelder nicht alle Daten des Satzes zurückgeben.

Wenn das Feld 'Bezeichnung' nicht gefüllt ist, wird dafür die Projektrollenart (z.B. Projektleiter) abgespeichert. Dazu müssen erneut die Methoden SET_DATA_EXT und GET_DATA_EXTder Klasse CL_DPR_PARTICIPANT aufgerufen werden, weil erst nach dem ersten SET_DATA_EXT die Übersetzung der Projektrollenart in der aktuellen Sprache vorhanden ist.

Die eignentliche Verarbeitung der Daten geschiet in der Untermethode DO_HANDLE_DATA_SUB. Diese wird im Falle der Detailansicht für die aktuelle Rolle aufgerufen und im Falle der Listenansicht für jede Roller der Liste, welche gerade in der Ansicht dargestellt wird.

DO_HANDLE_EVENT

Hier wird das Ereignis 'clickTakeOver' verarbeitet. Wenn vonn bereits zugeordneten Aufgaben ein Zeitintervall vorgegeben ist, kann dieses für die Projektrollendefinition übernommen werden. Die eigentliche Verarbeitung findet in der Methode TAKE_OVER_TASK_SETTINGS statt.

Das auf der Oberfläche ausgelöste Ereignis Projektrollenart-Wechsel wird nicht verarbeitet. Es wird lediglich ausgelöst, um die Seite zu aktualisieren. Es gibt Projektrollenarten, die nich WFM-relevant sind. Dann wird das Umschalten in die Resourcensuche verhindert.

Ein weiteres Ereignis ruft in der Listenansicht den Editor der Tabellenlayouteinstellungen auf. Die Einstellungen werden über den Kontroller CL_PRP_TABLE_SETTINGS verwaltet. Für weitere Details siehe in der dortigen Klassendokumentation.

SHOW_TASK_ASSIGN

Wir der Controller aus der Projektrollendefinition aufgerufen, und sind der Rolle bereits Aufgaben zugeordnet, werden hier die Aufgaben-Infos geladen.

GET_PROJECTROLES

Hier werden die möglichen Projektrollenarten des Projekttyps geladen. Wenn der Projekttyp während der Projektplanung gewechselt wird, kann es sein, dass die Projektrollenart der aktuellen Rolle nicht in der Liste der Projektrollenarten ist. Diese wird dann hinzugefügt.

Die Tabelle wird auch für die Suche nach Projektrollenarten dubliziert und als Membervariable im Controller gehalten. Die gültigen Projektrollenarten werden in der Applikationsklasse CL_PRP_BSP_APPLICATION gehalten.

GET_ROLE_DATA

Hier werden die Rollendaten der aktuellen Rolle (Zeitraum, Projektrolle, Bezeichnung, Aufwand, Beschreibung und die Projektrollentypen) geladen. Die Methode wird nur aufgerufen, wenn mv_init gesetzt ist und wenn die BSP-Seite in der Detailansicht dargestellt werden soll. mv_init ist gesetzt, wenn die Klasse das erste mal aufgerufen wird und wenn die aktuelle Rolle gewechselt wird (siehe Methode ON_ACTIVE_ROLE_CHANGED).

GET_ROLE_LIST_DATA

Hier werden die Rollendaten aller Rollen (Zeitraum, Projektrolle, Bezeichnung, Aufwand, Beschreibung und die Projektrollentypen) geladen. Diese Daten sind nur in der Listenansicht der View nötig.

ON_ACTIVE_ROLE_CHANGED (Ereignisbehandler)

Die Methode ist an das Ereignis ACTIVE_ROLE_CHANGED der Klasse CL_PRP_BSP_C_ROLENAVIGATOR angemeldet und wird ausgelöst, wenn sich die aktuelle Rolle geändert hat. Die Membervariable mv_init wird neu gesetzt, damit in der Methode GET_ROLE_DATA die Rollendaten wieder neu geladen werden müssen. Die Methode ON_STAFFING_SEARCH_STARTED wird aufgerufen.

ON_STAFFING_SEARCH_STARTED (Ereignisbehandler)

Behandlermethode des Ereignisses STAFFING_SEARCH_STARTED der Klasse CL_PRP_BSP_APPLICATION. Wird ausgelöst, wenn die Resourcensuche gestartet wird. Es wird die Methode FILL_SEARCH_ENGINE aufgerufen.

ON_STAFFING_VIEW_STARTED (Ereignisbehandler)

Behandlermethode des Ereignisses STAFFING_VIEW_STARTED der Klasse CL_PRP_BSP_APPLICATION. Wird ausgelöst, wenn dieser Controller aus der Resourcensuche aufgerufen wird. Es wird die Methode FILL_SEARCH_ENGINE aufgerufen.

ACTUALIZE_ROLE_NAVIGATOR

Hier wird das Ereignis ACTUALIZE_ROLE_NAVIGATOR der Klasse CL_PRP_BSP_APPLICATION abgefeuert, welches von der Klasse CL_PRP_BSP_C_ROLENAVIGATOR verarbeitet wird, um das Rollenauswahlmenu zu aktualisieren.

RAISE_CRITERIA_DEFINED

Dieses Methode löst das Ereignis RAISE_CRITERIA aus. Sie wird aus der Methode DO_HANDLE_DATA und aus der Behandlermethode ON_STAFFING_VIEW_STARTED aufgerufen. Dieses Ereignis wird gefeuert, wenn sich Suchkriterien auf dem Tabreiter 'Allgemeines' geändert haben.

FILL_SEARCH_ENGINE

Hier werden die Eingabefelder an den Such Manager (CL_PRP_SEARCH_MANAGEMENT) übergeben.

LAUNCH_MESSAGE

Diese Methode reichert die Fehlermeldungen an und schreibt sie in das Fehlerprotokoll. Es wird das Datum und die Anzahl des Aufwandes überprüft.

GET_TABLE_SETTINGS

Die Tabellendarstellung der Listenansicht wird den lokalen benutzerabhängigen Daten entnommen. Ist die Version der abgelegten Daten älter als die des Kontrollers oder weisen die Daten Fehler auf, so werden Standardeistellungen gesetzt.

ON_TABLE_SETTINGS_CHANGED

Die Tabellendarstellung der Listenansicht wurde im Unterkontroller tableSettings modifiziert. Die resultierende Darstellung wird im Stringformat über ein Ereignis and Kontroller mitgeteilt und in den lokalen benutzerabhängigen Daten abgespeichert.

ON_PERIODIC_RULE_CHANGED

Eine zur Rolle zugehörige periodische Zeitbeschreibung wurde im Unterkontroller rolePeriodicRules modifiziert. Die resultierende Regel ID wird über ein Ereignis mitgeteilt und mit der Rolle gesichert.

SET_SELECTED_ROW

Ist in der Listenansicht für die Selektion/Hervorhebung einer Zeile/Rolle der Liste zuständig. Die Roller der selektierten Zeile wird zur aktiven Rolle.

SORT_DATA

Ist in der Listenansicht für die Sortierung der Tabelle/Liste nach einzelnen Feldern zuständig.

DO_HANDLE_DATA_SUB

Subroutine der Methode DO_HANDLE_DATA. Speichert die eingegebenen Daten für eine Rolle ab. Im Falle der Listenansicht wird diese Methode für jede Zeile/Rolle der Liste ausgeführt. Im Falle der Ressourcensuche werden die Daten nur temporär gehalten.

SET_TRAY_PARAMETER

Setzen der Trayparameter (offen / geschlossen)

GET_TRAY_PARAMETER

Holen der Trayparameter (offen / geschlossen)

Beziehungen

Beispiel

Hinweise

Weiterführende Informationen

Austausch geänderter Seiteninhalte

Der Mechanismus zum Austausch geänderter Seiteninhalte (im Dokument "Technical UI-Design" als "Differential rendering" bezeichnet) ist im Framework der Basis enthalten. Der Mechanismus wird in der Anwendung "Development Projects" als Erweiterung des Komponenten-Framework durch Anwendung folgender Regeln realisiert:

  • Das Layout jeder Komponente wird in ein div-Tag mit der ID der Komponente eingeschlossen (-> BSP View)
  • Der Controller der Komponente erhält ein Attribut "differential", das den Aufruf-Modus steuert
  • Der Controller muß über Änderungen seines eigenen Inhalts informiert sein
  • Der Controller macht Ausgaben vom Änderungs-Zustand und vom Aufruf-Modus abhängig:
  • Wurde der Controller im "complete"-Modus aufgerufen (differential ist initial), gibt der Controller seinen kompletten Inhalt aus und ruft eingebettete Komponenten ebenfalls im "complete"-Modus auf

  • Wurde der Controller im "differential"-Modus aufgerufen (differential = "X") und sein eigener Inhalt wurde seit dem letzten Request verändert, gibt der Controller seinen kompletten Inhalt aus und ruft eingebettete Komponenten im "complete"-Modus auf

  • Wurde der Controller im "differential"-Modus aufgerufen (differential = "X") und sein eigener Inhalt wurde seit dem letzten Request nicht verändert, gibt der Controller seinen eigenen Inhalt nicht aus und ruft eingebettete Komponenten im "differential"-Modus auf. Zusätzlich gibt der Controller außerhalb des die Komponente einschießenden div-Tag"s einen JavaScript-Block zum Ersetzen des Inhalts aus (CL_DPR_BSP_APPLICATION stellt dazu die Methode WRITE_REPLACE_SCRIPT zur Verfügung).

Eine Komponente, die den Austausch geänderter Seiteninhalte unterstützt kann jederzeit von einer anderen Komponente, die den Mechanismus nicht unterstützt, im "complete"-Mode (ist Default, wenn der Parameter "differential" nicht übergeben wird) aufgerufen werden.

Umgekehrt kann auch eine Komponente, die den Austausch geänderter Seiteninhalte nicht unterstützt, von einer Komponente, die den Mechanismus unterstützt, aufgerufen werden. Sofern die aufrufende Komponente über Änderungen der aufgerufenen Komponente nicht informiert ist, muß sie davon ausgehen, dass die aufgerufene Komponente geändert wurde. Letztendlich bedeutet das, dass sich die aufrufende Komponente dann immer so verhalten muß, als ob ihr eigener Inhalt verändert wurde und den kompletten Inhalt (ggf. mit Replace Script) ausgeben muß.






General Material Data   CL_GUI_FRONTEND_SERVICES - Frontend Services  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 14156 Date: 20240328 Time: 174315     sap01-206 ( 249 ms )