Friday, 24 February 2012


SAP ABAP interview questions and answers

1. Can we write the code both call transaction and session method in single program?
Ans. Yes it is possible to write call transaction and session in one program.

2. Which BDC you prefer?
Ans. If we want to transfer large amount of data and when we need to use more than one transaction code we prefer session method. For small or less amount of data and for single transaction use call transaction.
(This is more genric answer but you can add more on to this if you have worked on  BDC)

3. When u prefer LSMW?
Ans. When we need to update medium amount of data we use LSMW. LSMW is also used when the person like functional consultant has less programming language.

5. Difference between .include and  .append?
Ans.
Include structure allows to add one or more structure into structure or table.Also placed positioning anywhere. Upto 6 include structure can be used in a table.
Append structure can be placed only at the end of a structure or table which also stops further insertion of fields.Only one append structure can be used

6. Performance techniques
Ans.
1. The sequence of fields must be same as per database table
2. During writing select query write all fields in sequence as per database table.
3. Never write select statements inside loop….endloop.
4. Use st05 SQL trace, se30 run time analysis, code inspector, slin,etc.
5. Use select single * statement instead of select *
6. Always use primary key
7. Use binary search but before using binary search sort that table.

7. How to debug sapscripts ?
Ans.
Two ways to debug sapscript . first way is goto SE 71 and from menu bar select Utilities->activate debugger .then goto SE38 execute the print program ,it automatically goes to debugging mode …..the other way is , run the program RSTXDBUG in se 38 . execute it . a message will show that debugger is activated .now open the print program in se 38 …u vll notice that the print prgm is automatically diverted to debugging mode.

8. What is partner selection?
Ans. This concept is mainly used in IDOC where u select the partner profile using Tcode We20 .with  Tcode SM59 you create RFC(remote function call) to create communication link to a remote system.

10. What is occurs in internal table?
Ans. Occurs addition to the Declaration will give initial size to that table.occur statement allocates 8kb of memory to the internal table.

11. What is page window?
Ans : page window is nothing but a container of a page ,which uniquely identifies a set of data …for example while creating invoice …we create logo window , billing document header window , customer window , terms and condition window etc …

12. What is the difference between scrolling a table horizontally and vertically..??
Ans: In table control when you scroll a table vertically presentation server needs to call application server to fetch the next record and display in the table while in case of horizontal scroll there is no need to call application server.

13. What are Field Groups?
Ans: A group that combines several fields fewer than one name, at runtime, the INSERT command is used to define which data fields are assigned to which field group are called Field Groups. It should always be a HEADER field group that defines how the extracted data will be sorted; the fields grouped under the HEADER field group sort the data.

14. List the events in ABAP/4 Language?
Ans: The events in ABAP/4 are load of program ,Initialization, Selection Screen, Start of Selection, End of Selection, Top of page, Line selection, User command, End, First.

15.How the values will be passed to RFC Function module PassbyValue or Passbyreference?
Ans: always Pass by Value.
RFC is Remote Function call so it can’t access the values with Pass by reference.

16. Buffering concept usage?
Ans: There are three type of buffer
1 single record
2 generic buffer
3 full buffer
Buffering is use for improve performance. it improves performance  10 to 100 times more

17. Select up to 1 row and select single difference ?
Ans:  Select single fetches first matching record. If more than one matching records are there then only the first matching record will be considered other records will not be taken into account. Where as select up to 1 rows will fetch all the matching records from the database.(Again it will assign only One Record to the internal table/Work area)

18. What are the different buffering methods?
There are two different buffering methods
The system ensures that data transfer between the R/3 System and the database system is as efficient as possible. To do this, it uses the following techniques:
Table buffering: The program accesses data from the buffer of the application server.
Database request buffering: Individual database entries are not read or passed to the database until required by an OPEN SQL statement.

19. Different types of locks?
v  Read lock (shared lock)
Protects read access to an object. The read lock allows other transactions read access but not write access to the locked area of the table.
v  o Write lock (exclusive lock)
Protects write access to an object. The write lock allows other transactions neither read nor write access to the locked area of the table.
v  o Enhanced write lock (exclusive lock without cumulation)
Works like a write lock except that the enhanced write lock also protects from further accesses from the same transaction.

20. CHAIN END CHAIN?
Ans: Chain and end chain are used for multiple field validation in Module pool programming .It is written inside the screen flow logic.

21.How to Debug RFC Function module?
Ans:
SE38 –> Utilities –> Settings –> ABAP Editor –> Debugging
Activate the external debugging and choose the New Debugger option in ABAP debugger.
Go to the particular place in the code and put break point, pop will appear then choose the HTTP break point.
If you are triggering the RFC from SAP portal make sure that both the user ID should be same
If the users are different then provide the XI/Portal User ID in the users field.

22.Why sapscripts are client dependent and smartforms are client independent.?
Ans-: Smartforms create its own function module so it doesn’t need to transport the request through SCC1.As all the Development Object are stored in client independent tables. Whereas Script doesn’t generate  any function module while executing so we need to transport the request number through SCC1.Sap script is stroed in side the client depended table as a TEXT.so sapscripts are client dependent and smartforms are client independent.

23. Difference between user exit and BADIs?
Ans: User exit is for single implementation and it is procedural approach while BADIs are for multiple implementation and object oriented approach.
Multiple implementation means Reusability… because we use OOps Concepts for BADI.

24. Control break events in ABAP:-
1. AT-FIRST: This is used when we want to execute the statements before records are processed.
2. AT-LAST: This event is used when we want to execute the statements after all records are processed.
3. AT-NEW: This event is used when we want to execute the statement before group of records are processed.
4. AT-END: This event is used when we want to execute the statements after processing of group of records.

25.I am uploading 100 records out of which say 59th record has error so what will happen if i am using synchronous or asynchronous method of BDC? Can we update the database using local update mode how?
26. Suppose i am writing following code then what will be output?
LOAD-OF-PROGRAM.
WRITE:/”HELLO”.
Ans:  HELLO
(Explain the importance of LOAD-OF-PROGRAM Event.If you dont know Tell the interviewer as this event is used in such cases when you want to clear sum buffers or something Before calling that Program)

27. What is TMG?
Ans. TMG stands for Table Maintenance generator. It is a tool available in abap by which we can add or delete multiple records at a time and it is executed or triggered by the transaction code SM30.

28. Difference between select option and ranges ?
Ans. The main difference between select option and ranges is that ranges implicitly or automatically creates internal table with fields like OPTION,LOW,HIGH,SIGN,etc . Where as in case of select option we have to explicitly create internal table.
When u declares a select options it will implicitly declare an internal table (ranges) for you.
While using RANGES syntax u can declare internal table explicitly.
The only need of declaring ranges is when you r not taking input from the user but you want make limit based selection at that time it will be use full e.g. SELECT ** from ** where MATNR in val_range.
here u can use select-option or ranges : val_range.

29. is it possible to bring select option in module pool screens?
Ans.Create a SELECT-OPTIONS in module pool screen using two methods as shown.
Method 1:—-
a) Create a subscreen area in your screen layout where you want to create the select options.

b) In the top include of your module pool program declare a selection screen as a subscreen e.g.
SELECTION-SCREEN BEGIN OF SCREEN 100 AS SUBSCREEN.
select-options s_matnr for mara-matnr.
SELECTION-SCREEN END OF SCREEN.

c) In the PBO and PAI of the main screen where the select options needs to be created do a call subscreen of the above screen (100).
CALL SUBCREEN sub_area INCLUDING <program> <screen>
This CALL SUBSCREEN statement is necessary for transport of values between screen and program.
Note: All validations of the selection screen fields e.g. the s_matnr field created above should be done in selection screen events like AT SELECTION-SCREEN etc and not in PAI. These selection screen validations etc should be done in the top include only.
Method 2:——-
a) Create 2 separate fields in your screen layout – one for the low value and one for the high value. Insert an icon beside the high value which will call the multiple selections popup screen on user command. Use function module COMPLEX_SELECTIONS_DIALOG to achieve this.
continued ……
struc_tab_and_field-fieldname = con_cust. ” ‘KUNNR’
struc_tab_and_field-tablename = con_kna1. ” ‘KNA1′.
CALL FUNCTION ‘COMPLEX_SELECTIONS_DIALOG’ EXPORTING*
TITLE = ‘ ‘
text = g_titl1 ” ‘Customers’
tab_and_field = struc_tab_and_field
TABLES RANGE = rng_kunnr
EXCEPTIONS
NO_RANGE_TAB = 1
CANCELLED = 2
INTERNAL_ERROR = 3
INVALID_FIELDNAME = 4
OTHERS = 5.
IF NOT rng_kunnr[] IS INITIAL.
* Read the very first entry of the range table and pass it to
* dynpro screen field
*READ TABLE rng_kunnr INDEX 1.
IF sy-subrc = 0.
g_cust = rng_kunnr-low.
ENDIF.
ENDIF.
You can use the return table rng_kunnr to populate your own internal range table with the values entered by the user. Basically here you are just simulating the work of a select-options parameter by module pool screen elements.

30.how we can retrive data using secondary index.explain with simple example
Ans:  First create secondary indexes on required fields of a particular database table.
We can create one primary index and 15 secondary indexes.Once the respective secondary indexes are created write select queries and within select queries specify secondary indexes field name with where clause.

31.How can we handle table control in BDC?
Ans.We can handle table control using line index
Line index indicates which line of Table control is to be use for BDC transaction
Ex -
perform bdc_field using ‘RC29K-AUSKZ(01)’
Indicates 1st line of table control is going to be used for transaction which is Line index of Table Control

32. If i want to execute a BDC program only in background not in foreground is there any option for this?
Ans.The sm37 transaction can be used for running a program in the background. Also in the session method while processing the session you can specify the processing type as background or foreground.

33.How Can We upload a text file having Delimiters in to Legacy System
Ans.For up loading text file we use the pre-defined FM gui_upload. in that FM we have the parameter has_field_seperator for that we assign the default delimiter ‘x’.
HAS_FIELD_SEPERATOR ‘X’
‘X’ can provide the Whatever delimiter we used in flat file for separation.

34. What is the land scape in sap.
Ans. In every organisation sap landscape involves three servers viz, Development server, Quality server and Production server. Whatever new development we do as per clients requirement is done in development server. Later to test the developed object we move it to quality server for testing and finally once everything goes clear then the object is moved to production server ,production server data is ready for final business use.

35. Workbench request are client dependent or client independent
Ans. Workbench request are client independent.
(Common Man Workbench request holds the Program , FM etc…. How it can be Client Dependent!!!!)
36. Tell me about workbench request and customization requests.
Ans.Workbench (ABAP Dev) request is client independent when you import it into one system it reflact it in all client in same system, but customized request has to import in that client perticular client where it is created, actually it is client dependent.

Wednesday, 22 February 2012


SAP ABAP Webdynpro Interview Questions and Answers

1)   Types of ABAP UI Technologies
      Ans: Webdynpro for ABAP, BSP
2)   MVC Architecture Concepts and usage of the same in ABAP Webdynpro
      Ans: As per the MVC Architecture there is a clear separation between flow logic, view and the Business
              Logic. View holds all the UI elements that are visible in the UI, Controllers have the flow logic.
              Controllers are of different kind (Component Controller, View Conroller,Window Controller).
              Business logic is held in the Model which is in the form of Assistance class
              in webdynpro context.  
3)   Difference Between the View Container and the Transparent Container
      Ans: View Container holds the views, there can be multiple views assigned to the view container but only
      one view can be active(viewed) at a time. Transparent holds the webdynpro UI elements, A layout type
      can be associated  with it.
4)   What does a Model Class Consists of
      Ans: Model Class is the Assitance class in webdynpro. It contains the Business logic in the form of
      methods, Global data & Constants in the form of Class Attributes. The Model class can be accessed in
      webdynpro component using the attribute wd_assist->. Note: All the visibility properties of the
      Class are applicable when accessing the class using the object wd_assist.
5)   What is an Assistance Class and How is it Instantiated in Webdynpro
       Ans: Assistance Class is the model class which would act as the data provider  for the webdynpro
       component and it is instantiated by the webdynpro component during the run time and no explicat
       instantation is required.
6)   Design Patterns in Webdynpro(GAF,OIF,QAF Etc)
      Refer to the link:
      FPM Concepts in Webdynpro
7)   How do you debug an web based Application
      (Could be from ABAP Webdynpro, BSP or CRM Web UI)
       Ans: External break-points should be used to debug web UI's.
8)   How do you create a ALV Report/Editable ALV in Webdynpro
      Ans: ->Add the Standard ALV component to the web dynpro Component.
              ->Use Components tab: Ex: ALV_MATS  type SLV_WD_TABLE
              ->Create a context node with the table field information to be displayed
              ->Write the ALV Default Code for table display
              ->Set the read only attribute to false to switch to editable mode using
                 the method set_read_only of the interface
                IF_SALV_WD_TABLE_SETTINGS implementing class
                CL_SALV_WD_CONFIG_TABLE).
9)   How do you Navigate between Views in Webdynpro
       Ans: Navigation between Views is through Plugs(Inbound and Outbound),
10) Usage of Plugs in Webdynpro
       Ans: Plugs are used to Navigate between the views. Parameters can be passed using the plugs similar to
       interface parameters of function module or a class method.
11) Usage of Webdynpro Component Controller
       Ans: Component controller is used to the store the Global attributes and Methods of the component.
       Attributes/methods declared in the component controller are visible through out the component and they
       are accessed using the attribute wd_comp_controller outside of component  controller(like
       views,windows etc) All the context nodes defined in the component controller are
       visible in all the views and windows of the component.
       Ex: if a variable called gv_count is defined in the component controller, it can be accessed in the view
       using the syntax wd_comp_controller->gv_count.
12) How do you access a Context Nodes and elements Programmatically
      Code required for accessing the Context Nodes can be written using the webdynpro code wizard.
      For Ex: if there exists a Node Node1 with cardinality 1:1 and has 3 Attributes to it Att1, Att2,Att3. The
      attributes can be accessed using the below code.

      data: lo_nd_node1 type ref to if_wd_context_node.
      data: lo_el_node1 type ref to if_wd_context_element.
      data: ls_node1 type wd_this->element_node1.

      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 ).

13) Message Areas in Webdynpro
      Message areas are created in views to display messages (Error,Success,Warning,Info).
      WD allows to have multiple Message errors in a view but throws an error when the view is displayed.
      Use the code wizard to get code for raising error messages. Few of the message classes and methods
      are: Interface: if_wd_message_manager.
      methods: report_t100_message.(used to report message from the  message class)
14) Concept of OTR(Online Text Repository) and its Usage
      OTR's are similar to text elements in ABAP. OTR's are created for
      UI texts and texts can be maintained in multiple language.
      OTR's can be created using the transaction: SOTR_EDIT
15) Concept of Interface Views
       If the views of a different components are need to be used in a webdynpro component mark the view as
       interface view and use it in another component. It's similar to using a include in a program.  A Interface
       view of the component can be used in any no of components. this concept supports the reusuability of
       the views.
16) Sequence of Webdynpro Events:
      Ex: WDDOINIT,WDMODIFYVIEW,WDAFTERACTION,
      WDBEFOREACTION etc
       Sequence: WDDOINIT of the component controller,
                       WDDOINIT of the Window Controller,
                       WDDOINIT of the View Controller,

      WDMODIFYVIEW(On Input/Display on any UI Element).
      WDBEFOREACTION(Method for validation of user input,
      Once the user action happens on the UI)
      WDAFTERACTION(Method for non-action specific operations
       before Navigation)
      WDDOEXIT( Exit from the View/Window/Component Controller)
      WDPOSTPROCESSING(used to perform exception handling for supply function methods)
17) Can a Component have Multiple Applications
       Yes, For a given webdynpro component any no of applications can be  created. Applications are similar
       to transactions in SAP.  You can associate different Interface views of the component to create different
       applications using the same component.
18) How do you launch a Webdynpro Application from a Transaction
      Refer to the previous blog Calling webdynpro application from a Transaction
      URL: http://sapabapwebdynpro.blogspot.com/2011/04/call-abap-webdynpro-application-from-r3.html
19) How do you Navigate between two Webdynpro Components
      You can use Interface views to navigate between components or create a navigation class and
      do a explicit call.
20) Creating a tree in Webdynpro
      Tree UI element is used to create Tree  in Webdynpro. Tree can be defined as part of the table column.
21) Usage of Exit Plug in a Webdynpro Window
      Exit plugs are outbound plugs used to close the webdynpro application.  they can be called from the view
      which are embedded in the window  Note: Exit plugs won't work in portal environment.
      Exit plugs can also be used to pass the call to another URL. Here is the sample code snippet of the exit
      plug call:
      method onexit .

        data url type string.
        data close_window type wdy_boolean.
        url = 'url_name'.
        close_window = abap_false.
        wd_this->fire_to_exit_plg( url = url
                                                 close_window = close_window ).
      endmethod.


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/be9442572e1231e10000000a1550b0/content.htm
21) Standard ALV Component required to create ALV Reports in Webydnpro
      SALV_WD_TABLE
22) How do you build Select Options in Webdynpro
      Using the standard webdynpro component WDR_SELECT_OPTIONS
      You can refer to the example: WDR_TEST_SELECT_OPTIONS
23) How do you build F4 Search Help in Webdynpro
      A F4 help for an input field can be made available by attaching the search help
      to the table field. Usage of standard help component WDR_OVR.
      Creating a component for help and attaching it to the node element as Freely programmed value help
24) How are Plugs(Inbound/Outbound) bounded in the Window
      Plugs are created in the view and bounded in the window by using the drag drop option in the window
      view.
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.
26) What is the use of Interface views/nodes in Webdynpro.
       Interfaces nodes and views are created to use them in other webdynpro components.
27) How do you navigate between different Webdynpro applications
      Create a navigation class and trigger the target application to be called.
28) What are the webdynpro init  events and what is the sequence of trigger

       Sequence: WDDOINIT of the component controller,
                       WDDOINIT of the Window Controller,
                       WDDOINIT of the View Controller,

29) How are Error messages created and handled in webdynpro
      Create a message UI element in the view and trigger the message required(Error,warning,status) using the
      code generation wizard.
30) What is an OTR and mention its usage in Webdynpro
       Online Text Repository is the central storage for texts for webdynpro
       applications. An otr can be fetched in the program using the below mentioned code.
       data: lv_string type string.
        lv_string = cl_wd_utilities=>get_otr_text_by_alias(  alias =    
              'PACKAGE/OTR_NAME' ).

31) Can text elements be used in webdynpro, if yes how?
       Yes text elements can be used in webdynpro.
       Refer to the below code snippet.
        data: lv_string type string.
        lv_string = wd_assist->if_wd_component_assistance~get_text(  '025' ).    
32) What is the use of Road Map UI element
       Roadmap UI element is used to display step-by-step workflows. It can used to clearly define a process.
33) What are exit plugs?How are they created?
      Exit plugs are used to exit from the webdynpro page or an webdynpro window.
      Exit plugs are created in the window.
34) Is it possible to hide F4 function for an Input element programmatically?
      Yes it is possible to hide F4 function attached to an input field.Use the interface
      if_wd_context_node_info and the method set_attribute_value_help
35) How do Webydnpro Upload and download functions work, Explain.
      Fileupload UI element is used upload files from desktop the application.
      There is also restriction on the max data volumes that can be uploaded.
      Filedownload UI element is used to download files to the client.
36) Explain the concept of Road Map UI element in Webdynpro.
      Refer to the link: Road map UI element webdynpro for abap
37) How to create popups in webdynpro.
      Create a view and embed the view in the window and call the window to trigger the popup.
38) Explain the concept of OVS and its usage
      WDR_OVS is the standard webdynpro component to generate F4 helps
      for the input field. OVS refers to Object value selector.
39) Using Radio Buttons/Checkboxes/Dropdown lists in webdynpro
      Radio buttons/Checkboxes are used for objective selection similar to what is available in SAP GUI. An
      event is associated with each UI element for onclick action.
40) FPM Concept and its usage in webdynpro.->>>>Refer to the link

41) what is internationalization in webdynpro abap application?
      Internalization refers to creation of texts used in webdynpro application in a specific language and
      providing option to translate to multiple languages if necessary. This is achieved by using OTR's or text
      elements for static texts and performing translation when required.
42) What is Cardinality of a context node in webdynpro
       Cardinality refers to no of elements a node can accomodate during run time. When a node is created the
       cardinality is assigned to it. Cardinality is of the following kinds:
       0:1 -->At run time, no element or maximum one element can be instantiated
       0:n -->At run time, no element or maximum of n elements can be instantiated
       1:n -->At run time, minimum one element or maximum of n elements can be instantiated
       1:1 -->At run time, only one element should always be instantiated
       if you try violating the cardinality there would be a short dump saying Number of elements of the
       collection of node node_name violates the cardinality
 43) what is Personalization in abap webdynpro application
        Personalization refers to changing the properities of UI elements at runtime. Personalization settings are
        user specific. Configuration controller is used for personalization function.
        ex: Changing the order of columns in a table display.
 44) what are the controller types in webdynpro ABAP
        -Component Controller->Component Controller is global part of the component and each component
          has only one component controller. Global Attributes and  methods required by the component can be
          defined here.
        -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.
         -Configuration Controller->Configuration controller is used achieve personalization function.
         -Window Controller->A window controller exists for each window and can also have methods
           to write coding logic. Every window will have the default method and it is used to  receive
           parameters. The windows controllers are visible in entire component and also in the custom        
           controller.
45)what are Layout types in Webdynpro and its usage
         ->Flow Layout  : Used for sequential display of WD UI elements.
         ->Row Layout  : here each ui element is displayed on its own column and the width differs from row to
             row.Rowheaddata is used to insert a break.
         ->Grid Layout  : Ui elements are arranged based the no of columns. line breaks  are inserted based on
             the size.
         ->Matrix Layout: Matrix layout arranges ui elements in columns. Matrixheaddata is used to insert a line
            break.
            Usage of the appropriate layout to build a webdynpro application is determined during the UI
            design.
 46)what is supply function method in SAP
         ->Supply function method is used to populate the context node or to default values to the context
             node elements. supply function method is called before the node is accessed for first read.
         ->Using supply function method is optional
47)what is singleton property of context node
         ->Singleton property is one of the attributes of the context node if this is set there can be only one
             instance of the respective context node at runtime.
48)How to default a value to the context attribute
     In the context attribute there is a property to set the default value. Use the same, However the
     default value can be overwritten using the set_attribute method of the interface if_wd_context_element.
Using Select-Options in Web Dynpro for ABAP

Create a Web Dynpro Component called Z_SELECT_OPTIONS 
 
The usage of WDR_SELECT_OPTIONS component is defined in the Used Components tab as SELECT_OPTIONS. 
 
Now Create a View as MAIN_VIEW 
 
 
Create a Context node called FLIGHTS 
 
Click the button Add Attribute from Structure 
 
Click OK. 
 
Now Create a View Container UI Element as VIEW_CONTAINER 
 
 
Now create a Button called SEARCH and create an action to it. 
 

Now Create a Table called FLIGHTTABLE and the dataSource property of the Table view element is linked to the FLIGHTS context node. 
 
In the Properties tab of the view controller, under the Used Controllers/Components 
 
In the view controller, we need an attribute that holds the reference to the instance of the Select Options component. This is necessary because at runtime we access this reference to the search criteria that have been entered in the event-handler method. 
 
Now in the WDDOINT method of the view controller write this code. 
METHOD WDDOINIT .
  DATA: LT_RANGE_TABLE TYPE REF TO DATA,
        RT_RANGE_TABLE TYPE REF TO DATA,
        READ_ONLY TYPE ABAP_BOOL,
        TYPENAME TYPE STRING.
  DATA: LR_COMPONENTCONTROLLER TYPE REF TO IG_COMPONENTCONTROLLER,
        L_REF_CMP_USAGE TYPE REF TO IF_WD_COMPONENT_USAGE.
* create the used component
  L_REF_CMP_USAGE = WD_THIS->WD_CPUSE_SELECT_OPTIONS( ).
  IF L_REF_CMP_USAGE->HAS_ACTIVE_COMPONENT( ) IS INITIAL.
    L_REF_CMP_USAGE->CREATE_COMPONENT( ).
  ENDIF.
  WD_THIS->M_WD_SELECT_OPTIONS = WD_THIS->WD_CPIFC_SELECT_OPTIONS( ).
* init the select screen
  WD_THIS->M_HANDLER = WD_THIS->M_WD_SELECT_OPTIONS->INIT_SELECTION_SCREEN( ).
  WD_THIS->M_HANDLER->SET_GLOBAL_OPTIONS(
                              I_DISPLAY_BTN_CANCEL  = ABAP_FALSE
                              I_DISPLAY_BTN_CHECK   = ABAP_FALSE
                              I_DISPLAY_BTN_RESET   = ABAP_FALSE
                              I_DISPLAY_BTN_EXECUTE = ABAP_FALSE ).
* create a range table that consists of this new data element
  LT_RANGE_TABLE = WD_THIS->M_HANDLER->CREATE_RANGE_TABLE( I_TYPENAME = 'S_CARR_ID' ).
* add a new field to the selection
  WD_THIS->M_HANDLER->ADD_SELECTION_FIELD( I_ID = 'S_CARR_ID'
  IT_RESULT = LT_RANGE_TABLE I_READ_ONLY = READ_ONLY ).
ENDMETHOD. 
Now in the ONACTIONSEARCH method of the view controller write this code.
METHOD ONACTIONSEARCH .
  DATA: NODE_FLIGHTS TYPE REF TO IF_WD_CONTEXT_NODE.
  DATA: RT_CARRID TYPE REF TO DATA.
  DATA: ISFLIGHT TYPE TABLE OF SFLIGHT.
  DATA: WSFLIGHT TYPE SFLIGHT.
  FIELD-SYMBOLS: <FS_CARRID> TYPE TABLE.
* Retrieve the data from the select option
  RT_CARRID = WD_THIS->M_HANDLER->GET_RANGE_TABLE_OF_SEL_FIELD( I_ID = 'S_CARR_ID' ).
* Assign it to a field symbol
  ASSIGN RT_CARRID->* TO <FS_CARRID>.
  CLEAR ISFLIGHT. REFRESH ISFLIGHT.
  SELECT * INTO CORRESPONDING FIELDS OF TABLE ISFLIGHT FROM SFLIGHT
                       WHERE CARRID IN <FS_CARRID>.
  NODE_FLIGHTS = WD_CONTEXT->GET_CHILD_NODE( NAME = `FLIGHTS` ).
  NODE_FLIGHTS->BIND_ELEMENTS( ISFLIGHT ).
ENDMETHOD.
Now Drag and drop the MAIN_VIEW into the Window and create an Embed View in the VIEW_CONTAINER. 
 
 
 
Now your window should look like this. 
 
Now Create a Web Dynpro Application and save and activate all. 

Output: 



Calling an URL on click of a button (Web Dynpro for ABAP)


1. Create one Webdynpro Application ZWA_CALLING_URL, and Save it in the ‘Local Object’.
2. In the View, Right click the ROOTUIELEMENTCONTAINER and give Insert Element. It will open a Pop-Up for Creating an Element. 
 
3. Enter ‘BUTTON’ in the Name Field and Select ‘Button’ from the Dropdown for the Typ Field and   Press Enter. 
 
4. In the Text Field of the Button Properties, Give Click.  
5. In the OnAction of the Button Properties, Click Create Action Button. Give the Action Name as GENERATE_URL and Press Enter. 
 
6. In the Methods Tab of the View, Go to the Method ONACTIONGENERATE_URL , and Paste the Following Code.
data lo_window_manager type ref to if_wd_window_manager.
data lo_api_component  type ref to if_wd_component.
data lo_window         type ref to if_wd_window.
lo_api_component  = wd_comp_controller->wd_get_api( ).
lo_window_manager = lo_api_component->get_window_manager( ).
CALL METHOD lo_window_manager->CREATE_EXTERNAL_WINDOW
  EXPORTING
    URL            = 'http://www.google.co.in/'
    MODAL          = ABAP_FALSE
    HAS_MENUBAR    = ABAP_TRUE
    IS_RESIZABLE   = ABAP_TRUE
    HAS_SCROLLBARS = ABAP_TRUE
    HAS_STATUSBAR  = ABAP_TRUE
    HAS_TOOLBAR    = ABAP_TRUE
    HAS_LOCATION   = ABAP_TRUE
  RECEIVING
    WINDOW         = lo_window.
lo_window->open( ). 
7. Save and Activate the Application. 
 
8. Test the Application. 
9. After Clicking the Click Button, It will open the New Window with URL  ‘http://www.google.co.in/’. (as seen in the following screenshot) 

OVS help in the WebDynpro application (WebDynpro for ABAP)


In one of my Scenarios, I’ve to get the Job Id and Job Description from the Database Table for Creating a Position in the Organizational Structure. I have provided the Object Value Selector (OVS) which takes Job Id and Job Description with ‘*’ (For Exact Selection it is not necessary to Use ‘*’) as input and list out all the Job Id and Job Descriptions corresponding to that Selections. On selecting one of the Entries from the Output List, the corresponding Job Id and Job Description will get displayed in the Screen. 
Introduction About Object Value Selector 
Generic help like value help can only be used for the field to which it is binded i.e. its scope is limited to that structure to which it is binded. But there are scenarios where we need a search help that allow multiple input fields to be populated or take multiple fields for search criteria. In this case, OVS comes into picture. OVS provide us with the selection screen that can contain multiple input fields to which our selection criteria can be restricted and displaying results values that can be used to populate different input fields. 
OVS makes use of the PHASE MODEL. We have two components in picture: OVS component and Consumer component. At certain point of time, OVS Component requires some information from consumer component. For this, OVS component fires OVS event. 
The parameter PHASE_INDICATOR is used to indicate the type of information requested. An event handler method in the consumer component subscribes to the OVS event and collects the information requested. For handling back this information to the OVS component, it makes use of certain methods in the OVS component. The reference to the object OVS_CALLBACK_OBJECT containing these methods is provided by the OVS event. These methods include: SET_CONFIGURATION (), SET_INPUT_STRUCTURE (), SET_OUTPUT_TABLE (). 
Phase_Indicator has four phases: Phase 0,1,2,3.

For Detail about different phases, you can go through the link.
Procedure:

1. Create one Webdynpro Component with name ZWA_OVS_JOB.
 
2. Press Enter. 
 
3. Declare the WDR_OVS Component in the used component list in your WD component as shown below. 
4. Now go to the View, in the Properties Tab click the Create Controller Usage Button. 
 
5. It will open a screen with Component Use Entries. There select the Component Use OVS with Interface Controller as shown below. Press Enter. 
 
6. It will display as follows in the View Properties.
 
7. Go to the Context Tab, Right Click the Context and select Create à Attribute. 
 
8. Give Attribute Name as JOB_ID with Type SHORT_D.  In the Input Help Mode Field, Select ‘Object Value Selector’ from the dropdown. Then press F4 in the Field OVS Component Usage.
 
9. It will open a Pop-up. Select OVS and press Enter. 
 
10. Press Enter. 


11. Create another Attribute with Name JOB_DESC and Type STEXT. 
 
12. In the Layout Tab of the View, Right click the ROOTUIELEMENTCONTAINER and give Insert Element. It will open a Pop-Up for Creating an Element. 
13. Enter LABEL_JOBID in the Name Field and Select Label in the Type Field and Press Enter. 
 
14. Create another UI Element with INPUT_JOBID in the Name Field and Select InputField in the Type Field and Press Enter. 
 
15. Create another UI Element with TEXT_JOBDESC in the Name Field and Select TextView in the Type Field and Press Enter. 
 
16. In the Label Properties, Select INPUT_JOBID from the Dropdown for the labelfor Field and Enter ‘Job Id in the Text Field. 
 
17. Create Context binding For the INPUT_JOBID by Clicking the Button in the Right Side of the value in the Properties. It will open a Popup with the Context Element. In that Select the Attribute JOB_ID and Press Enter. 
 
18. Then Create Context binding For the TEXT_JOBDESC by Clicking the Button in the Right Side of the text in the Properties. It will open a Popup with the Context Element. In that Select the Attribute JOB_DESC and Press Enter.
 
19. Declare one event handler method with Name ON_OVS in the Method tab of the view. Then Press F4 in the Column Event. 
 
20. Select the Event OVS as shown below and Press Enter. 
 



21. Double Click the Method ON_OVS and write the Following Coding. 
ON_OVS
method ON_OVS .
* declare data structures for the fields to be displayed and
* for the table columns of the selection list, if necessary
  types:
    begin of lty_stru_input,
*   add fields for the display of your search input here
      job_id   type string,
      job_desc type string,
    end of lty_stru_input.
  types:
    begin of lty_stru_list,
*   add fields for the selection list here
      short type short_d,
      stext type stext,
    end of lty_stru_list.
  data: ls_search_input  type lty_stru_input,
        lt_select_list   type standard table of lty_stru_list,
        ls_text          type wdr_name_value,
        lt_label_texts   type wdr_name_value_list,
        lt_column_texts  type wdr_name_value_list,
        lv_window_title  type string,
        lv_group_header  type string,
        lv_table_header  type string.
  field-symbols: <ls_query_params> type lty_stru_input,
                 <ls_selection>    type lty_stru_list.
  DATA : lv_short TYPE string,
         lv_stext TYPE string.
  case ovs_callback_object->phase_indicator.
    when if_wd_ovs=>co_phase_0.  "configuration phase, may be omitted
*   in this phase you have the possibility to define the texts,
*   if you do not want to use the defaults (DDIC-texts)
      ls_text-name = `JOB_ID`.  "must match a field name of search
      ls_text-value = `Job Abbr`.
      INSERT ls_text INTO TABLE lt_label_texts.
      ls_text-name = `JOB_DESC`.  "must match a field name of search
      ls_text-value = `Job Description`.
      INSERT ls_text INTO TABLE lt_label_texts.
      ls_text-name = `SHORT`.
      ls_text-value = `Job Abbr`.
      INSERT ls_text INTO TABLE lt_column_texts.
      ls_text-name = `STEXT`.
      ls_text-value = `Job Description`.
      INSERT ls_text INTO TABLE lt_column_texts.
      ovs_callback_object->set_configuration(
                label_texts  = lt_label_texts
                column_texts = lt_column_texts
                group_header = 'Job Abbreviation'
                col_count    = 2
                row_count    = 10 ).
    when if_wd_ovs=>co_phase_1.  "set search structure and defaults
*   In this phase you can set the structure and default values
*   of the search structure. If this phase is omitted, the search
*   fields will not be displayed, but the selection table is
*   displayed directly.
*   Read values of the original context (not necessary, but you
*   may set these as the defaults). A reference to the context
*   element is available in the callback object.
      ovs_callback_object->context_element->get_static_attributes(
          importing static_attributes = ls_search_input ).
*     pass the values to the OVS component
      ovs_callback_object->set_input_structure(
          input = ls_search_input ).
    when if_wd_ovs=>co_phase_2.
*   If phase 1 is implemented, use the field input for the
*   selection of the table.
*   If phase 1 is omitted, use values from your own context.
      if ovs_callback_object->query_parameters is not bound.
******** TODO exception handling
      endif.
      assign ovs_callback_object->query_parameters->*
                              to <ls_query_params>.
      if not <ls_query_params> is assigned.
******** TODO exception handling
      endif.
*     call business logic for a table of possible values
*     lt_select_list = ???
      lv_short = <ls_query_params>-job_id.
      lv_stext = <ls_query_params>-job_desc.
      REPLACE ALL OCCURRENCES OF '*' IN lv_short WITH '%' .
      REPLACE ALL OCCURRENCES OF '*' IN lv_stext WITH '%' .
      IF lv_short NE ' ' AND lv_stext NE ' '.
        SELECT short stext  FROM hrp1000 INTO TABLE lt_select_list
        WHERE plvar = '01' AND otype = 'C' AND langu = 'EN' AND
            endda GE sy-datum AND ( short LIKE lv_short AND
            stext LIKE lv_stext )
            ORDER BY short ASCENDING.
      ELSEIF lv_short EQ ' ' AND lv_stext NE ' '.
        SELECT short stext FROM hrp1000 INTO TABLE lt_select_list
        WHERE plvar = '01' AND otype = 'C' AND langu = 'EN' AND
            endda GE sy-datum AND stext LIKE lv_stext
            ORDER BY short ASCENDING.
      ELSEIF lv_short NE ' ' AND lv_stext EQ ' '.
        SELECT short stext FROM hrp1000 INTO TABLE lt_select_list
        WHERE plvar = '01' AND otype = 'C' AND langu = 'EN' AND
            endda GE sy-datum AND short LIKE lv_short
            ORDER BY short ASCENDING.
      ENDIF.
      ovs_callback_object->set_output_table( output = lt_select_list ).
    when if_wd_ovs=>co_phase_3.
*   apply result
      if ovs_callback_object->selection is not bound.
******** TODO exception handling
      endif.
      assign ovs_callback_object->selection->* to <ls_selection>.
      if <ls_selection> is assigned.
        ovs_callback_object->context_element->set_attribute(
                               name  = `JOB_ID`
                               value = <ls_selection>-short ).
        ovs_callback_object->context_element->set_attribute(
                               name  = `JOB_DESC`
                               value = <ls_selection>-stext ).
      endif.
  endcase.
endmethod.

22. Save the Application and Activate the Component. 
23. Create Webdynpro Application, save it and Test the Application.
Output:
1. Press F4 in the Field Job Id. It will open a Pop-up.
 
2. Enter the Value with ‘*’ and Click on Start Search Button. It will display all the possible Entries corresponding to that Selection. If you want Exact Selection then no need to give ‘*’.
 
3. On selecting one of the Job Abbr and Clicking the Ok Button, the Job Id and its Description will be displayed in the Screen as follows.