
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 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
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.
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.