Skip to Content

Hi Experts,

I am sharing my knowledge on Webdynpro Component Interface.

By using the component Interface, We can call multiple components dynamically based on action triggered.

In this document , I am calling 4 components dynamically based on action .

Steps to follow.

1.   Create a table named ZCOUNTRY_COMP.

  Create the entries as below

1.  Create a Webdynpro Component Interface with name ‘ZRAO_INTERFACE_TEST’ with interface view ‘INTERFACE_VIEW’.

2. Create the 4 compoents with the names ‘ZRAO_INTERFACE_COMP1,ZRAO_INTERFACE_COMP2,ZRAO_INTERFACE_COMP3

    and ZRAO_INTERFACE_COMP4′.

      Creating component ‘ZRAO_INTERFACE_COMP1’ as follows.

       i.  Delete the default window in ZRAO_INTERFACE_COMP1 and Implement the interface in the component ZRAO_INTERFACE_COMP1′.

           This interface will provide common window named ‘INTERFACE_VIEW’.

         

     ii.  Create a view with UI element caption as below.

          

   Follow the above two steps for the another 3 components.( ZRAO_INTERFACE_COMP2, ZRAO_INTERFACE_COMP3, ZRAO_INTERFACE_COMP4 ).

     

    

&

   

After creating all the 4 components , Create a Main component ZRAO_INTERFACE_MAIN with re-use component

ZRAO_INTERFACE_TEST interface as follows.

   

3. Create the view with dropdownbyindex with action ‘DROPDOWN’ and one ViewContainerElement as below.

   

4.  Write the code in Action DROPDOWN .

     METHOD onactiondropdown .

   DATA lo_nd_country_comp TYPE REF TO if_wd_context_node.
   DATA lo_el_country_comp TYPE REF TO if_wd_context_element.
   DATA lv_wda_component TYPE string .

* navigate from <CONTEXT> to <COUNTRY_COMP> via lead selection
   lo_nd_country_comp = wd_context->get_child_node( name = wd_this->wdctx_country_comp ).
* get element via lead selection
   lo_el_country_comp = lo_nd_country_comp->get_element( ).

   IF lo_el_country_comp IS NOT INITIAL.
* get single attribute
     lo_el_country_comp->get_attribute(
       EXPORTING
         name ‘WDA_COMPONENT’
       IMPORTING
         value = lv_wda_component ).

       DATA lo_cmp_usage TYPE REF TO if_wd_component_usage.
       lo_cmp_usage =   wd_this->wd_cpuse_dynamic_comp1( ).
       IF lo_cmp_usage->has_active_component( ) IS INITIAL.
         lo_cmp_usage->create_component( lv_wda_component ). “Dynamic wda component name.
       ELSE.
         lo_cmp_usage->delete_component( ).
         lo_cmp_usage->create_component( lv_wda_component ). “Dynamic wda component name.
       ENDIF.

       wd_this->wd_get_api( )->do_dynamic_navigation(
         source_window_name = ‘ZRAO_INTERFACE_MAIN’ “{this is my window name }
         source_vusage_name = ‘MAIN_USAGE_0’ “{this one is MAIN–“}
         source_plug_name = ‘OUT_PLUG1’ “{this plug name can be generated dynamically }
         target_component_name = ‘ZRAO_INTERFACE_TEST’
         target_component_usage = ‘DYNAMIC_COMP1’
         target_view_name = ‘INTERFACE_VIEW’ “{the view i want to embed}
         target_plug_name = ‘DEFAULT’
         target_embedding_position = ‘MAIN/VCE’ ).

   ENDIF.

ENDMETHOD.

Finally run the application.

If we select COMP2 , second component view will trigger.

 

Hope it will helpful.

Best regards,

Rao.

To report this post you need to login first.

Be the first to leave a comment

You must be Logged on to comment or reply to a post.

Leave a Reply