cancel
Showing results for 
Search instead for 
Did you mean: 

How to add Custom button to existing ALV toolbar

Former Member
0 Kudos

Hi,

I want to add custom buttons for varaints in the existing row PRINT VERSION/EXPORT

How do we do that?

Rgds

Vara

Accepted Solutions (1)

Accepted Solutions (1)

yesrajkumar
Active Participant
0 Kudos

I have used the standard component u2018salv_wd_tableu2019 in my application and will be able to give example by adding a button named 'NEW__BUTTON' .

In the WDDOINIT method of the component controller, use the following code to define column name, your own buttons, visible column for the same component usage.

DATA:

lr_salv_wd_table_usage TYPE REF TO if_wd_component_usage,

lr_salv_wd_table TYPE REF TO iwci_salv_wd_table.

*Check ALV component usage

lr_salv_wd_table_usage = wd_this->wd_cpuse_alv( ).

IF lr_salv_wd_table_usage->has_active_component( ) IS INITIAL.

lr_salv_wd_table_usage->create_component( ).

ELSE.

lr_salv_wd_table_usage->delete_component( ).

lr_salv_wd_table_usage->create_component( ).

ENDIF.

*Get ALV component

lr_salv_wd_table = wd_this->wd_cpifc_alv( ).

wd_this->mr_table type ref to CL_SALV_WD_CONFIG_TABLE.

*Get ConfigurationModel from ALV Component

wd_this->mr_table = lr_salv_wd_table->get_model( ).

*Set table settings

DATA:

lr_table_settings TYPE REF TO if_salv_wd_table_settings.

lr_table_settings ?= wd_this->mr_table .

lr_table_settings->set_visible_row_count( '5' ).

lr_table_settings->set_width( '100%' ).

DATA:

lr_header TYPE REF TO cl_salv_wd_header,

l_header_text TYPE string.

lr_header = lr_table_settings->get_header( ).

l_header_text = cl_wd_utilities=>get_otr_text_by_alias( 'NEW__BUTTON' ).

lr_header->set_text( l_header_text ).

lr_header->set_tooltip( l_header_text ).

"lr_table_settings->set_selection_mode( cl_wd_table=>e_selection_mode-multi_no_lead ).

*Set functions

IF wd_this->mb_no_maintain NE abap_true.

DATA:

lr_function TYPE REF TO cl_salv_wd_function,

lr_fe_button TYPE REF TO cl_salv_wd_fe_button,

l_btn_text TYPE string.

*Add the button here for validation on the top of the ALV

*This is where you add the buttons on the same ROW.

lr_function = lr_functions->create_function( 'NEW__BUTTON' ).

CREATE OBJECT lr_fe_button.

l_btn_text = cl_wd_utilities=>get_otr_text_by_alias( 'NEW__BUTTON' ).

lr_fe_button->set_text( l_btn_text ).

lr_fe_button->set_tooltip( l_btn_text ).

lr_function->set_editor( lr_fe_button ).

After defining the buttons 'NEW__BUTTON' , handle the actions for the same using the method u2018LIST_ACTIONu2019 which should have the event as u2018ON_FUNCTIONu2019, controller as u2018interface controlleru2019 and component use as the name you have given say u2018ALVu2019.

In the method u2018LIST_ACTIONu2019, handle the actions as below. This method will have the following importing parameters.

WDEVENT Importing CL_WD_CUSTOM_EVENT

R_PARAM Importing IF_SALV_WD_TABLE_FUNCTION

method list_action .

case r_param->id .

when 'NEW__BUTTON'.

"Do the validation here-"

endcase.

endmethod.

Thanks,

Rajkumar.S

Former Member
0 Kudos

Thank you raj.

rgds

Vara

Answers (0)