Show TOC

Component-Verwendung ohne Controller-ZugriffLocate this document in the navigation structure

Die Nutzung einer fremden Component kann grundsätzlich auf zwei verschiedene Arten erfolgen. Wenn Sie die fremde Component nur zur Anzeige bringen wollen, also weder Daten ihres Interface-Controllers ändern noch dessen Funktionen nutzen wollen, können Sie auf die explizite Verwendungsdeklaration des fremden Interface-Controllers im aktuellen Controller verzichten. In diesem Fall ist es ausreichend, im aktuell bearbeiteten Controller nur die Verwendung der fremden Component zu deklarieren (siehe Grafik)

Wählen Sie hierfür den Eintrag Anfang des Navigationspfads Beispielverwendung Nächster Navigationsschritt Fremde_Component Ende des Navigationspfads aus. Dadurch wird lediglich die Verwendung der Component in die Tabelle eingetragen und Sie können die Component zu Anzeigezwecken von der aktuellen Component aus aufrufen.

Die Verwendung wurde wieder den Metadaten hinzugefügt.

Verwendete Component instanziieren

Unabhängig davon, ob Sie sich für eine Component-Verwendung mit oder ohne Controller-Zugriff entschieden haben, müssen Sie nun in einer von Ihnen ausgewählten Methode die verwendete Component instanziieren:

Vorgehensweise

  1. Wählen Sie eine Methode Ihres aktuell bearbeiteten Controllers aus. Dies kann zum Beispiel die vordefinierte Methode WDDOINIT sein, welche bei jedem Aufruf des Controllers automatisch gerufen wird. Wenn der Absprung in die fremde Component jedoch mit einem Ereignis in Verbindung stehen soll, können Sie stattdessen auch eine Ereignisbehandlermethode auswählen.
  2. Durch Doppelklicken der in Schritt 1 ausgewählten Methode öffnet sich ein ABAP Editor und Sie können die notwendige Methode einfügen. Dabei unterstützt Sie der Web-Dynpro-Code-Wizard:
  3. Klicken Sie die Schaltfläche Web-Dynpro-Code-Wizard in der Werkzeugleiste des Editors. In einem separaten Fenster werden Ihnen in einer Liste häufig verwendete Web-Dynpro-Anweisungsmuster angeboten.
  4. Markieren Sie den Eintrag Verwendete Component instanziieren.
  5. Öffnen Sie die F4-Hilfe der nachstehenden Eingabezeile Comp.-Verwendung. Ihnen werden nun alle in der Tabelle der Registerkarte Eigenschaften  des Controllers verfügbaren Component-Verwendungen angeboten. Wählen Sie die gewünschte Verwendung aus und bestätigen Sie den Dialog. Der benötigte Quellcode wurde automatisch in die aktuelle Methode eingefügt. Nach dem Sichern der Methode steht die fremde Component zur Laufzeit Ihrer eigenen Component zur Verfügung.

Beispiel: Für eine Component wurde die Verwendung einer anderen Component eingetragen. Diese Verwendung trägt den Namen MY_COMP_USAGE.

method MY_CONTROLLER_METHOD .

data:     L_REF_CMP_USAGE      type ref to      IF_WD_COMPONENT_USAGE.


            L_REF_CMP_USAGE =   WD_THIS->WD_CPUSE_MY_COMP_USAGE( ).

if          L_REF_CMP_USAGE->HAS_ACTIVE_COMPONENT( ) is initial.
            L_REF_CMP_USAGE->CREATE_COMPONENT( ).

endif.
endmethod.

Die Methode WD_CPUSE_<MY_COMPONENT_USAGE>

Diese Methode enthält das lokale Interface eines jeden Controllers sobald Sie die Verwendung einer fremden Component für (zunächst die gesamte Component und anschließend) den aktuellen Controller eingetragen haben. Die Methode gibt eine Referenzvariable vom Typ IF_WD_COMPONENT_USAGE zurück. (Siehe auch Kapitel Vordefinierte Methoden des lokalen Controller-Interfaces im Teil 1 des Programmierhandbuches).

Im ersten Schritt wurde mit Hilfe der Methode WD_CPUSE_<MY_COMP_USAGE  ein entsprechendes Objekt für die verwendete Component erzeugt. Im zweiten Schritt wurde das Objekt instanziiert, sofern keine Instanz vorhanden war.

Auf die verwendete Component kann nun zugegriffen werden, Sie können jedoch nicht die Methoden ihres Interface-Controllers benutzen da für die entsprechenden Controller zusätzlich eine Verwendung deklariert werden muss (siehe nachfolgendes Kapitel Component-Verwendung mit Controllerzugriff).

Verwendete Component aufrufen

Um die fremde Component anzuzeigen, wird eine Interface-View eines beliebigen Windows dieser Component in ein Window Ihrer aktuellen Component eingebettet. Dieser Vorgang entspricht exakt dem des Einbettens einer View der eigenen Component. In dem Sie eine Navigation einrichten von einem Outbound-Plug einer View Ihrer aktuellen Component zu einem Inbound-Plug der Interface-View eines Windows der fremden Component, ermöglichen Sie den Übergang zur Anzeige der fremden Component.

Das Einrichten einer Navigation ist beispielhaft beschrieben inTeil 5: Einrichten der Navigation des TutoriumsErstellen einer einfachen Flug-Info-Anwendung.

Hinweis Jede Interface-View einer verwendeten Component kann genau einmal in eine Window einer äußeren Component eingebettet werden. Wenn Sie eine bestimmte Interface-View einer Component mehrmals in einem äußeren Window einbetten möchten, müssen Sie zunächst eine entsprechende Anzahl zugehöriger Component-Verwendungen deklarieren. In der Praxis ist diese Anzahl zur Designzeit noch gar nicht bekannt sondern hängt von Faktoren ab, die sich erst zur Laufzeit ergeben. Sie finden daher weitere Informationen im KapitelDynamische Erzeugung einer Component-Verwendung im Teil Dynamische Programmierung dieser Dokumentation.

Wenn Sie zusätzlich auch auf den Inhalt des fremden Controller-Contextes zugreifen oder Methoden dieses Controllers nutzen wollen, lesen Sie das Dokument Component-Verwendung mit Controller-Zugriff.