Hi all,
I saw many people asking how to do a multi-selection on a webdynpro ALV without using ctrl key.
First of all it isn't a straight forward method but does the job.
So if you are in a situation where you have to do multi-selection without ctrl key, this document should help you.
Before I start this document I assume that you know how to create an ALV in webdynpro.
Step 1:Create an ALV and while initializing the ALV ( In my case its in WDDOINIT method ) set the selection mode as MULTI.
Step 2:Create a global table as an attribute to the controller.
GT_INDEX is of type ZINDEX_T
ZINDEX_T has the line type ZINDEX_S
and ZINDEX_S has the structure:
Step 3:Implement the event handler method on_lead_select of the ALV
Step 4:Write the following code in the method.
DATA: ls_index TYPE zindex_s, lv_index TYPE i. DATA lo_nd_table_node TYPE REF TO if_wd_context_node. lo_nd_table_node = wd_context->get_child_node( name = wd_this->wdctx_table_node ). READ TABLE wd_this->gt_index WITH KEY idx = r_param->index TRANSPORTING NO FIELDS. IF sy-subrc = 0. DELETE wd_this->gt_index INDEX sy-tabix. ELSE. CLEAR ls_index. ls_index-idx = r_param->index. APPEND ls_index TO wd_this->gt_index. ENDIF. LOOP AT wd_this->gt_index INTO ls_index. lv_index = ls_index-idx. lo_nd_table_node->set_selected( EXPORTING flag = abap_true " Value with Which Property Is to Filled index = lv_index " Index of Context Element ). ENDLOOP.
Now you go and click on the rows required without pressing ctrl key to select it and click again to deselect it.
Thank you.