Show TOC

Dokumentation zur Vorgehensweise(Sub-)Controller aufrufen Dieses Dokument in der Navigationsstruktur finden

 

Sub-Controller können von einem übergeordneten Controller (Haupt-Controller) oder von einem View oder einer Page instantiiert und aufgerufen werden.

Empfehlung Empfehlung

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.

Ende der Empfehlung.

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.

Vorgehensweise

Controller aufrufen
  1. 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.

    Hinweis Hinweis

    Die Controller-ID kann hier jeweils mitgegeben werden.

    Ende des Hinweises.
  2. Setzen Sie bei Bedarf die Request-Parameter:

    l_ctrl->do_initattributes( ).

  3. Setzen Sie weitere Attribute:

    l_ctrl->set_attribute( name = name value = value ).

  4. Rufen Sie den Request auf:

    call_controller( l_ctrl ).

Sub-Controller aufrufen
  1. 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 Beispiel

    flightdetails ?= create_controller( controller_name = 'flightdetails.do'

    controller_id = 'fld' ).

    Ende des Beispiels.

    Achtung Achtung

    Achten Sie darauf, die controller_id mit anzugeben.

    Ende der Warnung.
  2. 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:

      1. data: l_ctrl type ref to cl_bsp_controller2.

        l_ctrl = create_controller( key = navigation_key ).

        oder

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

      1. <bsp:call comp_id = "…"/>

        Beachten Sie, dass hierbei die Instantiierung mit der controller_id bereits erfolgt sein muss.

      2. <bsp:call url = "…" comp_id = "…"/>

        Falls unter der comp_id kein Controller angelegt ist, wird eine Controller-Instanz erzeugt.

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

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