Show TOC

Dokumentation zur VorgehensweiseKomponente aufrufen Dieses Dokument in der Navigationsstruktur finden

 

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 Hinweis

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

Ende des Hinweises.

Vorgehensweise

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

    Syntax Syntax

    1. ...
      
        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( ... ).
      
      ...
      
    Ende des Codes

    oder

    Syntax Syntax

    1. ...
      
        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 ).
      
      
    Ende des Codes
  • 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:

    Syntax Syntax

    1. <%@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>
        </p>
          <htmlb:button id="SAVE" text="SAVE DATA" onClick="SAVE" />
          <htmlb:button id="CANCEL" text="CANCEL" onClick="CANCEL" />
          </htmlb:form>
        </htmlb:page>
      </htmlb: content>
    Ende des Codes
Variante 2

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:

Syntax Syntax

  1. <%@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>
    
Ende des Codes

Fahren Sie fort mit dem Festlegen der Eingabeverarbeitung.