Technology Blogs by Members
Explore a vibrant mix of technical expertise, industry insights, and tech buzz in member blogs covering SAP products, technology, and events. Get in the mix!
cancel
Showing results for 
Search instead for 
Did you mean: 
Kumaranl
Explorer

You already have a fully operational Search UIBB. You have done all the hard work of creating a feeder class, FPM configuration, search UIBB. The feeder class methods , get_definition, process_event and other tasks to get the output displayed are already implemented in the feeder class. During a demo, a user suggested and that would wonderful if you provide input help for one of the field.  Later when I looked the input structure, the field did not have a search help assigned to it.

However, if you are not familiar with the creation of Search UIBB, you may please refer to the link below :

http://scn.sap.com/community/abap/blog/2012/12/16/search-guibb-list-guibb

Problem:

The selection screen need to have value help for a field which does not have a search help assigned to it.

Solution:

One of the options was to create a custom search help and assign it to the input structure used in the search GUIBB. The other option was to try implementing an OVS for the input field.  In this document I will try to explain the procedure to implement OVS in feeder class.

It was time me to go back to the developer guide and our beloved collaborators in SCN. As per FPM developer guide, the document suggests that we follow the below procedure to implement OVS for a selection field in Search GUIBB. It take me a few hours to implement the below procedure. Hence, the idea to create a how-to document for OVS (Search GUIBB) .

Extract from the FPM developer guide

Whenever a DDIC search help is not applicable, you should consider the OVS mechanism. OVS offers a generic UI like the DDIC value help. However, you must offer the selection logic. To do this, you must provide the name of a class implementing IF_FPM_GUIBB_OVS in the field description in field OVS_NAME. If the specified name is the same as the feeder class name, then the feeder class instance will be used,
otherwise this class will be instantiated whenever it is needed.

            This interface offers 4 methods:

                1. HANDLE_PHASE_0 where the OVS popup can be “configured”

                 2. HANDLE_PHASE_1 to define the selection fields

                 3.  HANDLE_PHASE_2 where the result list must be determined

               4. HANDLE_PHASE_3 where the selected result list entry is passed back to the input field

             In order to fulfill these tasks, an instance of IF_WD_OVSis passed as an importing parameter to these methods.

Step 1.

Go to SE24 and open Feeder Class in edit mode: In this feeder class, now we need to include an additional standard IF_FPM_GUIBB_OVS interface Or your could Implement IF_FPM_GUIBB_OVS_SEARCH Interface. Here in this example we will be using IF_FPM_GUIBB_OVS interface.

IF_FPM_GUIBB_OVS_SEARCH interface includes the IF_FPM_GUIBB_OVS interface and in addition provides a method SET_CURRENT_SEARCH_CRITERIA. Example : A user selects  France from the dropdown list in the search criterion Country at runtime; accordingly, the search criterion City should only display cities in France in its dropdown list. IF_FPM_GUIBB_OVS_SEARCH can be used if we want to change a selection field based on value of the another selection field.

Including the interface adds 4 new methods to the feeder class, HANDLE_PHASE_0, HANDLE_PHASE_1, HANDLE_PHASE_2
and HANDLE_PHASE_3. Make sure to open each method and save it once. After that, we will implementing code in  the handle_phase_2 and handle_phase_3 methods.




Step 2.

Method: IF_FPM_GUIBB_OVS~Handle_phase_2.

The method will be implemented to show the possible (F4 values ) to be displayed on screen. This method allows you to write custom logic to populate possible value help for a given field.

Input/Import Parameter:

  1. IV_FIELD_NAME (at runtime contains the selection field name for which the F4 (value help) is triggered.
  2. IO_OVS_CALLBACK ( a reference to IF_WD_OVS). This instance has method named set_output_table, which need to be used to populate the possible entries.

Declare a local structure and internal table to hold the F4 values to be displayed on screen. As always, now we will need to write a select statement to populate the internal table. After that we will pass this internal table to the set_output_table  method.

          TYPES : BEGIN OF lty_teds2,
            status
TYPE teds2-status,
            descrp
TYPE teds2-descrp,
         
END OF lty_teds2.
     DATA : lit_teds2 TYPE STANDARD TABLE OF lty_teds2.

        SELECT status descrp FROM teds2 INTO TABLE lit_teds2
   
WHERE langua = sy-langu.

 

       io_ovs_callback->set_output_table(
   
EXPORTING
     
output       = lit_teds2
*      table_header = table_header
*      column_texts = column_texts    " Table of Name Value Pairs

).

Step 3.

Method : IF_FPM_GUIBB_OVS~Handle_phase_3.

This method will be implemented to populate the selected value in the popup screen back to the selection screen field value.

Input/Import parameter:

IV_WD_CONTEXT_ATTR_NAME: This contains the name of the selection field attribute name. For example the field you have
added in the screen is IDOCSTATUS. The value of the attribute will be INPUT_IDOCSTATUS

IO_OVS_CALLBACK : ( a reference to IF_WD_OVS). To set the selected value back to the screen, we
will be using the instance attributes SELECTION and context_element

  1. Define a structure similar to the line type of the values displayed in F4 help.

           TYPES : BEGIN OF lty_teds2,
            status
TYPE teds2-status,
            descrp
TYPE teds2-descrp,
         
END OF lty_teds2.
    
FIELD-SYMBOLS: <ls_selection>    TYPE lty_teds2.

     2. Assign the attribute SELECTION to field symbol declared. Once assigned use the set_attribute method to set the value on the screen.

          ASSIGN io_ovs_callback->selection->* TO <ls_selection>.

         io_ovs_callback->context_element->set_attribute(
     
EXPORTING
       
value = <ls_selection>-status    " Attribute Value
        name 
= iv_wd_context_attr_name   " ).

Step 4.

Now we finished implementing the methods related to OVS.The next step is to ensure that the
OVS methods get triggered only when the user clicks on Value help on the desired field in this case the idoc status. 

IF_FPM_GUIBB_SEARCH~GET_DEFINITION

  ls_descr_attr-name = 'IDOCSTATUS'.
  ls_descr_attr
-text = 'IDOC Status'.
  ls_descr_attr
-ovs_name = Pass the name of the feeder class

    APPEND ls_descr_attr to et_field_description_attr.

Note: If you have implemented the OVS IF_FPM_GUIBB_OVS in a different class then pass the class
name of the
ls_descr_attr-ovs_name attribute.

Save and activate your feeder class. It’s time to test the application.

The developer guides suggest that we implement all 4 methods to HANDLE_PHASE_0, HANDLE_PHASE_1, HANDLE_PHASE_2 and HANDLE_PHASE_3. However, in this case we have used methods handle_phase_2 and handle_phase_3 to populate and select the value back to the screen.

Handle_phase_1 : Can be used to define the fields that we want to see, the title of the popup window and other
optional values. This is done using the method of the instance
IO_OVS_CALLBACK->set_configuration

The key to implement OVS is to understand the instance IO_OVS_CALLBACK (interface IF_WD_OVS) . Additionally, we can try
out the attributes and methods of this class we will be able to understand OVS better.

I hope the document will be helpful and if you have any comments, please feel free to post it.

8 Comments
Labels in this area