SAP Web Dynpro ABAP Interview Questions Part1
Preparing for SAP web dynpro ABAP interview ? You have come to
the right place :). This blog will be your friend in your
preparation . I believe in doing things one step a time . That is
why I am planning to divide this blog into 3-4 parts for your
maximum benefit . Do these one at a time and you will be all set
for your SAP webdynpro ABAP interview in 3-4 days. All the
best!
Let's get started:
Imp*:What is Model-View-Controller MVC architecture in Web
Dynpro ABAP?This is one of the most common Web Dynpro ABAP
interview questions. I am sure you will be asked about this. This
is your chance to show how much you know about Web Dynpro . Prepare
this answer on your own .I will give you a link to show your
webdynpro flair :Web Dynpro Tutorial part 2Webdynpro follows MVC
design Pattern. MVC(Model View Controller).View: it comes under
User interaction layer i.e. what user sees on screen. It contains
all the UI elements(buttons, input fileds, tables , graphs etc
anything that user interacts with. It visualises application data
and doesnt care where the data comes from , it only displays
data.Model : Model comes into business Interaction layer which
basically interacts with application data. So model generates
application data and doesnt care where the data gets displayed.
Data might get displayed in table or graph or ALV or text view
.Controller : It coordinates between Model and view. Binds the User
and Business Interaction layer together.When doing something in
view like entering input field or clicking button i.e user actions
on mouse or keyboard request Response cycle happens between
controller and view. Controller takes user input from view and
passes onto model . Model dos processing logic on data and sends
back data to controller and subsequently controller gives data back
to view to display to the user.So we are hiding application logic
to the view. For eg model can be an RFC function module / webservic
e from Non-sap system .Standard WDA applications: WDR_TEST_EVENTS
and WDR_TEST_UI_ELEMENT.
Controllers in Web Dynpro:Question 1:What are the types of
Controllers in Web Dynpro ABAP?The types of controllers are listed
in the screenshot below:
Types of Controllers in webdynpro ABAP
Question 2:What is Component Controller?Component Controller is
the King of all Controllers.It is the backbone of your Web Dypro
Component . It is like a Global or TopInclude for you program . It
controls the entire activity of your Web Dynpro Component.
Question 3:What is an Interface Controller?Whenever we want
views , nodes or methods of a particular web dynpro component to be
available to other the outside world ( i.e. other webdynpro
components) , we make use of Interface controller . Interface
Controller is created by default when a webdynpro component is
created.Interface Controller would generally come into picture when
you are doing component usage of some sort in web dynpro i.e.
re-using views/methods/nodes of one WD component in another.
Question 4:What is a Custom Controller?When your Component
Controller grows big in size ( say more than 10-15 views and
corresponding context nodes , methods , events , event handlers
etc) , it might become tough to handle everything in the Component
Controller . In such a scenario , you can create one or more custom
controllers and modularize or segregate the logic into separate
parts using Custom Controller.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.
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:
Interface Node in Webdynpro ABAP
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:
Interface Node in Webdynpro ABAP
Question 8:When do views become available in the interface
Controller ?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 it's 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 Webdynprodevelopment grows , it starts becoming complex and
the need to define attributes,nodes,methods etc. at the Component
Controller increases.Hook Methods in Web Dynpro:Question 11:What
are Hook Methods in Web Dynpro ABAP ?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*.
Hook Methods in Webdynpro ABAP
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:
1.WDDOINIT ( Component Controller )2.WDDOINIT ( Window
Controller ) -->Handle default method of the window is
called.3.WDDOBEFORENAVIGATION ( Component Controller )4.WDDOINIT (
View Controller )5.WDDOMODIFYVIEW ( View Controller
)6.WDDOPOSTPROCESSING ( Component Controller )
Now view is displayed . Suppose user does some action on the
view:
7. WDDOAFTERACTION ( View Controller )8. WDDOBEFOREACTION ( View
Controller )9. WDDOBEFORENAVIGATION ( Component Controller )
WDDOINIT ( View Controller )is not called this
time.10.WDDOMODIFYVIEW ( View Controller )11.WDPOSTPROCESSING (
Component Controller )
View is displayed again.Now close button is clicked on the
browser.
12.WDDOEXIT ( View Controller )13.WDDOEXIT ( Component
Controller )
Application is closed.
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 the 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. Lets 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.
SAP Webdynpro ABAP Interview Questions Part 2I hope theWeb
dynpro ABAP Interview Questions part 1was of some help to
you.Welcome to part 2! Here we go ahead with some more questions .
I wish these questions offer some value to you.
If you have already worked on web dynpro , these questions
should be easy for you . Even if you haven't had a chance to work
on Webdynpro ABAP , these questions will guide you for your
interviews . In that case, I would suggest you do some hands on
exercises on a sandbox server at least.
Imp*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 businesslogic 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 haveonly oneassistance classand 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
attributewd_assist, which is created when you create the assistance
class in web dynpro.
Assistance class in web dynpro ABAP
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 nodewith cardinality
0...n )onSingletonNodeby 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.
As a result great performance optimization is achieved.
I hope you get this one :).
Question 18:What is a supply function? When is it called?You can
assign a supply function to a context node when you create a node.
In simple terms, supply function is used to populate data records
in the context node. A supply function is called when one or more
elements of the node are accessed for the first time.
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 19:What is lead selection? Is it an event?Yes , the
lead selection is an event in web dynpro.At run time a context node
may contain many records , but only one of those is selected .The
user can select any record from the Table/ALV and this selection is
called lead selection.
Lead Selection in Web Dynpro
Question 20:What is Cardinality of a context node?Cardinality
simply indicates the minimum and the maximum no. of entries the
node can have.The 4 cardinalities are0:1, 0:n, 1:1, and 1:n.
Question 21:Is there any relation between Cardinality and Lead
selection?Yes , If the cardinality is set to 0:1 or 1:1 , the user
cannot select multiple records on the view.So if you want the user
to be able to select multiple records on the screen , the
cardinality of that particular node must be set to 0:n or 1:n.
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_thisWd_context
Each controller has the above two mentioned attributes.To
elaborate, if you are usingthe 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_comp_controlleris the reference to the Component Controller.
View and Window controller have this attribute defined by default
and methods/attributes of the Component Controller can be accessed
by using this attribute.For example:
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 23:What are layouts in Web Dynpro ABAP?Flow layout, Row
Layout, Grid Layout, Matrix layout and the form layout.The layout
can be set at a Container level.
Question 24:Can you use multiple layouts in one view?Layouts can
be assigned at the container level. For example, you define the
layout for your view at the ROOTUIELEMENT container level.So if at
all you want to use multiple layouts in one view, you can create
multiple transparent containers and assign different layouts to
them.
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
FMCALLMETHODcl_wd_utilities=>construct_wd_url
EXPORTINGapplication_name='ZDEMOIMPORTINGout_absolute_url=str.Once
you get the URL in str, you can call this web dynpro using 'str'
and fm:create_external_window.
Question 27:Can you create a Tcode for Webdynpro
Application?
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
parameterswhenever 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 theHANDLEDEFAULT method of your main window:
Question 30:Can you run a Webdynpro Application in
background?This is a tricky question. It doesnt make sense to run a
webdynpro application in background because in that case you are
beating the purpose of the MVC controller architecture for
webdynpro. However, you can build logic to create background jobs
from a Web Dynpro Application.
So we have by now put a bunch of questions here . Let me know
how do you find these questions.We haven't yet covered Web Dynpro
component usage , ALV, Select Options , OVS , the coding part in
web dynpro, Web dynpro enhancements etc.
SAP Webdynpro ABAP Interview Questions Part 3Web Dynpro ABAP
interview questions Part 3:Now we come to the tougher side of web
Dynpro. I have tried to put together some concepts from the point
of view of an interview . That's why you wont find the details here
but an overview.
Question 1:What is Web Dynpro Component Usage?Real world
business scenarios are quite complex and may involve multiple Web
Dynpro Components.While dealing with multiple WD components, you
may come across a situation where you need to reuse already
developed parts of an existing Web dynpro component.
The Web Dynpro framework provides you with a technique called
Component Usage, with the help of which you can reuse the events,
methods, and context of one WD component into another WD
component.Standard examples of Component Usage:Select Options , ALV
, OVS.You declare component usage both at the Component and at the
view levels:
@Component Level:
@View Level:
Question 2:Briefly explain how will you use implement Select
Options in Web Dynpro?1) Declare Component Usage for Standard WD
componentWDR_SELECT_OPTIONSboth at component and view level.
2) Place a VIEWCONTAINER on your main view and embed theview
WND_SELECTION_SCREEN of component WDR_SELECT_OPTIONS in it.
3) Use the methodsCREATE_RANGE_TABLEandADD_SELECTION_FIELDfor
your fields on Selection screen.
4) Use method GET_RANGE_TABLE_OF_SEL_FIELD to read user input
before you do a SELECT.Question 3:What is the Web Dynpro Phase
model?Whenever a roundtrip occurs from the client (browser) to the
server, a sequence of processing steps is executed. This sequence
of processing steps in web Dynpro is called the Phase
Model.Executing all the tasks in the phase model is the
responsibility of the Web Dynpro framework.Each step is executed
only once and errors if any are captured.
If you want to get into the details , have a look at the webinar
from Chris Whealy:Understanding the Web Dynpro Phase model.
ImportantQuestion 4: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 componentWDR_OVSis 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
methodovs_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
methodovs_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
methodovs_callback_object->Set_Output_Tablefor that purpose.
Phase 4:In this phase , you pass the selected record to the Web
dynpro Fields.i.e. set the attributes
usingovs_callback_object->context_element->Set_Attribute
Question 5:Briefly explain how will you implement ALV in Web
Dynpro?To implement ALV in Web Dynpro, you need to use the Standard
WD componentSALV_WD_TABLE.We need to use:a) the view TABLE of
component SALV_WD_TABLEb) 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
viewTABLE of SALV_WD_TABLEinto it.
3) Lets 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 nodeDATA of
SALV_WD_TABLE.
Question 6:How to make columns in a table editable?While doing
the Binding for the Table, just choose 'Input field' instead of
'Textview'.Refer the Screenshot below:
Question 7:How will you delete selected rows in a Table /
ALV?Get the Table / ALV data in an internal table.Delete the row
selected by the user from the internal table.Re-bind the internal
table to the node bound to the Table/ALV.
Question 8:How do you generate POP UP in WD?This can be easily
done using the Wizard:The CREATE_WINDOW method is used in this
case.
Question 9:How do you close a window in Web Dynpro?
There is a special outbound plug called Exit Plug that can be
used for this purpose.wd_this->fire_to_exit_plg( url = url
close_window = close_window ).
Also explore other Plug Types:
I am going to add some more questions to part 3 :Let me know if
you need answers to the below questions by putting your comments
below:
Question:What is the difference between Drop down by key and
drop down by index ?
Question:How do you display error / success / warning messages
in Web Dynpro ?
Question:How do you access methods of component controller in a
view ?
Question:Have you worked on roadmap UI element ? Elaborate .
Question:What is dynamic ALV in web dynpro ?
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 have TOP OF PAGE and END OF PAGE ? How
?Hint:Check TOP_OF_LIST and END_OF_LIST events.
Question:Have you worked on events in ALV in web dynpro? Which
events do you know?
Question:Can you add custom buttons on Web Dynpro ALVtoolbar?
How?
Question:Can you add custom buttons in Web Dynpro ALVcells?
How?
Question:Can you add Image / Icons in Web Dynpro ALV cells ?
How? How do you define and implement action handlers for them?
Question:Can you add links in Web Dynpro ALV cells ? How?