Anfang des Inhaltsbereichs

Vorgehensweisen Komponente aufrufen  Dokument im Navigationsbaum lokalisieren

Verwendung

Es gibt zwei Möglichkeiten für einen Haupt-Controller, Unter-Controller aufzurufen:

  1. über das Anlegen des Unter-Controllers in einer der Methoden des Haupt-Controllers
  2. über das Anlegen des Unter-Controllers von einem View aus

Hinweis

Variante A ist flexibler als Variante B, insbesondere wenn der Unter-Controller nur einmal in der Methode DO_INIT initialisiert werden soll.

Vorgehensweise

Variante A

  1. Fügen Sie in der Methode DO_INIT oder DO_REQUEST z.B. folgendes Coding hinzu:
  2. ...

      data: addresscontroller type ref to CL_C_MYPROJ_ADDRESS.

    * create the controller

      addresscontroller ?= create_controller(

                              controller_name = 'address.do'

                              component_id = 'ad'

                               ).

    * set some attributes with a self defined methods

      addresscontroller->Init_data( ... ).

    ...

     

    oder

    ...

      data: subcontroller type ref to CL_BSP_CONTROLLER2.

    * create the controller

      subcontroller ?= create_controller(

                              controller_name = 'address.do'

                              controller_id = 'ad'

                               ).

    * set some attributes with standard method

      subcontroller->set_attributes( name = 'address'

                                     value = ship_address ).

      ...

     

  3. Rufen Sie im View den Controller auf.
    Im vorliegenden Beispiel werden zwei Komponenten aufgerufen, einmal die Adress-Komponente (
    address.do) und einmal die Flug-Komponente (flights.do).

Der Controller wird über die COMPONENT_ID erkannt. In der Methode CREATE_CONTROLLER ist dies der Parameter COMPONENT_ID und im <bsp:call>-Element ist dies das Attribut COMP_ID:

<%@page language="abap"%>
<%@extension name="htmlb" prefix="htmlb"%>
<%@extension name="bsp" prefix="bsp"%>

<htmlb:content id="ComponentTest" >
  <htmlb:page title = "Component Test">
    <H1>Component Test</H1>
    <htmlb:form id="myFormId" method="post">

       <htmlb:tray id    = "tray1"
              title       = "Address"
              design      = "form"
              width       = "350"
              isCollapsed = "false" >
           <bsp:call url="address.do" comp_id="ad">
           </bsp:call>
       </htmlb:tray>

       <htmlb:tray id     = "tray2"
              title       = "Flights"
              design      = "form"
              width       = "350"
              isCollapsed = "false" >
          <bsp:call url="flights.do" comp_id="fl">
          </bsp:call>
       </htmlb:tray>
      <p>
      <htmlb:button id="SAVE" text="SAVE DATA" onClick="SAVE" />
      <htmlb:button id="CANCEL" text="CANCEL" onClick="CANCEL" />
    </htmlb:form>
  </htmlb:page>
</htmlb:content>

 

Variante B

In dieser Variante brauchen Sie den Unter-Controller nicht im Coding des Haupt-Controllers anzulegen. Stattdessen fügen Sie nur die Parameter dem View-Aufruf hinzu, dann wird der Controller erzeugt und aufgerufen. Im vorliegenden Beispiel ist ship_address ein Attribut des Views und wird vom Controller gesetzt:

<%@page language="abap"%>
<%@extension name="htmlb" prefix="htmlb"%>
<%@extension name="bsp" prefix="bsp"%>

<htmlb:content id="ComponentTest" >
  <htmlb:page title = "Component Test">
    <H1>Component Test</H1>
    <htmlb:form id="myFormId" method="post">

       <htmlb:tray id    = "tray1"
              title       = "Address"
              design      = "form"
              width       = "350"
              isCollapsed = "false" >
           <bsp:call url="address.do" comp_id="ad">
             <bsp:parameter name="address" value="<%=ship_address%>"/>
           </bsp:call>
       </htmlb:tray>

       <htmlb:tray id     = "tray2"
              title       = "Flights"
              design      = "form"
              width       = "350"
              isCollapsed = "false" >
          <bsp:call url="flights.do" comp_id="fl">
          </bsp:call>
       </htmlb:tray>
      <p>
      <htmlb:button id="SAVE" text="SAVE DATA" onClick="SAVE" />
      <htmlb:button id="CANCEL" text="CANCEL" onClick="CANCEL" />
    </htmlb:form>
  </htmlb:page>
</htmlb:content>

 

Fahren Sie fort mit dem Festlegen der Eingabeverarbeitung.

Ende des Inhaltsbereichs