Ansicht
Dokumentation

CL_PRP_BSP_C_ROLENAVIGATOR - PLM Development Projects - BSP Controller Applikationskopf

CL_PRP_BSP_C_ROLENAVIGATOR - PLM Development Projects - BSP Controller Applikationskopf

BAL Application Log Documentation   TXBHW - Original Tax Base Amount in Local Currency  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

Funktionalität

Diese Controller-Klasse bildet mit der BSP-View roleNavigator.bsp eine UI-Komponente. Diese Komponente bietet einen Überblick über alle Projektrollen, die dem aktuellen Projekt zugeordnet sind.

Die Funktionalitäten "Rolle löschen", "Rolle anlegen", "Rolle kopieren" und "Rolle umsortieren" sind zwar inhaltlich disem Controller zugeordnet. Auf der Benutzeroberfläche liegen die Button, die diese Ereignisse auslösen, aber im Controller PROJECT_RESOURCES. Deshalb sind diese Funktionalitäten über Klassenereignisse gesteuert.

Die BSP-Seite wird komplett neu aufgebaut (Complete Modus) oder nur bei verändertem Inhalt (Differential Modus). Ob sich der Seiteninhalt geändert hat wird über das Attribut mv_changed gesteuert.

Beim Wechsel der aktuellen Rolle muß der Rollenavigator nicht neu aufgebaut werden. Es ändert sich in diesem Fall nur der Titel (Rollenüberschrift) beim Controller Project Resources. In diesem Fall wird also nur der EVENT ROLE_CHANGED gefeuert, nicht aber ACTUALIZE_ROLE_NAVI. Durch der Event ACTUALIZE_ROLE_NAVI wird der Rollennavigator neu aufgebaut und die Tabelle zum Umsortieren der Rollen.

Der Event ACTIVE_ROLE_CHANGED wird gefeuert, wenn die aktuelle Rolle im Navigator gewechselt wird und beim initialen Starten des Role Navigator.

Methodenliste DO_INIT (Redefinition)

Diese Methode wird nur ein mal beim ersten Aufruf der Klasse CL_PRP_BSP_C_ROLENAVIGATOR aufgerufen und sorgt dafür, dass beim ersten Aufruf alle bereits angelegten Rollen des Projektes eingelesen werden. Weiter wird sichergestellt, dass die erste Rolle in der Liste die aktuelle Rolle ist.

DO_REQUEST (Redefinition)

Diese Methode ist für die Erzeugung und den Aufbau der BSP-View verantwortlich. Bei Änderungen in der Rollenliste muss die Tabelle neu Aufgebaut werden (Methode GET_ALL_ROLES). Änderungen sind das Löschen und Anlegen einer Rolle, das Ändern der Rollenbezeichnung, des Aufwandes, der Einheit und das Ändern der zugeordneten Geschäftspartner. Durch Event-Handling wird das Flag mv_changed gesetzt, welches als Bedingung für den Aufruf der Methode GET_ALL_ROLES und den Neuaufbau der BSP-View verantwortlich ist.

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.

DO_HANDLE_DATA

Die Methode ist im Moment nicht redefiniert. Sie wurde zu Beginn der Entwicklung benötigt, als der Rollenwechsel mit Hilfe von Radio-Button realisiert war.

DO_HANDLE_EVENT

Diese Methode steuert das Event-Handling für den Rollenwechsel, das durch das Anklicken der neuen Rolle ausgelöst wird und das Navigieren im Table View.

ADD_NEW_ROLE

Zuerst wird der Projekttyp ermittelt und die initiale Projektrollenart aus der Customizing-Klasse (CL_DPR_ROLES_CUSTOMIZING) geladen.

Die Methode GET_ALL_ORDERED der Klasse CL_DPR_PARTICIPANTS liefert alle Rollen eines Projektes in sortierter Reihenfolge zurück. Das Sortier-Kriterium ist das Attribut sort_number. Damit die neue Rolle immer unterhalb der aktuellen Rolle einsortiert wird, muss das Attribut sort_number aller Rollen entsprechend geändert werden.

Ausserdem erhält die neue Rolle noch die voreingestellte Zeiteinheit aus der Applikationsklasse CL_PRP_BSP_APPLICATION.

Damit die anderen Controller ihre Daten neu laden können werden noch die Ereignisse ROLE_ADDED und ACTIVE_ROLE_CHANGED ausgelöst.

GET_ALL_ROLES

Diese Methode wird jedes mal aufgerufen, wenn sich Änderungen an der Rollenliste ergeben (siehe Methode DO_REQUEST). Für jede Rolle wird die Rollenbezeichnung, der geplante und der bereits zugeordnete Auwand (für das Status-Icon) geladen. Dann werden für jede Rolle die Rollenbezeichnungen mit den Namen der zugeordneten Geschäftspartner angereichert.

ON_ACTUALIZE_ROLE_NAVI (Ereignisbehandler)

Diese Methode ist an das Ereignis ACTUALIZE_ROLE_NAVI der Klasse CL_PRP_BSP_APPLICATION angemeldet und setzt die Instanz-Variable mv_changed = 'X', damit die Rollendaten neu geladen werden, und die Seite neu aufgebaut wird.

SET_ACTIVE_ROLE

Diese Methode setzt die aktuelle Rolle neu, wenn die Rolle gewechselt wird und wenn beim ersten Aufruf (Methode DO_INIT) noch keine aktive Rolle gesetzt ist. Beim Löschen und Anlegen einer Rolle wird die Member-Variable MV_ACTIVE_ROLE_INDEX direkt gesetzt.

FILL_TABLEVIEW_COLORS

Um die aktuelle Rolle farblich zu kennzeichnen, wird in der Tabelle eine Spalte mit der Hintergrundfarbe gepflegt. Diese Spalte wird in dieser Methode gepflegt.

COPY_ROLE

Diese Methode kopiert die aktuelle Rolle mit den allgemeinen Rollenattributen (z.B. Aufwand und Start- und Endzeitpunkt), den Qualifikationen und den Favoriten. Die Termine und die zugeordneten Geschäftspartner werden nicht mit kopiert.

DELETE_ROLE

Nach erfolgreichem Löschen der Rolle wird die Referenz auf die aktuelle Rolle gelöscht, so dass beim nächsten Durchlauf der DO_REQUEST Methode die erste Rolle zur aktuellen Rolle wird. Das Event ACTIVE_ROLE_CHANGED wird gefeuert, damit die anderen Controller ihre Daten aktualisieren können.

Das Event CLOSE_BUPA_DETAIL ist für das Schließen der Detailansicht auf dem "Ressourcenzuordnen-Tab" verantwortlich.

Durch das Abschiessen des ROLE_ADDED Event wird von der "Ressourcensuche" zur "Projektrollendefinition" zurückgesprungen und auf den Tabreiter "Allgemein" gewechselt.

CHECK_PROJECT_DURATION

Diese Methode lädt das durch das Projekt vorgegegebene Zeitintervall und stellt es in der Applikationsklasse CL_PRP_BSP_APPLICATION zur Verfügung.

ON_ROLE_DELETED (Ereignisbehandler)

Diese Methode ist auf das Ereignis ROLE_DELETED aus der Klasse CL_PRP_BSP_APPLICATION registriert und ruft die Methode DELETE_ROLE auf. Diese Aktion ist ereignisgesteuert, da der Button zum Löschen der Rolle in einem anderen Controller beheimatet ist.

ON_ROLE_ADDED (Ereignisbehandler)

Diese Methode ist auf das Ereignis NEW_ROLE_ADDED aus der Klasse CL_PRP_BSP_APPLICATION registriert und ruft die Methode ADD_NEW_ROLE auf. Diese Aktion ist ereignisgesteuert, da der Button zum Anlegen einer Rolle in einem anderen Controller beheimatet ist.

ON_SORT_HANDISH (Ereignisbehandler)

Diese Methode ist auf das Ereignis NEW_ROLE_SORT_GUID aus der Klasse CL_PRP_BSP_C_PROJECTRESOURCES registriert und sortiert die aktuelle Rolle an die im Dropdown-Menu gewählte Position.

ON_PROJECT_LANGUAGE_CHANGED (Ereignisbehandler)

Diese Methode ist auf das Ereignis TEXT_LANGUAGE_CHANGED aus der Klasse CL_PRP_BSP_C_PROJECTRESOURCES registriert und setzt das Attribut mv_changed, damit die Rollenliste in der neu gewählten Sprache geladen wird.

ON_ROLE_COPIED (Ereignisbehandler)

Diese Methode ist auf das Ereignis ROLE_COPIED aus der Klasse CL_PRP_BSP_C_PROJECTRESOURCES registriert und ruft die Methode COPY_ROLE auf. Diese Aktion ist ereignisgesteuert, da der Button zum Kopieren einer Rolle in dem Controller PROJECTRESOURCES beheimatet ist.

ON_ACTIVE_ROLE_CHANGED_EXTERN1 (Ereignisbehandler)

Diese Role aktualisiert im Rollennavigator den Rollenwechsel, wenn in der Projektrollensicht die aktive Rolle gewechselt wurde.

ON_ACTIVE_ROLE_CHANGED_EXTERN2 (Ereignisbehandler)

Diese Role aktualisiert im Rollennavigator den Rollenwechsel, wenn in der Projektrollenbesetzungssicht die aktive Rolle gewechselt wurde.

ON_BUPA_DATA_CHANGED

Diese Methode ist auf das Ändern der Geschäftspartnerdaten registriert. Das Ereignis wird nur ausgelöst, wenn die Daten aus der BSP-Applikation selbst gewechselt werden. Wenn die Geschäftspartnerdaten mittels BP-Transaktion geändert werden, wird das Ereignis nicht ausgelöst. Der Name des geänderten Geschäftspartners wird aktualisiert.

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 Data in Customer Master   rdisp/max_wprun_time - Maximum work process run time  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 12587 Date: 20240329 Time: 101423     sap01-206 ( 220 ms )