Professional Documents
Culture Documents
Question 5: Would you prefer creating multiple Custom Controllers OR would you go for
separate Web Dynpro components and then do Component usage.
This would actually depend on the requirement, but ideally separate Web dynpro
components should be created and reused. One can also use the assistance class for
segregating business logic.
Question 6: How many component controllers can a Web Dynpro Component have?
Component Controller is only one. You can create multiple controllers, but those are
called Custom Controllers.
Note: If you are asked about the Web Dynpro architecture, you should talk about both
the MVC framework and the controllers.
Every Web Dynpro application is structured according to the Model View
Controller programming model:
The model forms the interface to the back end system and thus enables the Web
Dynpro application access to data.
The controller lies between the view and the model. The controller formats the model
data to be displayed in the view, processes the user entries made by the user, and
returns them to the model.
Question 7: Suppose your Web Dynpro has 10 nodes in the Component Context. Will all
10 the nodes be available in the Interface controller?
Nodes from the Component context are available to the interface controller only when
the nodes are declared as interface nodes. To create an interface node, set the interface
property to yes as shown in the screenshot below:
To create an interface node, set the interface property to yes as shown in the screenshot
to the right:
Once created, the interface node is indicated by a special symbol as shown in the figure
below and the property Interface Node is set to yes:
Whenever we embed any view in a window, at the moment that view becomes
automatically available to the Interface Controller and shows up as an interface view in
the Interface Controller. You do not have to declare a view as an interface view as is the
case with interface nodes.
Question 9: Is it true that each controller has its own Context node?
Yes, Each controller has its own context, methods, and Events.
Question 10: At design time how do you decide whether to declare a node in the
Component Controller or in the View Controller?
This again depends on the requirement: If the node is going to be accessed in multiple
views, it should be declared at the Component Controller level. However, If the node is
absolutely specific to only one view, it can be defined in the View Controller. As the size
of Webdynpro development grows, it starts becoming complex and the need to define
attributes, nodes, methods etc. at the Component Controller increases.
Hook methods in webdynpro are standard web dynpro methods that are called at
different time in the web dynpro lifecycle. These methods are listed in the screenshot
below: These methods start with WD*.
Question 12: Are all the hook methods available to all the Controllers?
No . They are specific to controllers. See the details in the image above:
Question 13: Sequence in which web dynpro hook methods are called:
If you want to understand the sequence , put breakpoints in all these methods. Execute
the web dynpro application , then do some action on the view , then close the application
window:
Have a look at how the control passes from component to window and then to view:
Now view is displayed . Suppose user does some action on the view:
7. WDDOAFTERACTION ( View Controller )
8. WDDOBEFOREACTION ( View Controller )
9. WDDOBEFORENAVIGATION ( Component Controller )
after interaction
8. WDDOBEFOREACTION ( View Controller )
9. WDDOAFTERACTION ( View Controller )
10. WDDOBEFORENAVIGATION ( Component Controller )
11.WDDOMODIFYVIEW ( View Controller )
12.WDPOSTPROCESSING ( Component Controller )
So now if you are being asked “What is called first: WDDOINIT or WDDOMODIFY?” OR
“What is called first WDDOINIT for Window controller or WDDOINIT for View Controller”?
You should be able to answer such questions.
Question 14: If one view is called 10 times in the lifespan of a webdynpro component,
how many times will the method WDDOINIT be called and how may times will
WDDOMODIFYVIEW be called ?
WDDOINIT will be called only once.
WDDOMODIFYVIEW will be called 10 times.
WDDOMODIFYVIEW has a parameter FIRST_TIME. If this is ‘X’, then the view is getting
called first time.
Question 15: What are PRE POST and OVERWRITE exit methods in web dynpro?
Whenever a web dynpro component is enhanced, these 3 methods become available for
all methods in Webdynpro. Let’s take an example of these methods for WDDOINIT.PRE
exit: This method is called before WDDOINIT is called.
POST exit: This method is called after WDDOINIT is called.
OVERWRITE exit: In this case, WDDOINIT is not called. Instead, OVERWRITE exit
method is called.
Question 16:What is an Assistance class in webdynpro ABAP? Where do you define an
assistance class? How many assistance classes can a webdynpro component have?
Assistance class helps you achieve two things:
1) Segregation of business specific logic (one of the purpose of MVC).
2) Performance benefit.
We can write the business logic in the methods of the View, Window or even the
Component controller. But it is not a good practice to load all the business logic in the
views or windows. So SAP has provided an option of assistance class where you can
write all your business logic. By this way, you are still in the framework of your
webdynpro and also avoid loading too much logic in the components of webdynpro itself.
Assistance class methods are much better from a performance point of view than calls of
Web Dynpro controller methods. A web dynpro component will have only
one assistance class and it is defined at the component level as per the screenshot
below. The assistance class is automatically instantiated when a component is called.
You can access the instance of this class with the attribute wd_assist, which is created
when you create the assistance class in web dynpro.
Imp*
Question 17: What is Singleton Property of a Context Node?
Understanding Singleton property of a context node and how it works in conjunction with
the lead selection event can be a bit complicated. If you do not already know what a
Singleton set is , I recommend you going through an example of Cars(Parent node with
cardinality 0..n ) and Customers ( Nested child node with cardinality 0…
n ) on Singleton Node by clicking on the link. This is not that tough , just spend some
time with it and you should be okay.
The best way to answer this question is by taking an example.
Say there are two ALV’s on a View:
ALV1 —> NODE_SO_HEADER—-> Displays all the Sales Orders.
ALV2 —> NODE_SO_ITEMS ——> Displays all the line items for the Sales Order selected
in ALV1.NODE_SO_ITEMS is the child node for NODE_SO_HEADER and is declared as
Singleton node.
Since this node is declared as singleton , at runtime , it holds the line item data only for
the Lead Selected Sales Order from NODE_SO_HEADER and not for all the Sales Orders
from the parent node.
Whenever the lead selection changes for the parent node, line item data for that lead
selected order is fetched from database and populated in the child node.
Supply function in web dynpro
To give you an analogy, we all know that a constructor method of a class is called
whenever an object of that class is instantiated. In the same way, a supply function for a
context node is called when the node is accessed for the first time.
The supply function is generally used in combination with singleton nodes. So whenever
the lead selection of the parent node changes, the supply function of the singleton node
recalculates and repopulates the child node.
Question 22: Some important Web Dynpro attributes that you should know:
Some attribute in webdynpro that are used very frequently and some of those that you
must know are :
Wd_this
Wd_context
Each controller has the above two mentioned attributes.
To elaborate, if you are using the above two attributes say in a method of a View
Controller, then WD_CONTEXT is the reference to the Context node of the View and
WD_THIS is the reference to the View Controller itself.
Wd_assist: This attribute is created when the assistance class is saved and activated
for a web dynpro component. All the methods of the assistance class can be accesses by
using this attribute.
Question 25: How do you introduce line break for a UI element in any layout?
Say if you are using matrix layout, you will say Matrix Head data for the UI element for
which you need a line break.
Question 26:Can you call/launch one web dynpro application from another webdynpro
application?
Yes, you can launch one webdynpro application from another webdynpro application.
First, you should get the URL of the web dynpro component that you want to launch and
second, call that URL in an external window.
To get the URL of any web Dynpro component, you use the FM
CALL METHOD cl_wd_utilities=>construct_wd_url
EXPORTING
application_name = ‘ZDEMO’
IMPORTING
out_absolute_url = str.
Once you get the URL in str, you can call this web dynpro using ‘str’ and
fm: create_external_window.
Creating Transaction code for Web dynpro ABAP
Yes, you can create a Tcode for webdynpro application. Go to SE93 , create Tcode,
choose the last option and maintain default values as shown in the screenshot:
Question 28: Can you pass parameters in a webdynpro URL?
Yes, you can pass parameters in webdynpro URL and read them too in your web dynpro
component.
Example: http://domainname.com:8000/sap/bc/webdynpro/sap/zdemo_webdynpro?
sap-language=EN&var1=4500000001&var2=00010
Question 29: How do you read parameters passed in the Web Dynpro URL?
First lets understand how a typical webdynpro application looks like:
When you create a web dynpro application , you can see the link URL generated by web
dynpro.
It will be something like:
http://domainname.com:8000/sap/bc/webdynpro/sap/zdemo_webdynpro?sap-
language=EN&sap-client=100.
Whatever comes after the ‘?’ and is followed by ‘&’ is an URL parameter. You can see
sap-language and sap-client as default parameters whenever you launch your web
dynpro in browser. The cool thing is you can add some custom variables
too. http://domainname.com:8000/sap/bc/webdynpro/sap/zdemo_webdynpro?sap-
language=EN&sap-client=100&var1=4500000001&var2=00010.
So var1 and var2 are custom webdynpro URL parameters and you can read them in
the HANDLEDEFAULT method of your main window:
@Component Level:
@View Level:
Question 32: Briefly explain how will you use implement Select Options in Web
Dynpro?
1) Declare Component Usage for Standard WD
component WDR_SELECT_OPTIONS both at component and view level.
Important
Question 34: What is OVS? Can you explain the different phases used in OVS?
First we should understand the difference between Value help and OVS i.e. object Value
Selector.
We use generic Value Help only for the field to which it is bound.
OVS is used when we want to populate multiple fields based on one field on the screen.
So as per the screenshot , If I select Userid from OVS help, First name and Last name
will be populated automatically. The standard component WDR_OVS is used for
implementing OVS.
OVS works on the PHASE MODEL and different tasks are performed during different
phases.
The current phase is indicated by the parameter PHASE_INDICATOR.
Phase 1:
In this phase you have the possibility to define the texts, if you do not want to use the
defaults: So You can play around with the highlighted texts in the screenshot below in
this phase.
Here we call the method ovs_callback_object->Set_Configuration
Phase 2:
If you do not want the filter fields, you can do that in this phase and the table will be
displayed directly. Refer screenshot below. The table is displayed directly. I have blurred
some results. Here you can call the method ovs_callback_object-
>Set_Input_Structure
Phase 3:
In this Phase, You write the select queries that should run as per user input when the
user hits ‘Start Search’ button and finally set the output table.You can call the
method ovs_callback_object->Set_Output_Table for that purpose.
Phase 4:
In this phase , you pass the selected record to the Web dynpro Fields.
i.e. set the attributes using ovs_callback_object->context_element-
>Set_Attribute
Question 35: Briefly explain how will you implement ALV in Web Dynpro?
To implement ALV in Web Dynpro, you need to use the Standard WD
component SALV_WD_TABLE.
We need to use:
a) the view ‘TABLE’ of component SALV_WD_TABLE
b) the node ‘DATA’ of component SALV_WD_TABLE.
Here is the brief process:1) Declare component Usage for SALV_WD_TABLE at the WD
component level and the view level.
@ Component Level:
@ View Level:
2) Put a VIEWCONTAINER UI element on the MAIN view and ember the view ‘TABLE’ of
SALV_WD_TABLE into it.
3) Let’s say the ALV data is to be populated in NODE_FLIGHT.
Write the logic to select the ALV Data and bind it to NODE_FLIGHT:
node_flight_alv->BIND_TABLE( lt_node_flight_alv ).
4) Do a Context mapping between NODE_ALV and the node ‘DATA’ of
SALV_WD_TABLE.
Also explore
other Plug Types:
Let me know if you need answers to the below questions by putting your comments
below:
Question 40: What is the difference between Drop down by key and drop down
by index ?
DDBK - If you want to fill your dropdown by using dictionary i.e., from domain use drop down by key.
DDBI - If you want to fill your dropdown by using context (cardinality 0-n) use drop down by index. In DDBI you
can also use domain values. That is the main difference.
We ca generate the error/success/warning message from Code wizard. SAP has already
provided a standard functionality to generate the message from Code wizard option and
it automatically generates the code in the required methods.
Question: Can you have Totals and Subtotals in Web dynpro ALV ? How ?
Hint: First get the reference of the ALV. Then get the columns.
By looping at lt_columns , get to the required column.
Once you achieve this, check methods create_aggr_rule and create_sort_rule of the
class
cl_salv_wd_field.
Question: Can you add custom buttons on Web Dynpro ALV toolbar ? How?
Question: Can you add custom buttons in Web Dynpro ALV cells ? How?
Question: Can you add Image / Icons in Web Dynpro ALV cells ? How?
How do you define and implement action handlers for them?
I hope this blog helps you crack your web dynpro interview
1) Types of ABAP UI Technologies
Ans: Webdynpro for ABAP, BSP
lo_nd_node1 = wd_context->get_child_node
( name = wd_this->wdctx_node1 ).
lo_el_node1 = lo_nd_node1->get_element( ).
**Read Node1
lo_el_node1->get_static_attributes(
importing
static_attributes = ls_node1 ).
**Write to Node1
lo_el_node1->set_static_attributes(
exporting
static_attributes = ls_node1 ).
22) why FQDN(Frequently Qualified Domain Name) is necessary for running Webdynpro
Applications
Refer to sap help:
http://help.sap.com/saphelp_erp2005/helpdata/en/67/be9442572e1231e10000000a155
0b0/content.htm
21) Standard ALV Component required to create ALV Reports in Webydnpro
SALV_WD_TABLE
25) How do you Control the visibility of the Webdynpro UI elements Programmatically.
Create a context element of type wdui_visibility and bind to the visibility property of
the UI element.
28) What are the webdynpro init events and what is the sequence of trigger
-Custom Controllers->Custom controllers are defined during design time and these
are optional. The visibility Custom controllers is in the entire component and has
the life time equal to life time of the component. Custom controllers are used if a
set of views have to be grouped to perform a special function or hold a set of data.
-View Controller->Flow logic of the views are in view controller and a view can
have only one view controller. The visibility of View controller is specific to view
only.