(Sub-)Controller aufrufen
Verwendung
Sub-Controller können von einem übergeordneten Controller (Haupt-Controller) oder von einem View oder einer Page instantiiert und aufgerufen werden.
Wir empfehlen, einen Sub-Controller von einem übergeordneten Controller aus in der Methode
DO_INIT anzulegen, die Parameter entsprechend zu setzen und dann vom zugehörigen View aus aufzurufen.
Voraussetzungen
Sie befinden sich in einem System ab SAP Web AS 6.20.
Sie haben mindestens einen Controller für Ihre BSP-Applikation angelegt oder mindestens einen Haupt- und einen Sub-Controller.
Controller aufrufen
Erzeugen Sie die Controller-Instanz. Dafür haben Sie die folgenden Möglichkeiten:
data: l_ctrl type ref to cl_bsp_controller2.
l_ctrl = create_controller( key = navigation_key ).
oder
l_ctrl = create_controller( application_namespace = 'fred'
application_name = 'hugo' controller_name = 'do_something.do' ).
application_namespace
und application_name sind optional. Falls nicht angegeben, werden die aktuellen Werte genommen.
Die Controller-ID kann hier jeweils mitgegeben werden.
- Setzen Sie bei Bedarf die Request-Parameter:
l_ctrl->do_initattributes( ).
Setzen Sie weitere Attribute:
l_ctrl->set_attribute( name = name value = value ).
Rufen Sie den Request auf:
call_controller( l_ctrl ).
Sub-Controller aufrufen
Instantiieren Sie Ihren Sub-Controller.
Legen Sie Ihren Sub-Controller dazu in der Methode DO_INIT an:
subcontroller = create_controller (controller_name = name.do
controller_id = 'id' ).
Beispiel:
flightdetails ?= create_controller( controller_name = 'flightdetails.do'
controller_id = 'fld' ).
Achten Sie darauf, die controller_id mit anzugeben.
Rufen Sie Ihren Sub-Controller auf.
- Sie können den Aufruf aus dem Controller heraus durchführen.
Dies ist insbesondere dann sinnvoll, wenn von dem aufrufenden Controller kein Layout beigesteuert wird. Hier gibt es zwei Aufruf-Möglichkeiten:
data: l_ctrl type ref to cl_bsp_controller2.
l_ctrl = create_controller( key = navigation_key ).
oder
l_ctrl = create_controller( application_namespace = 'fred'
application_name = 'hugo' controller_name = 'do_something.do' ).
application_namespace und application_name sind optional. Falls nicht angegeben, werden die aktuellen Werte genommen.
- Sie können den Aufruf aus dem View heraus durchführen. Hier gibt es drei Aufruf-Möglichkeiten, die alle über das BSP-Element
<bsp:call> realisiert sind. Die hier verwendete comp_id entspricht der controller_id aus create_controller.
<bsp:call comp_id = "
"/>
Beachten Sie, dass hierbei die Instantiierung mit der controller_id bereits erfolgt sein muss.
<bsp:call url = "
" comp_id = "
"/>
Falls unter der comp_id kein Controller angelegt ist, wird eine Controller-Instanz erzeugt.
<bsp:call key = "
" comp_id = "
"/>
Falls unter der comp_id kein Controller angelegt ist, wird eine Controller-Instanz erzeugt. Der key wird aus der Navigationstabelle gezogen.
- Legen Sie die Parameterübergabe fest.
- Sie können die Parameterübergabe aus dem Controller heraus durchführen.
sub_controller -> set_attribute (name value)
Verwenden Sie hierfür eine beliebige öffentliche Methode des Sub-Controllers, falls dessen Klasse bekannt ist. Dann können Sie natürlich auch direkt öffentliche Attribute des Sub-Controllers setzen.
- Sie können die Parameterübergabe aus dem View heraus durchführen.
<bsp:call>
<bsp:parameter name = "
" value = "
" />
</bsp:call>