
Die Demo-Anwendung DEMO_COMMON_ASSISTANCE zeigt anhand eines sehr einfachen Beispiels, wie die Instanz einer Assistance-Klasse gemeinsam von zwei verschiedenen Components genutzt werden kann. Grundvoraussetzung dafür ist der Umstand, dass die Assistance-Klassen der beiden Components den gleichen Namen tragen.
Beide Demo-Components, DEMO_COMMON_ASSISTANCE1 und DEMO_COMMON_ASSISTANCE2, greifen zunächst auf die Assistance-Klasse CL_WD_DEMO_COMM_ASSI zu.
Die Component DEMO_COMMON_ASSISTANCE1 verwendet DEMO_COMMON_ASSISTANCE2 als Unter-Component.
In der Methode WDDOINIT des Component-Controllers von DEMO_COMMON_ASSISTANCE1 wird, wie in jedem anderen Fall auch, die verwendete Component mit Hilfe der Methode l_ref_cmp_usage->create_component instanziiert. Um sicherzustellen, dass beide Components auf die selbe Instanz der Assistance-Klasse zugreifen, muss als Wert für den Parameter ASSISTANCE_CLASS die Referenz auf die aktuelle Instanz der Assistance-Klasse der Haupt-Component übergeben werden.
method WDDOINIT .
data: l_ref_cmp_usage type ref to if_wd_component_usage.
l_ref_cmp_usage = wd_this->wd_cpuse_sub_component( ).
if l_ref_cmp_usage->has_active_component( ) is initial.
l_ref_cmp_usage->create_component
.
endif.
endmethod.
Für die verwendete Component wird eine Instanz erzeugt und die bereits bestehende, zur Haupt-Component gehörende Instanz der Assistance-Klasse der Instanz der verwendeten Component zugeordnet. Wenn Sie an dieser Stelle statt der Referenzvariablen wd_assist den Namen der Assistance-Klasse übergeben hätten, wäre eine zweite, unabhängige Instanz der selben Klasse erzeugt worden.