Max Views in component controller.(perfomance)
hi guru,
how many view can exist in one component controller .
i like to follow the best pratices .if i create more then 12 view.
it will affect the perfomance or not .
Please give me the reason for that.
Advance thanx
Regards
Vivekanananthan.S
SAP has published some guidelines on the designing WD Components in the latest version of the online help:
http://help.sap.com/saphelp_nw70ehp1/helpdata/en/c6/58e70398244a87a2c39e700bdae4a9/frameset.htm
We state that you should limit yourself to 15 views per component. The actual technical limit is higher although there is no definite number when you reach the compliation error. The size of the views also effect when you reach the maximum number. You see classes get generated behind the scenes for your Web Dynpro Components. There are compiler limits on how large a class can be. The more views/the more code and objects in the views - the larger this generated class gets.
Similar Messages
-
Call a method in the view from Component Controller
Hi Friends,
I have written the code for calling the RFC in Component Controller.
My requirement is to change the properties of UI elements in the view, if I get any exception while calling RFC.
Can Call a method in the view from Component Controller.
Regards,
Lakshmi Prasad.HI,
You can get the error message during the exception of calling RFC in view itself.
Any way you may call the RFC at some action in the view only.
Can you explain me what you are trying to do?
Kind Regards,
Mukesh -
View raises Component Controller Event
Hello,
I defined an even onUpdate in the component controller. A custom controller subscribed to this event. For that I have a method handleOnUpdate in the custom controller. Now I want to raise this event in a view after pressing a submit button of this view.
How can I raise the event?
So data flow would be:
1. Button pressed in view
2. Raise event in component controller
3. Handle raised event in custom controller
Regards
ReneHi Rene,
Your scenario is like:
<b>View: OnSubmit -> Component Controller: OnUpdate -> Custom Controller:</b> <b>handleOnUpdate.</b>
For this, in the code for <u>OnSubmit</u> in your view, you need to add code as
wdThis.wdGet<ComponentControllerName>().onUpdate();
and in the <u>OnUpdate</u> method in Component Controller:
wdThis.wdGet<CustomContControllerName>().handleOnUpdate();
Also, you need to <b>add the Component Controller to your View</b>, using Properties Tab
<b>and Custom Controller in Component Controller</b>, using its properties tab.
Hope it helps.
Regards,
Alka. -
Calling a method in view from component controller?
Hi,
Is it posible to call a method that is defined in the Component Controller in the View?
If it is posible please give some sample code how to call the method?
Regards,
Padmalatha.KPadmalatha, all the methods defined in a controller from 'Methods' tab are instance methods. An instance method defined in a component controller is callable from any view controller that holds a reference to the component controller.
Defining methods between the tags
//@@begin others
//@@end
is useful if you want to declare static methods. -
Calling component controller's method
Hi,
How can i call component controller's method from a view?
Thanks.Yes, You can call method of component controller from View.
If you have already mapped any context node/attribute between your view and component controller then it means component controller is already added in your view. If you have not done same then you can add component controller by going into the properties of view.
To access the method use following code.
wdThis.wdGet<Your_controllername>Controller().<methodName>();
Regards,
Rohit -
How to fire event in view controller from component controller.
I have a component usage that fires an event wich i have subscribed in the component controller.
iv_usage->subscribe_event( iv_event_name = 'TAKE_IT'
iv_handler = me ).
After the event the method IF_BSP_WD_EVENT_HANDLER~HANDLE_EVENT in the component controller is called.
method if_bsp_wd_event_handler~handle_event.
endmethod.
The usage component is opened as a popup window. After pressing a button, the data is transfered via context node binding to the calling component. But now i want to close the popup.
My intension is to fire a event for the view controller in the IF_BSP_WD_EVENT_HANDLER~HANDLE_EVENT method that closes the popup.
Is this possible?
Or let me explain it this way:
I want to close a popup after a button in the popup is pressed.
best regards
JürgenHello Juergen
I am assuming your target pop-up is of type ref to IF_BSP_WD_POPUP.
1.Make this a view controller class attribute.
2. After the code to create the pop-up, you can add the following block :
gv_target_popup->set_on_close_event( iv_view = me iv_event_name = 'CLOSEPOPUP').
3. Now define event handler EH_ONCLOSEPOPUP where you can write the logic for on_close.
You can access the same reference gv_target_popup at the event handler level as well.
Hope this helps.
Regards
Nisha -
Calling a method in the view controller from the component controller
Hi
Is there anyway to call a method in the view implementation from the component controller??
Thanks
jackThanks for all your replies. I want this kind of a functionality because Im trying to invove a DC (Child DC) from a Parent DC such that the Child DC's view is displayed onto the view container of the Parent DC. I have embedded using 'interface view of a component instance' in the Parent Window and am able to create the component and set usage though the onPlugDefault of the Child View.
But I observe that when i make a call from the parent, the flow is like this:
1. The wdDoInit of the Child Component Controller gets triggered first.
2. Then the wdDoInit of the Child's <b>VIEW</b> gets triggered
3. and <b>THEN</b> the onPlugDefault of the Child Component Interface View
What I had actually wanted was to Fire onPlugDefault where Im calling a method LoadData(), after which the Child DC's view must be triggered so it can display the fetched data.
What is actually happening is the view gets displayed, but no data is displayed in the view.
Right now I have just given a work around where Im triggering <b>LoadData()</b> of the <b>COmponent COntroller</b> from the <b>wdDoInit</b> of the <b>VIEW</b>.
Is there a better way to do this? I find it strange that I have to load the Data from the view.
Thanks
Jack -
Hook methods in component controller vs hook methods in view controller
Hi,
I want to know how WDDoInit in component controller differs from the same in view controller.
How the lifecycle flows in both controllers?
Eg. if i create a method intialize() in both component & view controllers and if i called initalize method in view, which one will be called?
Need to know how the flow works.
Regards,
ManojDear Manoj,
Please check if it is helpful.
The order of execution of standard hook methods when a WDJ application is called the first time is as follows:
1. Component Controller DoInIt()
2. View Controller DoInIt()
3. Interface Window Controller
4. Component Controller DoBeforeNavigation()
5. Component Controller DoModify()
6. Component Controller DoPostProcessing()
After this, if you navigate to some other view, then the order of execution of methods of that New view will be:
1. Component Controller DoBeforeNavigation()
2. New View DoInIt()
3. New View onPlugfromFirstView
4. Component Controller DoModify()
5. Component Controller DoPostProcessing()
Then, if you again navigate back to the first view, then the order of execution of methods is:
1. Component Controller DoBeforeNavigation()
2. New View onPlugfromNewView
3. Component Controller DoModify()
4. Component Controller DoPostProcessing()
Webdynpro - Sequence of Execution
Thanks & Regards,
Patralekha -
Diff between Component controller,Custome controller and View controller
hi,
Can any body tell me the following details,
1.difference between the Component controller,Custome controller and View controller in WD-ABAP.?
2.what is Lead Selection?
Regards,
RaviHi Ravi.
The component controller is visbile to all views in a component. So all context nodes and methods you create here can be accessed from all views in the component. This way you can share data between the views by mapping context nodes or thru method calls. You can also mark methods and nodes as interface so that they are acessable from other components that define component usages to this cmponent.
Custom controller is quiet similar to the component controller. You can define it if you want to group some views with a custom controller for a certain functionality.
If you want to access a custom controller in a view you have to define the usage first on the properties tab of the view.
A view controller is only visible in the view itself. So all methods or context nodes you define here are only accesable by the current view.
The lead selection is in most cases the current selected element in a context node. The lead selection is used by many UI elements to determine which element has to be shown (e.g drop down).
If you have a table with single selection the current selected table row is the lead selection element of the bound context node.
SO you can get the lead selection element easily in any mthod by calling context_node->get_element( ).
Hope this clears your questions.
Cheers,
Sascha -
Mapping one node in a view context to many nodes in the component controlle
Hi guys,
I need to map an element (attribute) of a node in the View Context to an attribute of multi nodes of the same type:
Context View:
customer_no
|
| -> KUNNR
Component Controller Context having two nodes:
- Node1
RFC1
|
|->KUNNR
- Node2
RFC2
|
|->KUNNR
Above I need to map the (KUNNR) in customer_no node to KUNNR in the RFC1 RFC2 before i execute the two RFCs services.
Note:
if this is not possible would you mention another solution.
Thanks,Hi,
As per MVC you cannot map context from view controller to component controller.Mapping can happen from component
controller to view controller.
You cannot create mapping for context attributes. You can map nodes if both source node and destination node both has same structure and same number of attributes. If they dont contain same number of attributes the extra attributes from the source node gets copied to the destination node.
In your case before the RFC execution you can read the value of attribute Kunnr from view and set it the RFC attribute Kunnr before the Function module execution.
Regards
Bala Baskaran.S -
Unable to access Component Controller attributes from Views.
Hi,
I am unable to access the attributes in component controller from methods in View even by using WD_COMP_CONTROLLER.
Say, I want to access the attribute G_FLAG in component controller from a method in the View Controller by the following code :
WD_COMP_CONTROLLER->G_FLAG = 2.
Then an error message is showing up saying - Field G_FLAG is unknown. It is neither in one of the specified tables nor defined by a DATA statement.
What should I do? Plz suggest..Hi,
Please check the Public check box of the attribute in the component controller.
Hopefully it will solve your problem.
Thanks -
Call a component controller methods from a view
Hi,
I have created a view v1 with context node c1and binded the context node c1 of it with the component controller so that the values entered in the view v1 are available.
now can i know how to access this values from component controller context node which i binded in a other view......
Thanks,
PremHi Sayan,
component : BP_HEAD
View: BP_HEAD/BPHeadOverview
I have called event EH_ONPOPUP_CLOSED when popup is closed in view BP_HEAD/BPHeadOverview and i get all the values entered in the popup here using below code.
lr_context_node = gr_popup->get_context_node( iv_cnode_name = 'ZPOPUPCN' ).
lr_col_wrapper = lr_context_node->collection_wrapper.
lr_entity = lr_col_wrapper->get_current( ).
IF lr_entity IS BOUND.
lr_entity->get_properties( IMPORTING es_attributes = ls_data ).
ENDIF.
now ls_data contains all the data entered in the popup ie. - firstname, lastname, house_no, street, city, postal code, country.....
now it have tried the below code to map/set the entries with the Account management - individual account creation screen.
data : ls_header TYPE crmst_header_object_buil, " BuilHeader
ls_header1 TYPE crmst_address_buil, " BuilStandardAddress
ls_header-firstname = ls_data-zfirstname.
ls_header-lastname = ls_data-zlastname.
ls_header1-house_no = ls_data-zhouseno.
ls_header1-street = ls_data-zstreet.
ls_header1-city = ls_data-zcity.
ls_header1-postl_cod1 = ls_data-zpostcode.
ls_header1-country = ls_data-zcountry.
ls_header1-telephonetel = ls_data-ztelno.
ls_header1-e_mailsmt = ls_data-zemail.
entity ?= me->typed_context->builheader->collection_wrapper->get_current( ).
IF entity IS BOUND.
entity->set_properties( EXPORTING is_attributes = ls_header ).
ENDIF.
entity1 ?= me->typed_context-> BuilStandardAddress->collection_wrapper->get_current( ).
IF entity IS BOUND.
entity1->set_properties( EXPORTING is_attributes = ls_header1 ).
ENDIF.
but the problem is both the entity is INITIAL. -
How to call Custom or Component Controller methods from View Controller
Hy Guys,
how do I call Custom Controller or Component controller methods from a View or Context Controlller?
thanks in advance
JürgenHi Juergen
Yes it is possible, pls follow the below approach to access the component controller in context node class
1) since the standard component controller class is protect variable , declare a variable of type component controller in your controller class.
say for example the public variable you declared is g_comp_controller
2) now redefine the controller class method WD_CREATE_CONTEXT and add the below lines of code
g_comp_controller ?= me->comp_controller.
3) go to context node class (CNXX) there declare the varaible which of type controller class (IMPL) as public variable, for example g_owner
4) redefine the method IF_BSP_MODEL~INIT and write the below code
CALL METHOD super->if_bsp_model~init
EXPORTING
id = id
owner = owner.
g_owner ?= owner.
5) now the variable g_owner that is declared in (CNXX) contains reference to your controller class
6) in on_new_focus method access your component controller in the below manner and access the entities also.
DATA: lv_owner TYPE REF TO xxxxx_impl, " Implementation class
lr_comp_cont TYPE REF TO xxxx_bspwdcomponen_impl, " component controller class
lv_entity type ref to cl_crm_bol_entity.
lv_owner ?= g_owner.
lr_comp_cont ?= lv_owner->g_comp_controller.
IF lr_comp_cont IS BOUND.
lv_entity ?= lr_comp_cont->typed_context->mdfcampaign->collection_wrapper->get_current( ).
now lv_entity contains the value of component controller context node.
Thanks & Regards
Raj
Edited by: bmsraj on Sep 27, 2011 3:28 PM -
Call a view's method from Component Controller.
Hi
Is it possible to call a view's method from Component Controller.
Regards
NikhilHi Tummuru,
I have created an event in Component Controller by the name toMenuView. Now I created a method in which this event is getting fired. Foll. is the code of the method.
public void fireToMenuView( )
wdComponentAPI.getMessageManager().reportSuccess("fireToMenuView");
wdThis.wdFireEventToMenuView();
Now I have created an event handler "handleToMenuView" in the MenuView and subscribed the event handler to the event in Component Controller.
The control is reaching to the fire event in component controller but not to the Event handler in view controller.
What am I missing.
Regards
Nikhil -
Access context of Component Controller from Views
Hi,
In WD Java, I used to set attributes value for Context present in Component controller from the view. I used to write a piece of code at the view level for this.
How do i do this in WD ABAP. I believ I have to get instance of Component controller like this:
lr_compcontroller type REF TO ig_componentcontroller.
lr_compcontroller = wd_this->get_componentcontroller_ctr( ).
Regards,
Murali.Hi Murali,
yes you can access the comp_controller in the same sort of way in WDA.
You declared component usages on the property tab.
The wizard (ctrl-F7)has various options, check it out.
One is calling methods on declared controller usages.
the result is for example such generated code:
DATA: l_ref_ANOTHER_CONTROLLER TYPE REF TO IG_ANOTHER_CONTROLLER .
l_ref_ANOTHER_CONTROLLER = wd_This->Get_Another_Controller_Ctr( ).
data:
l_Api_Another_Controller type ref to IF_WD_CONTROLLER.
See also local interface code in CTRL-SHIFT F1.
You work directly with this info. Indeed constants from the interfaces should be used this way.
Work with the wizard. And declare all usages in the properties tab.
Moving outside of the framework is possible but not recommended
regards
Phil
Maybe you are looking for
-
Hi, I am trying to implement a simple image gallery with alpha transition using as3. But an issue is occuring with this. After each image alpha transition, the stage becomes blank. The code i have used for image Gallery is following.CAn anybody
-
Urgent: How to restore a database to another machine without backup files
I am a beginner with Oracle and need to solve a tough problem. I have all the files of a database on a hard disk without previously backed up. I don't have the old machine right now, I only have the hard disk from the old machine, and the new machine
-
PRE9 and support for 1080P video
Does PRE9 recognize 1080P for import and export to YouTube and disc burn? Thanks, L.
-
Can't add ANY email accounts to iPhone
I can't add any email accounts to my iPhone's mail application. (it used to work just fine) I have tried to enter my account information using my yahoo, gmail, and exchange and none work. I enter my account information and after it verifies it takes
-
Dear Experts, I have a scenario that I have ordered a packaged item as item qty as 1 no. & vendor sends that material as 1 no. but this 1 no. consists of 20 boxes. So, I will be creating GR for 1 no. My question is, where can I make entry of these