Show TOC Anfang des Inhaltsbereichs

Diese Grafik wird im zugehörigen Text erklärt Component-Verwendung mit Controller-Zugriff  Dokument im Navigationsbaum lokalisieren

Wenn Sie von der aktuellen Component aus einen Zugriff auf den Interface-Controller der fremden Component ermöglichen wollen, wenn Sie also Daten dieses Controllers verändern oder Funktionen nutzen wollen, müssen Sie auf der Registerkarte Eigenschaften des von Ihnen ausgewählten Controllers den Eintrag BeispielverwendungFremde_ComponentInterface-Controller auswählen. In diesem Fall wird sowohl die Component als auch der Interface-Controller explizit in die Tabelle eingefügt.

Diese Grafik wird im zugehörigen Text erklärt

 

Die Verwendung wurde wieder den Metadaten hinzugefügt.

Verwendete Component instanziieren

Entsprechend der Vorgehensweise im vorangegangenen Kapitel muss auch in diesem Fall die verwendete Component in einer geeigneten Methode der Component instanziiert werden (siehe Kapitel Component-Verwendung ohne Controller-Zugriff).

Zugriff auf Methoden des Controllers einer verwendeten Component implementieren

Wenn Sie nun auf den Inhalt des fremden Controller-Contexts zugreifen oder Methoden dieses Controllers nutzen wollen, müssen Sie die oben beschriebene Instanziierung der fremden Component erweitern. Voraussetzung ist, dass Sie (wie oben beschrieben) den Interface-Controller der verwendeten Component auf der Registerkarte Eigenschaften des aktuellen Controllers eingetragen haben. Die Verwendungsdeklaration allein der Component reicht in diesem Fall nicht aus:

Vorgehensweise

       1.      Wählen Sie auf der Registerkarte Methoden wieder eine Methode aus. Dies kann, muss aber nicht unbedingt die selbe Methode sein, wie in Schritt 1. Sie können beispielsweise die verwendete Component in einer Methode des Component-Controllers instanziieren um dann aus verschiedenen View-Controllern heraus auf dessen Daten oder Funktionen zuzugreifen. Sie müssen lediglich sicherstellen, dass die fremde Component bereits instanziiert wurde bevor ein Zugriff auf den Interface-Controller erfolgt (siehe hierzu auch Kapitel Das Phasenmodell im Teil 1 des Programmierhandbuchs).

       2.      Öffnen Sie den ABAP Editor durch Doppelklicken auf den Namen der gewählten Methode.

       3.      Klicken Sie wieder die Schaltfläche des Web-Dynpro-Code-Wizard.

       4.      Markieren Sie den Eintrag Methodenaufruf im verwendeten Controller.

       5.      Öffnen Sie die F4-Hilfe der Eingabezeile Component-Name. In einem separaten Fenster werden Ihnen in einer Liste alle verfügbaren Components mit ihren Controllern zur Auswahl angeboten.

       6.      Wählen Sie den von Ihnen gewünschten Controller aus und bestätigen Sie den Dialog.

       7.      Öffnen Sie im nächsten Schritt die F4-Hilfe der Eingabezeile Methoden und wählen Sie im folgenden Dialog die gewünschte Controller-Methode aus.

       8.      Bestätigen Sie den Wizard-Dialog.

Die von Ihnen ausgewählte Methode des Controllers der verwendeten Component wurde dem Coding der Methode, die Sie gerade bearbeiten, hinzugefügt. Entsprechend der Programmierweise von ABAP Objects können Sie diese Funktion nun nutzen.

Die Methode WD_CPIFC_<MY_COMPONENT_USAGE>

Wenn zusätzlich zur Component-Verwendung auch die Verwendung des zugehörigen Interface-Controllers eingetragen wurde, erweitert sich die Liste der lokalen Controller-Methoden um die Methode WD_CPIFC_<MY_COMPONENT_USAGE>. Diese Methode gibt eine Referenzvariable vom Typ IWCI_<USED_COMPONENT> zurück. also vom Typ des ABAP-globalen Interfaces der verwendeten Component

Diese Grafik wird im zugehörigen Text erklärt Beispiel: Die eingetragene Component-Verwendung MY_COMP_USAGE bindet die Component MY_USABLE_COMPONENT in die aktuelle Component ein. Mit Hilfe der Methode WD_CPIFC_MY_COMP_USAGE des lokalen Controller-Interfaces erhalten Sie Zugriff auf die Methoden des Interface-Controllers der verwendeten Component MY_USABLE_COMPONENT. Sie könnten sich beispielsweise anschließend über dessen Methode WD_GET_API Zugriff auf die Methoden des Laufzeit-APIs (siehe oben) des verwendeten Interface-Controllers verschaffen.

 

 method MY_CONTROLLER_METHOD .

 

data: L_REF_INTERFACECONTROLLER type ref to IWCI_MY_USABLE_COMPONENT,

      L_API_INTERFACECONTROLLER type ref to IF_WD_CONTROLLER.

 

 

  L_REF_INTERFACECONTROLLER = WD_THIS->WD_CPIFC_MY_COMP_USAGE( ).

 

  L_API_INTERFACECONTROLLER = L_REF_INTERFACECONTROLLER->WD_GET_API( ).

 

 

endmethod.

 

 

Ende des Inhaltsbereichs