BSP Navigation in MVC

Hello,
I'm programming a small demo for FLOB. But I have a problem that should be a basic BSP problem.
There are two controls main.do and password.do
The steps are as follow:
1) main.do ->  method do_init: response->redirect( 'g.do' ).
2) password.do ->  method do_request: ob_password_v ?= create_view( view_name = 'password.htm' ).
and I get the right html
3) when the user press start, a ajax request is started and there are two ways
3.1) If the password is wrong -> a message appears (that works fine)
3.2) If the password is correct, we try to leave password.do:
In password.do, Method DO_HANDLE_EVENT :      response->redirect( 'main.do' ).
In debugging I observe the  do_init in main.do is correctly called and also the do_request in main.do
And also:
ob_main_v ?= create_view( view_name = 'main.htm' ).
call_view( ob_main_v ).
But although it seems that it works, I still get the password.html instead of main.html.
Where is the error?
Thanks and regards,
Tommaso

Hi,
I might be wrong but aren't you trying to perform navigation within the AJAX call?
Shouldn't you :
1) Retrieve the content of the AJAX response
2) Navigate consequently in the callback function of the AJAX call
Best regards,
Guillaume

Similar Messages

  • BSP Navigation from iFrame

    Hi,
    I'm trying to leave a BSP session and start a new BSP session from an event raised from inside an iFrame.
    I've tried bsp:call bsp:goto tags, plus various forms of navigate->goto_page etc, but each time it just reloads the BSP page I want inside the iFrame.
    I just want it to bin the whole BSP session and start again from scratch.....
    Do I have to program the response explicitly, or is there a quick way of doing this?
    Cheers,
    Andy

    Hi Raja,
    Thanks for the information.  Unfortunately it didn't solve my problem, as again it restarts the BSP inside the iFrame.
    I've tried various other navigation options and they all result in the same thing.
    The process flow I have is this:
    BSP starts at controller1. The view invoked contains an iFrame:
    <% if model->pdfurl IS NOT INITIAL. %>
             <iframe style="width:100%;height:100%"
                       src="<%= model->pdfurl %>">
             </iframe>
    <% endif. %>
    where model->pdfurl typically contains the URL of another controller with a query string, for example:
    pdf.do?mode=CREATE
    This renders an interactive form inside the iFrame that in turn is submitted to SAP via an Adobe Button by invoking a third controller using a URL like this:
    post.do?form_type="ABC"
    The results of the posting of this form are returned from a BAPI call into a message box on the screen:
    <%@page language="abap" %>
    <%@extension name="htmlb" prefix="htmlb" %>
    <htmlb:content design="design2003" >
      <htmlb:page>
        <htmlb:form>
          <htmlb:tableView id                  = "messages"
                           design             = "ALTERNATING"
                           columnHeaderVisible = "true"
                           footerVisible       = "false"
                           headerText          = "Messages"
                           headerVisible       = "true"
                           table      = "<%= messages %>" />
          <htmlb:button id            = "Cont_Butty"
                        text          = "Continue"
                        onClick       = "CONTINUE" />
        </htmlb:form>
      </htmlb:page>
    </htmlb:content>
    So when I click the "Continue" button I want to restart the original controller, and not have the results displayed inside the original iFrame. 
    Inside the DO_HANDLE method of this third controller I have some code like this:
    DATA: table_event TYPE REF TO cl_htmlb_event_tableview,
            view      TYPE REF TO if_bsp_page.
    CASE htmlb_event_ex->event_server_name.
      WHEN 'CONTINUE'.
    *Return to main page:
    *Get pointer to the BSP application class
          messages->reset( ).
          appc ?= application.
    **start
          response->redirect( appc->main_url ).
          navigation->response_complete( ).
    **end
    appc->main_url contains the correct URL of the main controller.
    The parts of code I've marked between **start and **end I've tried all kinds of different ways of exiting.  The only thing that cleans up properly is if I put some Javascript behind the button to shut the whole browser session down - but I really don't want this.
    I can't help but feel I must somehow pass control back to the initial controller first to get out of this embedded iFrame.
    Thanks in advance for you help,
    cheers,
    Andy

  • BSP Navigation

    Hello,
    I have following problem:
    I have created a BSP-application, with 2 bsp-sites.
    The main-site contains a submit-button.
    If the user clicks on that a new windows is opened via javascript with the command
    window.open. The 2. site is displayed in this window. This window also contains a
    submit button.
    If the button is clicked, the site shall pass some values to the main-site and navigate to it.
    The problem now, is that if I navigate to the main-window via
    navigation->goto_page, the site is displayed in the second window and not in the main-window.
    Could you help me?
    Best regards

    Hi Alberto,
    when you use client-side scripting to launch a new browser window with the
    window.open
    statement you are creating a completely new independent browser window.
    This means you cannot control the two windows from the server, rather you need to use client-side scripting to communicate between the two windows.
    Therefore you need to have your submit button in the second window call a javascript function to control the initial window.
    Cheers
    Graham

  • Calling a BSP application with MVC and send one start value

    Hi,
    I developed a BSP application with BSP. The application has a start page with one input field. The user gives a number and click the send button. The controller creates the modeler and gives the userinput as start parameter for the data search. After the data are read/found, the controller calls a view to show the data.
    This is very easy and does work.
    I have to call this simply application from another one: the caller application sends the start value.
    I don't know, if is better to send the start value in the URL or not. I tried it, but the controller cannot read it.
    How can I call the controller with a start value?
    Thank you!
    Bye
    Patrizia

    Hi ,
    what you need to do is
    1) for the "Send" button attach a java script.
    <htmlb:button id="myButton" text="Submit ...." onClick="sendRequestWrapper()"/>
    this javascript should take the inputfrom the field,
    then in the javascript create the URL.
    function sendReqeustWrapper(){
    sendRequest(InputField);
    function sendRequest(InputField)
    var URL;
    URL  = window.location.protocol + "//" ;
    URL += window.location.host ;
    <b>Note: its only Example link,</b>
    URL += "/sap/bc/bsp/sap/<BSPApplication>/controller.do";
    URL +="?InputFieldName=";
    URL +=InputFieldValue;
    <b>then use</b>
    Your URL will look like:
    http://ld0507.wdf.sap.corp:50007/sap/bc/bsp/sap/<bsp appl>/controller.do?InputFieldName=XXXXX
    window.open(URL,"_self","");
    so once this URL is triggered  you need to goto the respective controller and handle the input. You can see the reply from Mr. Akshaya Rao .
    regards,
    Vijaya Kumar M.
    Message was edited by: Vijaya Kumar

  • BSP navigation LInks Display at Head of the pahe

    Hi All
      In my application iam navigating to pages through some links(URL's)
      for example
    personal pages->candiadate selection->assignements etc..
      that whole text is displaying at the top of the page ,i want to change that text..
    can any one help in this regard..

    Hi
      for example
    In the home page i have links
    candidate selection
    shortlisting
    application
      if i click on application it will display application page and at th etop of page it will show us the link
    personalpages->application
    if we click on candidate selection at home page it will give us the canidate selection page aand at the top of page it ll display link as personalpages->canidateselection..
      now what my rewuirement is i created some custom link and copy the application of some standard page(canidat selection) and changes some buttons etc,..
    so when i click on the custom link at homw page it has to display the custom page and at the top of the page it has to show the
    personapages->customlink
    but for me it is showing the link as personalpages->standard(candidateselection) not the custom one
    so i want to change tha link text..
    how can i do that?

  • How to program navigation in a MVC application? (help please!!)

    Hi,
    I´m exploring how to develop a BSP application with MVC.
    SO far I have a ´page´ composed by a controller, 2 or more sub-controllers and their respective views.
    But I want an application consisting of many pages.. So here I am, in my DO_HANDLE_EVENT method wandering what to do when I want to redirect the user to a new page. I guess there´s two options here:
    1) change the subcontrollers/views for the new one. (using controller_set_active or controller_delete..?)
    2) redirecting to the new page with navigation->goto_page( 'page2.do' ).
    I like the second option, but there´s a problem: all my model instances die!! How can I keep them alive? How can I keep data (objects) alive from the moment a user opens the first page till he logs off the aplication??
    (I tried using the application class, but I just can´t access it using MVC, guess it´s only available from pages with flow logic)
    I truly need a hint on this! Any suggestions are most welcomed!

    Hi Mariana,
    I think the most important advice is to never jump
    directly via goto_page(). As you have noted, this way
    you lose your context. Myself I use the following
    approach:
    1) There is a strict controller hierarchy. The topmost
       controller holds your application data.
    2) In the view of the topmost controller its
       subcontrollers are called via
          <bsp:call url="sub.do" comp_id="yourchoicehere" >
                   <bsp:parameter name = "mode"
                                  value = "<%=mode%>" />
          </bsp:call>
       where "mode" is an attribute of the view which holds
       the information in which state of processing your
       application is.
    3) In the controllers in the DO_REQUEST methods
       you call its views by
       dispatch_input( ).
       l_main_view = create_view( view_name = 'main_view.htm' ).
      l_main_view->set_attribute( name = 'mode' value = mode ).
      call_view( l_main_view ).
      The dispatch_input method is only needed in the
      topmost controllers.
    4) Navigation is done by events which are passed
       automatically to the DO_HANDLE_EVENT method of
       the controller.
       IF htmlb_event IS BOUND.
          CASE htmlb_event->server_event.
            WHEN 'YOUREVENTHERE'.
    5) To understand how things work you should set
       breakpoints in all DO_HANDLE_EVENT and DO_REQUEST
       methods. You will see how events got passed upwards
       the controller hierarchy and how controllers call
       their subcontrollers.
    6) Further hint: Pass all parameters by controller
       and view attributes.
    Hope that helps.
    Joachim

  • Any good material on BSP and specially for MVC

    Hi,
    I am new to BSP extension and MVC and i just want to do some knowledge building on MVC and BSP extension. If any one have good material on it other than http://help.sap.com/[/url] then please let me know.
    Thanks in advance,
    Sunil Bhavsar.

    Here are a couple of other weblogs on the subject of MVC and BSP Extensions:
    /people/brian.mckellar/blog/2004/08/19/bsp-programming-writing-a-pattern-engine
    /people/brian.mckellar/blog/2004/08/09/bsp-programming-event-handling-in-composite-elements
    /people/brian.mckellar/blog/2004/07/28/bsp-programming-handling-htmlb-events
    /people/brian.mckellar/blog/2004/07/28/bsp-programming-writing-composite-elements
    /people/brian.mckellar/blog/2004/07/18/bsp-in-depth-using-the-htmlb-event-system
    /people/brian.mckellar/blog/2003/10/30/bsp-programming-bsp-element-expressions-bees
    /people/sergio.ferrari2/blog/2006/08/28/bsp-in-depth-model-data-binding
    /people/brian.mckellar/blog/2005/04/25/bsp-programming-gen-branchoffset-limit-reached
    /people/thomas.jung3/blog/2005/04/21/webservice-navigator-page-for-abap-and-java
    /people/thomasalexander.ritter/blog/2005/03/16/bsp-how-to-emulate-frames-using-mvc
    /people/thomasalexander.ritter/blog/2005/03/07/bsp-stateless-modelbinding--proof-of-concept
    /people/sebastian.kamp/blog/2004/10/20/doinit-and-the-initialization-of-controllers-in-mvc
    /people/thomas.jung3/blog/2004/09/24/important-lessons-involving-bsp-model-view-binding-and-a-frozen-burrito
    /people/thomas.jung3/blog/2004/09/02/creating-a-bsp-extension-for-downloading-a-table

  • Call webdynpro from BSP (MVC)

    Hi, gurus!
    I have simple bsp created using MVC. I have my own component which includes MainWindow with controller class by default and a view with controller class and model class. Everything was created using Wizard.
    I need to call webdynpro app from this BSP in WEB UI. I have a code that get WD url, then I'm trying to use navigation in DO_REQUEST method whih I redefine for a view controller class:
      data: l_wd_url type string.
      call method cl_wd_utilities=>construct_wd_url
        exporting application_name = 'Z_XR_BP_COURCES'
        importing out_absolute_url = l_wd_url .
        navigation->goto_page( l_wd_url ).
    In test mode it's working fine, but when I call this BSP through WEB UI I recieve an error message:
    "Business Server Page (BSP) error
    What happened?
    Calling the BSP page was terminated due to an error."
    Sorry, if my question a little bit stupid =), but i'm new in BSP.
    Could anyone help me?

    Hi,
    Please check in SDN before posting the questions.
    Check with the following link [Webdynpro from BSP (MVC)|Call Webdynpro Application from BSP Application;
    Hope this helps you.
    Regards,
    Rajani

  • BSP MVC Tree

    Hello,
    I'm building a bsp application using MVC design pattern. My home page should have a navigation tree (menu) on the left section and click on each node should fill up related content (views) on the right section. I do not want to navigate to a new page when user clicks on a menu node. Please note that this application will handle data input.
    This is typically acheived using frames in html. How can we generate this feature using htmlb elements (goto, tree, controller, view etc). I understand the concept of MVC but if you could provide me some sample codes that would be great.
    Your help would be appreciated.
    Thanks, Partho
    Partho Ghatak
    IT (RQT) | Kellogg Company | Off: (630) 956 5756     | Cell: (630) 936 5810 | Fax : (630) 956 5200  | Email: [email protected]

    Hi Partho,
    Welcome to SDN Forums.
    Go through this pdf....
    It is very useful...
    http://www.sap-hefte.de/download/dateien/691/040_leseprobe.pdf
    Go through this link....
    It will guide you how to create it...
    http://www.sapdevelopment.co.uk/webapps/bsp/bsp_orgunit.htm
    Hope it helps.
    Regards,
    Maheswaran.B
    Message was edited by: Maheswaran B

  • Reg:bsp(mvc)

    hi to all,
    i had developed a stateful BSP application using MVC .
    in the first view iam entering a material number.
    in the second view iam displaying the records from a table based on material number.again when i make the application to stateless it is displaying the second
    view.with writing a code for a stateless application.i.e server side cookies.
    could any one help me out.
    with regards.
    gangadhar.

    Hi,
    To set data using cookies,
    call method cl_bsp_server_side_cookie=>set_server_cookie
              exporting
                name                  = 'ZF0707'
                application_namespace = str_app_ns
                application_name      = str_app_na
                username              = 'shtml'
                session_id            = str_ses_id
                data_name             = 'EMP_DATA'
                data_value            = itl_delview_tab
                expiry_time_rel       = 7200.
    To get the data using cookies,
    call method cl_bsp_server_side_cookie=>get_server_cookie
        exporting
          name                  = 'ZF0707'
          application_namespace = str_app_ns
          application_name      = str_app_na
          username              = 'shtml'
          session_id            = str_ses_id
          data_name             = 'EMP_DATA'
        changing
          data_value            = itl_delview_tab.
    here itl_delview_tab is an internal table.
    Also go through the below link,
    http://help.sap.com/saphelp_nw04s/helpdata/en/bd/4cd23a09313b37e10000000a11405a/content.htm
    Please close ur earlier thread and award points if u have got the solution,
    Re: REG:BSP(MVC)
    Regards,
    Sachidanand.B

  • BSP MVC with multiple components approaches

    Hello,
    I have developed in BSP with follows MVC. The BSP application had multiple subcontroller and one main controller. I had one model for each controller,
    but the models were "stored" on the level of the main
    controller.
    Is this the right way? Are there are other approaches?
    Regards & Thanks,
    Guido

    Hi,
    Do you mean to say that u have instantiated the subcontroller models in the main controller using the model data and assigning them to the views in ur subcontroller do_request method?If so it will work however a better approach is to instantiate one main model class (make different method in the model class to access the records from database)in the main controller and use it to assign to the view in the do_request method of the subcontroller.
    Hope this helps.
    Reward useful answers.
    Regards,
    Shrita.

  • Calling standard funtion module in BSP using MVC Design pattern

    HI Everyone,
    I am trying to create one BSP application using MVC Design pattern,
    I want to call standard function module LSO_TRAINING_GET_DETAIL_C, in my BSP Model class,
    can any one tell me how to do this?
    I want to do the model binding also,like i want to retrive data on the frontend bsp screen from the above function module.
    Thanks,
    Vinay
    Edited by: vinay kumar on Jul 3, 2008 12:02 AM

    Hi Vinay,
    If you want to call the FM on some user action , ie on some event than you have to do it in
    DO_HANDLE_EVENT method of your controller class.
    For eg. if you want to call the FM on click of the button, you can do some thing like:
    DATA: button_event TYPE REF TO cl_htmlb_event_button.
    IF htmlb_event IS NOT INITIAL.
      IF htmlb_event->name = 'button'.
          button_event ?= htmlb_event.
         IF htmlb_event->server_event CP 'press'.
              call function LSO_TRAINING_GET_DETAIL_C
                                        exporting
                                         param_exp = val1
                                        importing
                                           param_imp = val2.
                  endif.
          endif.
    endif.
    here press is the OnClick event of the button.
    Now you can use this VAL2 , in the view .You can use the  HTMLB:TABLEVIEW element , if your FM's importing param is a table.
    Hope it helps a bit,
    BE,
    Anubhav.

  • Parameter passing in Navigation

    Hello All,
    I am having a BSP application (using MVC) in which I want to open another URL if some button is clicked. In the new page I want to access Table type variable of Model Class.
    I had looked in sample apps of IT00.
    I tried by setting
    navigation->set_parameter(
                         name = 'books'
                         value = me->vtest_model->books_tab
    "navigation->use_auto_submit_form( '_blank' )"
    on onClick event of button.But due to that my origanal view has disappeared although it opens the given URL and pass the values correctly.
    Also I tried to use window.open method of Java script.but the problem is how to pass the table type to new html.
    Thanks in advance.
    Thanks And Regards
    Rajeev Patkie

    Hi Rajeev,
    I would suggest you go through these weblogs as well.
    1) /people/brian.mckellar/blog/2004/06/11/bsp-trouble-shooting-getting-help
    2) /people/brian.mckellar/blog/2003/10/23/bsp-trouble-shooting-frequently-asked-short-questions
    3) http://help.sap.com/saphelp_webas620/helpdata/en/e9/bb153aab4a0c0ee10000000a114084/frameset.htm
    In this you need to go to Programming Model -> MVC and there is a topic called Data Binding.
    Topics are really wonderfully explained.
    Coming back to your problem....
    Let me know if I have understood your problem correctly.
    You have a model class(M), a controller class(C) and a view(V).
    You want to pass a parameter from the controller(C) to the view(V). The parameter is a table. You need to pass the parameter from the controller(C) to the view(V).
    This can be done using:
    a) Create a view(V) , if not already created
    b) Use the set_attribute method of the view and pass the required parameters (Parameter can be of any type, table, structure, object). Assume you want to pass a table(T) of type EKKO.
    c) In the view(V), go to page attributes and put your required parameter over there. Attribute should have the same name 'T' and of the same type EKKO.
    You can now access the table in the view.
    Let me know if I have deviated from your problem at hand.
    P.S. Experts do let me know if there was any mistake in that discussion.

  • How to create custom BSP application in SAP CRM?

    Hi Experts,
    I would like to seek help from you. I am new in developing CRM objects. My first requirement is to create a custom program that will generate a PDF report.
    First thing I would like to know is the transaction code where I need to create a BSP application that will be able to run in crm webclient. Please clarify if it is in BSP_WD_CMPWB or in SE80 because it is said that I should create BSP application using MVC.
    Second thing is how will I be able to call a smartforms in a BSP application. The scenario for my custom program would be, I should have a two input fields in the selection-screen which are Business Partner ID and Product Lines. together with a button that will trigger the form when ticked.
    Hope to hear from all of you. Your help will be very much appreciated.
    Thanks and Regards,
    Monica

    Hello MonicAnna,
    You can find some information on this page.
    (http://help.sap.com/saphelp_nw70/helpdata/en/59/cd7daa07d711d5b66f006094192fe3/content.htm)
    And also you dont have to use se80 to create new Bsp appliaction. You can create new application by this transaction BSP_WD_CMPWB.
    Zafer,
    Edited by: Zafer Kuru on Dec 5, 2011 10:12 AM

  • How to create downloadable pdf report as hyperlink within BSP application

    Hi,
    I'm developing a BSP application using MVC and htmlb extensions on a WAS 6.40. One of the requirements of my webapplication is:
    - the ability to generate a report in pdf format at runtime, using data retrieved from a backend SAP CRM 3.0 system
    and
    - make this report available/downloadable via a hyperlink in the application.
    I am aware of tools like Smartforms and Adobe interactive forms but need some help to get started and choose the right tool.
    regards, Roelof Jan

    Hi,
    we've done that by firstly building a RFC which prints the report to sap-spool:
    call function 'GET_PRINT_PARAMETERS'
          exporting
            expiration     = 1
            immediately    = ' '
            new_list_id    = 'X'
            line_count     = 65
            line_size      = 132
            report         = sy-repid
            no_dialog      = 'X'
          importing
            out_parameters = wf_params
            valid          = valid_flag.
        if sy-subrc ne 0 or valid_flag eq false.
        endif.
        new-page no-heading no-title print on parameters wf_params
                          no dialog .
    ... list processing ...
    new-page print off.
      concatenate programname sy-uname+0(3) into lc_rq2name separated by '_'.
      select * from tsp01 into tsp01_wa
                          where rq2name = lc_rq2name
                          and rqowner   = sy-uname
                          order by rqcretime descending.
        wf_spono = tsp01_wa-rqident.
        exit.
      endselect.
      if sy-subrc ne 0.
        clear wf_spono.
      endif.
    Then convert the spooljob:
      call function 'CONVERT_ABAPSPOOLJOB_2_PDF'
        exporting
          src_spoolid              = wf_spono
          no_dialog                = 'X'
        tables
          pdf                      = witab
        exceptions
          err_no_abap_spooljob     = 1
          err_no_spooljob          = 2
          err_no_permission        = 3
          err_conv_not_possible    = 4
          err_bad_destdevice       = 5
          user_cancelled           = 6
          err_spoolerror           = 7
          err_temseerror           = 8
          err_btcjob_open_failed   = 8
          err_btcjob_submit_failed = 9
          err_btcjob_close_failed  = 10
          others                   = 11.
      if sy-subrc ne 0.
        return.
      endif.
    Delete Spooljob and generate cached response:
      data del_spono type  tsp01_sp0r-rqid_char.
      del_spono = wf_spono.
      call function 'RSPO_R_RDELETE_SPOOLREQ'
        exporting
          spoolid = del_spono.
      if witab is not initial.
        loop at witab into itab .
          translate itab using ' ~'.
          concatenate output itab into output in character mode.
        endloop.
        translate output using '~ ' .
        create object cached_response
               type cl_http_response
               exporting add_c_msg = 1.
        l_pdf_len = strlen( output ).
        cached_response->set_cdata( data   = output
                                    length = l_pdf_len ).
        cached_response->set_header_field( name  = if_http_header_fields=>content_type
                                           value = 'application/pdf' ).
        cached_response->set_status( code = 200 reason = 'OK' ).
        cached_response->server_cache_expire_rel( expires_rel = 180 ).
        data: guid type guid_32,
              display_url type string.
        call function 'GUID_CREATE'
          importing
            ev_guid_32 = guid.
        concatenate runtime->application_url '/' guid '.pdf'
                    into display_url.
        cl_http_server=>server_cache_upload( url      = display_url
                                             response = cached_response ).
        app ?= application.
        app->print_url = display_url.
      endif .
    The display_url has to be used in the normal response-view:
    <script type="text/javascript">
    var param = 'width=700'
          + ',height=550'
          + ',left=0'
          + ',top=0'
          + ',menubar=no'
          + ',location=no'
          + ',resizable=yes'
          + ',status=no';
      window.open('<%= application->print_url%>', 'DRUCK', param ).focus();
    </script>

Maybe you are looking for

  • Error while deploying web application in OAS

    I was trying to deploy a web application in OAS through enterprise manager. But I get the following error. Can any one please help me. An error occurred when processing the data submitted. Find the appropriate field and enter the correct information

  • Won't wake, tried everything - need someone smarter!

    My Intel iMac running 10.5.6 had been working fine since late 2007, but has recently had problems waking up. Holding down the power button does nothing - black screen, no fan or drive noise. The only way I can get it to reboot is to unplug it for a f

  • New to Infinity and upset.

    I was pleased to receive a phone call saying I could at last get Infinity over 12 months after the first estimated date. I duely agreed to get Infinity installed. I received a BT home hub 3 and thought I was, as a valued customer, getting the best de

  • Deploying a .war file - outside of Tomcat default webapps?

    I would like to deploy a war file outside of the [tomcat]/webapps directory. How can I get tomact to recognize AND unpack a war file in a location other then the default webapps directory? I have tried the following; altering server.xml - added conte

  • Authorization control for document status

    Dear All, I want to control the status change of Documets created, How can i achieve this, so that a perticular user /ID can change the perticular status, I have , 01 02, 03, 04, Rel. 05, Do i need to put some trace anf find Objects to control... or