You are on page 1of 40

Calling Transaction Codes through Web Dynpro Application By Jeyanthi Ramamoorthy , Robert Bosch Introduction: ITS (Internet Transaction

Server) is the interface between the Internet and R/3. and It is a runtime engine that links Web server to the R/3 Application server. To call transaction code through Webdynpro application, we need to follow the below steps as mentioned below. Step 1: Go to Tcode SE80 ->Utilitities->Settings-> Internet Transaction Server->Select Integrated ITS as below.

Step 2: Go to Tcode SE80-> Choose Internet Services from the first dropdown->Enter SYSTEM in the Input field as mentioned below

Step 3: Right click on SYSTEM in the tree and select Publish > Complete Service to publish the service.

Once the publishing is completed the system will issue a success message Object published successfully; site INTERNAL. Step 4: Repeat the steps 2 and 3 again to publish SHUFFLER and WEBGUI internet services. SHUFFLER:

WEBGUI:

Step 5: Go to SICF and enter the service path as /sap/bc/gui/sap/its/webgui and execute and activate the service(If it is in disable mode).

Step 6: Create Web dynpro Component, In that create Link to URL and mention the path as http://rb3ni82.server.bosch.com:3865/sap/bc/gui/sap/its/webgui?~transaction=PA30

Step 7: Test the Webdynpro Application OUTPUT:

Using the view created in one Web Dynpro component as a pop-up view in another component By Arti Thakur, TCS Problem: The scenario is about using the view in one component as a pop-up view in another component. This way existing view can be re-used in another component without creating newer one. In SAP initial screen, use transaction SE80 to open object navigator.

Create new web Dynpro component.

Web Dynpro component ztest_c1 is created with window name window_c1 and view_c1.

Saving component ztest_c1 it as local object

Open the layout tab of view view_c1

Insert label lbl1

Similarly insert label lbl2 and input fields inp1 and inp2 and enter text and label for both the labels lbl1 and lbl2.

In the context tab, create node named as node

Create attributes for the node, value1 (type: I)

Similarly create attribute value2 (type string)

Binding the values to input fields

Activating the object ZTEST_C1

Creating the another component ZTEST_C2

In the VIEW_C2, create a button btn1

Creating the Event onAction on Button btn1.

Created a method in OPEN_POPUP_C1

Activating component ZTEST_C2

Using the component ZTEST_C1 in the Used Components in component ZTEST_C2

In the Properties tab of component controller click on create icon to use ZTEST_C1 component and its interface controller.

Activating the component.

Properties tab of Component controller of component ZTEST_C2.

Click on Web-Dynpro Code wizard and click on radio button Generate Pop-up in tab General.

Using Component ZTEST_C1 .

Component use COMP1 and Window name WINDOW_C1 selected.

Code generated in the component controller method OPEN_POP_C1.

Calling the component controller method in view VIEW_C2s Event handler ONACTIONOPEN_POPUP_C1

Using the method SET_BUTTON_KIND of interface if_wd_window and using attribute CO_BUTTONS_OKCANCEL to set OK and CANCEL as pop-up buttons.

Creating a web Dynpro application for component ZTEST_C2

Entering the description for application for component ztest_c2.

Saving it as local object.

Testing the application ztest_c2 and application opens in internet explorer.

On clicking open pop-up in comp 2 button pop-up window opens.

integration FI_MM and FI_SD explanation


By: aravindaswamy | 28 Jan 2012 11:51 am hi, Integration FI_MM and FI SD what is mean by integration please send to me defination and integration steps and procedure Integration FI_MM and FI SD interview Questions and answer please send to me

Regards, Aravind. Comments the defination of integration is link between the one module to other moduls. In integration fi consultant job is creation of some fallowing steps. steps of FI to MM: 1.creattion general ledger masters, transaction code is fs00 2.asignment of account for automatic postings, transaction code is obyc 3.define document types and number range, that is WE, WA, RE. Transaction code is oba7. steps of FI to SD: 1.creation of general ledger master like sales account, transaction code is fs00. 2.asignment of account for automatic postings, transaction code is vkoa By: obulesu | 08 Feb 2012 Hi Aravind, Integration means tight link between Several modules like(FI,MM,SD,CO) For a Manufacturing company: Company's will purchases Several items like (Production items,Maintenance items,Raw material) for smooth running of the business and are maintained by the MM dept.

Now the FI dept has to pay the vendor as per the material supplys and the fi dept will get the information from the MM dept like the qty supplied, Price per unit in the form of GR/IR report which is called MIGO process in SAP and this migo will be prepared by the MM dept by using this migo process the fi dept will run miro to realease the payment. MIRO means(Invoice verification)where the fi dept will verify the vendor invoice with purchase order raised by mm dept and GR raised by the MM dept. This is 3 way invoice verification for material supply. As per the Vendor the verification differs (Material or Service) vendor. For service vendor GRIR will not available not with the inward to have to verify. Now in Integration as a FI user u have to Check MIGO and run MIRO process and this are the transaction codes involved in FI-MM Integration. FI-SD Integration Sales Dept maintain the data which sale the company's finished product with pricing procedures, delivering procedures and billing part. As a FI user the debtors will pay payment for the goods received by them and this update the gl account so u have to create a sales master record and assign the account for automatic posting to update the gl account by using several transactions like WE WA RE as per the situation.

Create a clear structure of your FPM application Posted by Hendrik Brandes in Floorplan Manager for WebDynpro ABAP on Dec 16, 2011 4:44:08 PM If you want to build applications on top of the FPM framework, you should consider about a clear structure of your application and the data, which will be processed in it. As a first fundamental principle, you should define clear layers in your application: UI-Layer: Visualized by FPM, configured by you. UIBB-Layer: Feeder, Freestyle-UIBBs and some controlling classes developed by you. Application-Layer: Implementing the application behaviour. Backend-Layer: Busines Logic developed by you or provided by somebody else.

When you look at the FPM architecture map , you could see such a structure. In the following image, I show the layers and their elements corresponding to FPM and your application.

As I call the fourth layer "Backend-Layer", it is only a synonym. You can also call it "Business-Layer" or "Application-Model-Layer". In this blog, I will show you, how to separate a new FPM application into this layers, what are the different tasks of each layer. I will not cover the FPM-Layer and freestyle-UIBBs. Preparation Imagine the following situation: Your customer wants you to build a UI-based application on top of an existing backend system. ( In my examples I will often use the travel-agency demo application of SAP. ) In the first step, you should look at the use cases of your customer and what the UI how the looks like. In most cases, your Customer have an idea about how the UI should looks like. Than you take your pencil an draw some demo screens on a paper - or if you can better handle it with PowerPoint or something else; on a file -, I will just show simple samples, so that the structure and my approach will be easier to understand. Here is the example...

We have a Identification Region, a Form-Region and a Table in which addionational data will be shown. Structure your UI-Layout and your FPM-application Now you got an early vision about your application. Now, try to separate your screen with the help of all known GUIBBs, IDRs and Tabbed-Regions. As I mentioned, try to use GUIBBs as often as you can. The usage of Freestyle UIBB should be strongly avoided. By time, I will handle this topic in a separate blog. Look at the following picture: Here I have marked all UIBB with a green area. The rest will be done bei FPM. (Naturally, this is a very basic example, and the real life is much more complicated ).

After this, you have your UI-layer, based on GUIBBs. Structure your underlying application OK, after you have identify the several UIBBs, you can define a clear object model, representing the whole UIBB-Layer:

Try to name your classes like the used feeder classes and there concrete job. (And not as I did it here "ListFeeder", "FormFeeder", "HeaderIDR" ;-) ). If you regard to the UML-structure, you will discover some more classes than only the FPM-related objects. That's right, because I know by our requirements, which data has to be handled and so, I need at least a data-abstraction class, some instance for controlling the application and event handling and at least a subsystem, which encapsulates underlying

business and persistence. The think about data-abstraction classes and controlling-instances will be shown in a later blog. When you structure your application in a similar way, you will meet some (important) architectural principles: Loose Coupling: Every class of your application is so separated, that you can easily enhance and change it. Structural modularity: Due to this splitting of your software, you will get manageable components and not one big "monster". Separation of concerns: Every part of your application handle only the thing for what it has been built. Open extensibility: You will be open more further requirements and do not have to change the whole application There are even more architectural principles, which I can enumerate here, but one important should also be named: Fulfillment of standards: Due to the FPM-framework, you will get a standard environment, in which you have to perform your contract with FPM. Conclusion In this blog, I do not touch the topic "UI-configuration". Instead, you have seen, how you can separate and structure your application, to get a stable fundament for your development. Later, I will show you, what posibilities are behind this approach. Especially, if you think about enhanceability, quality or maintenance. If you can manage it, you will have the option, to split your team and your tasks in very good packages and gain a lot of speed for implementing new FPM-based UIs.

TCODE - QA08 Inspection Type of Materials - Upload Error


By: rekha | 30 Sep 2010 8:08 am Hi All, I have created an LSMW program for uploading datas for T.Code QA08 "Inspection Type of materials". i did it thru LSMW Recording. while i run the session in Background mode i got an Error. "No Batch Input data for Screen SAPMSSY0 0120"... But when i run the session in Error only or in foreground mode it wont show d error and the session is processed successfully. I got Error only on Background mode.

My Process on Tcode QA08 is, 1. first give Plant and Material 2. and then select Mass Processing Tab 3. then check Activate despite inspection stock check box and give inspection type 4. then press Execute button. A screen shown and then check Preferred inspection type check box and then press Enter. Finally Save. Please suggest me on this issue

Stock Transfer Between Plant Using STO with DO


Materials Management, MB1B, ME21N, MIGO, STO, Stock Transport Order, VL02N, VL10B This process used to transfer goods between plants using Stock transport order with Delivery order. Before doing this function the Material must be maintained in both supplying and receiving plants. And in sales organization data 1 screen the delivering plant must be maintained. This process has the following stages. 1. Creation of stock transport order (STO) at receiving plant (T code ME21N) 2. Transfer posting of Material to Material (T Code MB1B) 3. Creation of Replenishment order (Outbound delivery order) at Supplying plant with reference to the Stock transport order(STO) (T code VL10B) 4. Changing of the Replenishment order delivery .i.e. Goods issue at supplying plant (T code VL02N) 5. Goods Receipt at receiving plant (T Code MIGO)

ALV and Select Options The following section details and describes the modality to use the standard components ALV and SO as assistance,in creating our own Web Dynpro applications.We start from a simple example,where ALV is used to display the data in a table,and we end by using both components for advanced search and display the searched data, disposing of the extra functionalities offered by ALV (e.g. exporting data in Excel). SAP List Viewer(ALV) is a tool we c.an use to display data in a two-dimensional table,in a hierarchical-sequential list or in a tree structure.It allows us to use it in a large range of applications,from the classical Dynpros to the Web Dynpro. In our examples,we use inWeb Dynpro the ALV component SALV_WD_TABLE to display data in a two-dimensional table.

Through Select Options,we can benefit of complex searching possibilities.For example,we use the WDR_SELECT_OPTIONS component to create a selection option screen that offers, in the same time, four standard buttons:Cancel,Reset, Done and Check. SAP List Viewer In this subchapter,through some examples, we will meet the SALV_WD_TABLE standard component and its advantages. Simple ALV Example We create a WD component that displays all the information about candidates by using the SALV_WD_TABLE,ALV component. To be able to use this component, we have to firstly define a usage. Figure shows the WD component structure and the usage definition WD component structure In the COMPONENTCONTROLLER,we create a node PERSON with thedictionary structure YPERSON, Singleton, Cardinality 0...n and supply function SUPPLY_PERSON. Context node and supply function View layout In this case,we have chosen to use a ViewContainerUIElement to embed the Table view of the SALV_WD_TABLE component,but we can embed a view or an interface view directly in a Window if we dont need additional UI elements.The table view is the central view of an ALV component and represents the container in which the ALV output is displayed.Figure shows the Window structure and the selected Interface View. Window structure and interface views of the ALV

To be able to create a reverse mapping, we firstly create an interface controller usage. Interface controller usage

Then,we need to provide the DATA context node with the values from the PERSON context node. Context mapping DATA context node must contain the structure and data of the ALV output.The runtime result is presented. Runtime result

As we have mentioned above,the ALV component offers new capabilities,as follows: Exporting the data displayed into Microsoft Excel,by using the Export button Printing a version in PDF format,by using the Print Version button Simple data filter, by using the Filter option Complex settings, by using the Settings option The settings option offers the capability to hide some columns, to create complex searches and complex filters,to change the display mode and to create a print version. We can save the changes we made and assign them to the current user as an initial view. Settings option ALV settings

ALV Configuration Model To configure an ALV output,we can use: table settings, column settings,field settings,standard function settings or application-specific function settings. By using the transaction SE24, we can see the structure of the CL_SALV_WD_CONFIG_TABLE. Here, we find the interfaces and their methods to be used to manipulate the ALV output. CL_SALV_WD_CONFIG_TABLE

Manipulating the ALV Output:Deleting Rows, Hiding Columns,Table Designing,Sorting We want to manipulate the ALV output to show only five rows, to use the Table Design Alternating to sort table ascending by the id_country field and to hide the first two columns, Client and ID. We use the below example, where we make some changes. We define a usage at the V_VIEW level. Defining the usage at the View level The wdDoInit Hook method METHOD wddoinit . DATA: lr_cmp_usage TYPE REF TO if_wd_component_usage, lr_salv_wd_table TYPE REF TO iwci_salv_wd_table, lr_table TYPE REF TO cl_salv_wd_config_table, lr_field TYPE REF TO cl_salv_wd_field. lr_cmp_usage = wd_this->wd_cpuse_alv_usage( ). IF lr_cmp_usage->has_active_component( ) IS INITIAL. lr_cmp_usage->create_component( ). ENDIF. lr_salv_wd_table = wd_this->wd_cpifc_alv_usage( ). lr_table = lr_salv_wd_table->get_model( ). lr_table->if_salv_wd_column_settings~delete_column('MANDT' ). lr_table->if_salv_wd_column_settings~delete_column('ID_PERSON'). lr_table->if_salv_wd_table_settings~set_design(cl_wd_table=>e_designalternating ). lr_table->if_salv_wd_table_settings~set_visible_row_count(5 ). lr_field = lr_table->if_salv_wd_field_settings~get_field('ID_COUNTRY'). lr_field->if_salv_wd_sort~create_sort_rule( ). ENDMETHOD. As we can see,we have used the method GET_MODEL from the interface IWCI_SALV_WD_TABLE.This method has no importing parameters and returns a complete Configuration Model (CL_SALV_WD_CONFIG_TABLE). The ALV component is partly based on the Table UI element.To set the Table design and the number of visible rows,we use the methods set_design and,respectively, set_visible_row_count from the interface IF_SALV_WD_TABLE_SETTINGS. If we look at the dynamic programming of a Table UI element, we can see that the property for the Table design alternating is cl_wd_table) e_designalternating, and the property VISIBLE_ROW_COUNT is an integer number(in our case, 5). To delete the two columns, we use the method delete_column from IF_SALV_WD_COLUMN_SETTINGS interface, and to create asort rule we use the method create_sort_rule from the IF_SALV_WD_INTERFACE interface. The default sorting rule is: sort_order = if_salv_wd_c_sort => sort_order_asscending Runtime

Changing the Cell Editor As we know,the content of a cell to be displayed is specified by the table cell editor of the column. In the default mode,the table cells are created by using the TextView UI element. We change the cell editor for the EU Countries column.In this case,we use a linkToURL UI element that opens the web page where we can find all the information about the EU countries. To do this,we need to add some coding at the below example.We need to dynamically create a linkToURL UI element. The Listing shows the additional coding in the wdDoInit Hook method. Changing the cell edito DATA:lr_column TYPE REF TO cl_salv_wd_column, lr_link_to_url TYPE REF TO cl_salv_wd_uie_link_to_url. lr_column = lr_table->if_salv_wd_column_settings~get_column( 'ID_COUNTRY'). CREATE OBJECT lr_link_to_url. lr_link_to_url->set_text_fieldname('ID_COUNTRY'). lr_link_to_url->set_reference( lr_column->set_cell_editor(lr_link_to_url). Runtime Adding a Header for the ALV Table For an ALV table,we can add a header,too.To do this,we have to use the method CREATE_HEADER of the IF_SALV_WD_TABLE_SETTINGS interface. Header for ALV tabl DATA:lr_settings_alv_table TYPE REF TO if_salv_wd_table_settings. DATA: lr_alv_header TYPE REF TO cl_salv_wd_header. lr_settings_alv_table ?= lr_table. lr_alv_header = lr_settings_alv_table->get_header( ). lr_alv_header->set_text('ALV Header'). Header for ALV table

Setting the Top of List and the End of List for the ALV Output For an ALV output,we can create a top of list (header text) and an end of list (footer text).As we have seen, the ALV component we have used provides two context nodes,named TOP_OF_LIST and END_OF_LIST.These context nodes hold the data for header and footer. Each context node contains an attribute named CONTENT of CL_SALV_FORM_ELEMENT type. To be able to access these context nodes from our view V_VIEW, we have to create a context mapping. Context mapping Then,we have to define the basic layout and to create the elements. In our case,we have chosen to use the Row type layout, class CL_SALV_FORM_LAYOUT_ FLOW. We create a text element for the header and a text element for the footer. Header and footer for an ALV table DATA lr_node_top_of_list TYPE REF TO if_wd_context_node. DATA lr_node_end_of_list TYPE REF TO if_wd_context_node. DATA lr_flow_top TYPE REF TO cl_salv_form_layout_flow. DATA lr_flow_end TYPE REF TO cl_salv_form_layout_flow. DATA lr_text_top TYPE REF TO cl_salv_form_text. DATA lr_text_end TYPE REF TO cl_salv_form_text. CREATE OBJECT lr_flow_top. lr_text_top = lr_flow_top->create_text( position = 1 text = 'Header Text' tooltip = 'Top of list' ). CREATE OBJECT lr_flow_end. lr_text_end = lr_flow_end->create_text( position = 1 text = 'Footer Text' tooltip = 'End of list' ). lr_node_top_of_list = wd_context->get_child_node( 'TOP_OF_LIST'). lr_node_top_of_list->set_attribute(value = lr_flow_top name = 'CONTENT').

lr_node_end_of_list = wd_context->get_child_node( 'END_OF_LIST '). lr_node_end_of_list->set_attribute(value = lr_flow_end name = 'CONTENT'). lr_table-> if_salv_wd_table_settings~set_top_of_list_visible(value = abap_true). lr_table-> if_salv_wd_table_settings~set_end_of_list_visible value = abap_true). Runtime

Adding a Self-Defined UI Element to the ALV Toolbar On the ALV toolbar,we can add our own UI elements. We add a linkToAction UI element. Adding a linkToAction UI element to the ALV toolbar DATA lr_linktoaction TYPE REF TO cl_salv_wd_fe_link_to_action. CREATE OBJECT lr_linktoaction. lr_linktoaction->set_text('Our self-defined linkToAction'). DATA linktoaction TYPE REF TO cl_salv_wd_function. linktoaction = lr_table-> if_salv_wd_function_settings~create_function(id ='LTA'). linktoaction->set_editor(lr_linktoaction). Runtime To transform our linkToAction into another UI element,we have to change the editor type from the linkToAction (CL_SALV_WD_FE_LINK_TO_ACTION) into another allowed type.For example,to have a button editor,we have to changee only the class name: CL_SALV_FE_BUTTON. When the user presses this link,we have to trigger an event handler method.As we can see,we have not defined an action for this link. To know the UI element that was pressed,we use the ON_FUNCTION event. We create an event handler method named LINKTOACTION_ACTION and we choose the event ON_FUNCTION. Event handler method for our self-defined linkToAction If our link with the ID = LTA is pressed,a statement block is executed. Event handler method

Select Options We create a WD component that offers complex possibilities to search for a candidate.To be able to use these complex search possibilities,we have used the WDR_SELECT_OPTIONS component. Figure shows the WD component structure and the usage definition. The WD component structure We create,in Context view,the node PERSON with the same structure (Cardinality 0...n, dictionary structure YPERSON, Singleton, without supply function). In View Layout,we have to insert a View Container UIElement required to integrate the interface view WND_SELECTION_SCREEN of the Select Option component.Besides this UI element, we need a Button and a Table UI element. Context view and view layout

How to define the usage We create two attributes: M_HANDLER type ref to IF_WD_SELECT_ OPTIONS and M_WD_SELECT_OPTIONS type ref to IWCI_WDR_SELECT_ OPTIONS. Attributes We use the wdDoInit Hook method to instantiate the used component WDR_SELECT_OPTIONS, in order to dynamically create a range table and to add a selection screen Field. The wdDoInit Hook method METHOD wddoinit . DATA: rt_range_table TYPE REF TO data, lv_tooltip TYPE string VALUE'Search for id', lv_abap_bool TYPE boolean VALUE abap_true, lr_componentcontroller TYPE REF TO ig_componentcontroller, lr_cmp_usage TYPE REF TO if_wd_component_usage. lr_cmp_usage = wd_this->wd_cpuse_select_options( ). IF lr_cmp_usage->has_active_component( ) IS INITIAL. lr_cmp_usage->create_component( ). ENDIF. wd_this->m_wd_select_options = wd_this->wd_cpifc_select_options( ). wd_this->m_handler = wd_this->m_wd_select_options->init_selection_screen( ).

rt_range_table = wd_this->m_handler->create_range_table( i_typename = 'YIDI'). wd_this->m_handler->add_selection_field( i_id = 'ID_PERSON' i_obligatory = lv_abap_bool it_result = rt_range_table i_tooltip = lv_tooltip i_value_help_type = if_wd_value_help_handler=>co_prefix_searchhelp i_value_help_id ='YSH_ID_PERSON' ). ENDMETHOD. By using the method INIT_SELECTION_SCREEN of the IWCI_WDR_SELECT_OPTIONS interface,we initialize the selection screen.After this, we use the method CREATE_RANGE_TABLE of the IF_WD_SELECT_OPTIONS interface to dynamically create a Range Table. This method has three importing parameters: I_TYPENAME type STRING,I_LENGTH type I,I_DECIMALS type I and a returning parameter RT_RANGE_TABLE type ref to data.The I_TYPENAME is not optional;we use it to specify the data element for the LOW and HIGH component. The ID_PERSON has the data type YIDI. Database table YPERSON A Range Table has four components: SIGN,OPTION,LOW and SCREEN. It can be also created in the ABAP Dictionary,as special type of table types. The method ADD_SELECTION_FIELD of the IF_WD_SELECT_OPTIONS interface adds an additional Field to the Selection Screen. This method has many parameters, but only one is mandatory I_ID.We have used the: i_id parameter,of STRING type,to define the ID of the Selection Field i_obligatory parameter,of ABAP_BOOL type,to set the mandatory field it_result parameter,type ref to data, for reference to the Range table i_tooltip,of STRING type, to create a quick info in a tooltip form i_value_help_type, of type:IF_WD_VALUE_HELP_HANDLER)CO_PREFIX_NONE to specify the type of the search help that we want to use i_value_help_id of WDY_VALUE_HELP_ID type,to specify the name of the search help that we use, or the name of the OVS (Object Value Selector) field ID_PERSON has associated the search helpwith the name YSH_ID_PERSON When the user presses the Search button,the Framework triggers the event handler method onactionsearch. The onactionsearch event handler method METHOD onactionsearch . DATA: l_node TYPE REF TO if_wd_context_node. DATA: rt_range_table TYPE REF TO data. DATA: it_yperson TYPE TABLE OF yperson. FIELD-SYMBOLS: <fs_id_person> TYPE ANY TABLE. rt_range_table = wd_this->m_handler->get_range_table_of_sel_field

i_id = 'ID_PERSON' ). ASSIGN rt_range_table->* TO <fs_id_person>. CLEAR it_yperson. REFRESH it_yperson. SELECT * INTO CORRESPONDING FIELDS OF TABLE it_yperson FROM yperson WHERE id_person IN <fs_id_person>. l_node = wd_context->get_child_node(name =`PERSON`). l_node->bind_elements(it_yperson). ENDMETHOD. The method GET_RANGE_TABLE_OF_SEL_FIELD of the IF_WD_ SELECT_OPTIONS interface has an importing parameter I_ID, of STRING type,and returns the range table for the Selection Field rt_range_table generic type data. We define a field symbol typified as ANY TABLE and we generically dereference the data reference variable typed with data into our field symbol,through the dereferencing operator->*. After this, we select all the records that correspond to our search and pass these values in the corresponding attributes of the context node PERSON. We have to embed the interface view WND_SELECTION_SCREEN into the ViewContainerUIElement.Now we are ready to run our application. Embedding the view interface WND_SELECTION_SCREEN Runtime In default mode,Select Option is the interval between two values,but we can also use other Select options. Selecting options As we have seen,the component WND_SELECTION_SCREEN offers four buttons to provide four functions: Cancel Check Reset Execute We can hide one of these buttons by using the method SET_GLOBAL_OPTIONS of the IF_WD_SELECT_OPTIONS interface. This method has four mandatory parameters of ABAP_BOOL type. The SET_GLOBAL_OPTIONS parameters We want to extend our example,by hiding the buttons CANCEL, RESET,COPY and using the CHECK button to trigger the event handler method on_check.In this case,we dont use our Search button.We implement the code in the on_check event handler method. First, we must use,in the wdDoInit Hook method,the SET_GLOBAL_OPTIONS. The wdDoInit Hook method METHOD wddoinit . . 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_true i_display_btn_reset = abap_false i_display_btn_execute = abap_false). ENDMETHOD After this,we create an event handler method named on_check and we register to the ON_CHECK event in the WDR_SELECT_OPTION component.This event is triggered when the user clicks the CHECK button. Registering to the ON_CHECK event We copy the entire coding from the onactionsearch event handler method in the on_check event handler method, and then we can run our application. Runtime To create more than one selection screens Field,we have to create,into the wdDoInit Hook Method,as many range tables as many screen Fields we need,and then we have to extend the event handler method to be able to select the desired data. ALV and Select Options In this case,we use both components: WDR_SELECT_OPTIONS for Select option and SALV_WD_TABLE for ALV . Used components We copy the preceding WD component and rename it:Y_ALV_AND_SO. Here we made only some changes: Create the context node in the COMPONENTCONTROLLER Delete the Table UI element and insert a new View Container UI Element required to embed the Table interface view Define the required usages; Define the required context mappings; Check if the instance of the used component ALV_USAGE is made. If it doesnt exist,we have to create one View Layout Window structure ALV and SO