Ansicht
Dokumentation

CL_DPR_DEMO_SUBSYSTEM - Demo-Implementierung für kundeneigenes Subsystem

CL_DPR_DEMO_SUBSYSTEM - Demo-Implementierung für kundeneigenes Subsystem

BAL Application Log Documentation   BAL Application Log Documentation  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

Funktionalität

Diese Klasse ist eine Demo-Implementierung des Interface IF_DPR_APPL_PLUG_IN_SUBSYSTEM, um ein kundeneigenes Subsystem zu etablieren.

Es wird im Zusammenhang mit der UI-Demo im cProjects IMG-Knoten 'Globale Erweiterungen an Projektelementen -> Zusätzliche Registerkarte in cProjects einblenden' - siehe WD-Komponente DPR_CUST_EXT_INTF_DEMO - verwendet. Die Klasse kann jedoch auch unabhängig vom o.g. Beispiel als Vorlage für ein Subsystem ohne UI-Bezug dienen.

Die Datenbanktabelle lautet DPR_DEMO. Sie enthält neben den Schlüsselfeldern CLIENT und GUID noch das kundeneigene nicht-CI-Feld DATA1 (im o.g. UI 'Kundendatum1').

Die Methoden aus dem Interface IF_DPR_APPL_PLUG_IN_SUBSYSTEM haben die folgende Bedeutung:

GET_INSTANCE - Liefert den Singleton mit Referenz auf das Interface IF_DPR_APPL_PLUG_IN_SUBSYSTEM.

FREE - Verwirft die bisher aufgezeichneten kundeneigenen Änderungen und deaktiviert den Ereignisbehandler ON_OBJECT_DELETED für alle Instanzen.

HAS_CHANGES - Gibt bei Vorhandensein von kundeneigenen Änderungen TRUE zurück, sonst FALSE.

PREPARE_TO_SAVE - Prüft die bisher aufgezeichneten kundeneigenen Änderungen.

SAVE - Überführt die bisher aufgezeichneten kundeneigenen Änderungen bei Bedarf in eine oder mehrere Tabellen und übergibt diese einem entsprechenden updatefähigen kundeneigenen Funktionsbaustein via
CALL FUNCTION '...' IN UPDATE TASK
Diese Demo-Implementierung verwendet den Verbuchungsbaustein DPR_DEMO_SAVE.

INITIALIZE_AFTER_SAVE - Verwerfen aller bisher aufgezeichneten kundeneigenen Änderungen und der Tabelle, die an die Verbuchung übergeben worden ist.

Die Methoden von IF_DPR_APPL_BOOTSTRAP_MEMBER erlauben weitere Aktionen für kompliziertere Sachverhalte, wie sie im Normalfall nicht vorliegen:

LOAD - Erlaubt das Laden für Daten die speziell in der Subsystem- Behandlung benötigt werden.

FREE - Erlaubt das zusätzliche Freigeben der Daten aus LOAD.

INITIALIZE - Erlaubt das Initialisieren der Daten aus LOAD.

GET_SEQUENCE_PLACE - Definition einer LOAD-Reihenfolge für verschiedene Bootstrap Member, falls z.B. aufgrund von Abhängigkeiten die Daten von Bootstrap Member1 vor den Daten von Bootstrap Member2 geladen werden müssen.

Die Attribute ohne Interface-Bezug haben die folgende Bedeutung:

SR_INSTANCE - Privater Singleton des Demo-Subsystems

MT_CUSTOM_DATA - Private Puffertabelle zur Verwaltung der kundeneigenen Daten, inklusive Verbuchungskennzeichen. Ihr Inhalt wird in den oben genannten Methoden FREE, HAS_CHANGES, PREPARE_TO_SAVE, SAVE und INITIALIZE_AFTER_SAVE verwendet.

SC_INS, SC_CHG und SC_DEL - Private Konstanten zur Identifikation des Verbuchungskennzeichens 'I' (Insert), 'C' (Change) und 'D' (Delete).

Die Methoden ohne Interface-Bezug haben die folgende Bedeutung:

GET_INSTANCE - Verwaltung und Rückgabe des Singletons SR_INSTANCE

CONSTRUCTOR - Aktiviert den Ereignisbehandler ON_OBJECT_DELETED für alle Instanzen.

ON_OBJECT_DELETED - Ereignisbehandler für alle Instanzen der Klasse CL_DPR_ENTITY, Ereignis IF_DPR_COMMON~DELETED. Behandelt beim Löschen eines Applikationsobjekts den zugehörigen Eintrag der kundeneigenen Daten in MT_CUSTOM_DATA.
Der Ereignisbehandler wird für alle Instanzen im CONSTRUCTOR aktiviert und in der Methode IF_DPR_APPL_PLUG_IN_SUBSYSTEM~FREE deaktiviert.

INIT_CUSTOM_DATA - Initialisiert die Puffertabelle MT_CUSTOM_DATA für ein Projektelement, wenn der Anwender zum ersten Mal auf seinen kundeneigenen Reiter navigiert.

SELECT_CUSTOM_DATA - Selektion der kundeneigenen Daten für ein Projektelement von der Tabelle DPR_DEMO.

GET_CUSTOM_DATA - Auslesen der kundeneigenen Daten für ein Projektelement aus MT_CUSTOM_DATA.

SET_CUSTOM_DATA - Aus dem UI gerufene Methode zum Aktualisieren der (geänderten) kundeneigenen Daten für ein Projektelement in MT_CUSTOM_DATA.

DELETE_CUSTOM_DATA - Ein bereits auf der Datenbank existierender Datensatz von kundeneigenen Daten für ein Projektelement wird in der Puffertabelle MT_CUSTOM_DATA zum Löschen (beim Sichern) vorgemerkt.

INVALID_CUSTOM_DATA - Löscht für ein Projektelement den Eintrag der kundeneigenen Daten aus der Puffertabelle MT_CUSTOM_DATA.
Hintergrund: Ein Projektelement wurde in der aktuellen Sitzung angelegt, kundeneigene Daten wurden gepflegt (das Verbuchungskennzeichen UPD in MT_CUSTOM_DATA ist SC_INS) und das Projektelement wird sofort wieder gelöscht. Für diesen Fall muss der Puffersatz gelöscht werden anstatt UPD = SC_DEL zu setzen, da sonst beim Verbuchen ein nicht-existierender Satz in der Datenbanktabelle DPR_DEMO gelöscht werden soll.

Hier können natürlich weitere kundeneigene Methoden implementiert werden.

Die Methoden aus dem Subsystem werden zu definierten Systemzeitpunkten verwendet. Die untige Aufstellung bezieht sich nur auf die Logik im Backend. In der Doku zur UI-Erweiterung werden zusätzlich UI-relevante Aspekte berücksichtigt.

  1. Start der cProjects Anwendung
    1. Alle cProjects-weit gültigen Daten und Einstellungen werden geladen.
    2. Alle SAP- und kundeneigenen Subsysteme werden via IF_DPR_APPL_PLUG_IN_SUBSYSTEM~GET_INSTANCE instantiiert und damit registiert.
  2. Sichern der aktuellen Sicht
    1. Alle cProjects-Daten werden auf Änderungen hin untersucht. Für alle SAP- und kundeneigenen Subsysteme wird hierfür die Methode IF_DPR_APPL_PLUG_IN_SUBSYSTEM~HAS_CHANGES gerufen.
    2. Existiert mindestens eine Änderung, werden alle geänderten cProjects-Daten geprüft und auf die Verbuchung hin vorbereitet. Für alle SAP- und kundeneigenen Subsysteme wird hierfür die Methode IF_DPR_APPL_PLUG_IN_SUBSYSTEM~PREPARE_TO_SAVE gerufen.
    3. Sind alle Prüfungen korrekt abgelaufen, übergeben alle geänderten cProjects-Daten ihre Daten an die Verbuchung via Aufrufe von VB-Funktionsbausteinen IN UPDATE TASK. Für alle SAP- und kundeneigenen Subsysteme wird hierfür die Methode IF_DPR_APPL_PLUG_IN_SUBSYSTEM~SAVE gerufen.
    4. Das Backend führt einen COMMIT WORK durch und die die Verbuchungs-LUW wird gestartet.
    5. Ist Verbuchungs-LUW beendet, werden alle geänderten cProjects Daten zurück gesetzt, d.h. die seit dem letzten Sichern aufgelaufenen Änderungen werden initialisiert. Für alle SAP- und kundeneigenen Subsysteme wird hierfür die Methode IF_DPR_APPL_PLUG_IN_SUBSYSTEM~INITIALIZE_AFTER_SAVE gerufen.
    6. Man befindet sich nach wie vor in der Anwendung
  3. Verlassen der aktuellen Sicht
    1. Alle cProjects-Daten werden auf Änderungen hin untersucht. Für alle SAP-und kundeneigenen Subsysteme wird hierfür die Methode IF_DPR_APPL_PLUG_IN_SUBSYSTEM~HAS_CHANGES gerufen.
    2. Existiert mindestens eine Änderung, wird die Sicherheitsabfrage prozessiert und entweder die Aktion abgebrochen, oder das Verbuchen wird eingeleitet (2b) ff) oder das Verlassen wird fortgesetzt (3c)).
    3. Alle geänderten cProjects Daten werden zurück gesetzt, d.h. die seit dem letzten Sichern aufgelaufenen Änderungen werden initialisiert. Für alle SAP- und kundeneigenen Subsysteme wird hierfür die Methode IF_DPR_APPL_PLUG_IN_SUBSYSTEM~FREE gerufen.

Beziehungen

Beispiel

Hinweise

Weiterführende Informationen






ROGBILLS - Synchronize billing plans   TXBHW - Original Tax Base Amount in Local Currency  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 8838 Date: 20240329 Time: 070950     sap01-206 ( 137 ms )