10-21-2015 5:48 PM
Hi,
In my ALV grid display, am creating a new button in the toolbar. Once I click on the button the values displayed should change. More precisely if the values are 100, 200, 300 after clicking on the button it should show as 100%, 200%, 300%.
Need sample code please.
Thanks
10-21-2015 8:21 PM
Hi,
I think you can do it by trying to use this code
REPORT zibo_pg_alv_toolbar4.
DATA lt_exclude TYPE ui_functions.
DATA:
r_container TYPE REF TO cl_gui_custom_container,
g_grid TYPE REF TO cl_gui_alv_grid.
DATA:
t_sflight TYPE TABLE OF sflight.
DATA:
ls_layout TYPE lvc_s_layo.
DATA: gr_alv_toolbarmanager TYPE REF TO cl_alv_grid_toolbar_manager. "Toolbar man
INCLUDE ZIBO_INC_LCL_CLASS_BUTTONS2.
*INCLUDE zibo_inc_lcl_class_buttons.
DATA: gr_alv_toolbar TYPE REF TO lcl_alv_toolbar.
DATA: gv_toolbar_hide TYPE abap_bool VALUE abap_false.
START-OF-SELECTION.
SELECT * FROM sflight INTO TABLE t_sflight.
CALL SCREEN 100.
MODULE status_0100 OUTPUT.
SET PF-STATUS 'SCREEN'.
SET TITLEBAR 'TITLE'.
PERFORM exclude_tb_functions CHANGING lt_exclude.
ENDMODULE. " STATUS_0100 OUTPUT
MODULE user_command_0100 INPUT.
CASE sy-ucomm.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE. "USER_COMMAND_0100 INPUT
FORM exclude_tb_functions CHANGING ct_execlude TYPE ui_functions.
DATA:
ls_exclude TYPE ui_func,
lt_event TYPE cntl_simple_events.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_copy.
APPEND ls_exclude TO ct_execlude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_copy_row.
APPEND ls_exclude TO ct_execlude.
CREATE OBJECT r_container
EXPORTING
container_name = 'CONTAINER'.
CREATE OBJECT g_grid
EXPORTING
i_parent = r_container.
* create ALV event handler
CREATE OBJECT gr_alv_toolbar
EXPORTING
io_alv_grid = g_grid.
* ALV attributes FOR LAYOUT
PERFORM alv_report_layout.
CHECK g_grid IS NOT INITIAL.
* Register event handler
SET HANDLER gr_alv_toolbar->on_toolbar FOR g_grid.
SET HANDLER gr_alv_toolbar->alv_handle_user_command FOR g_grid.
CALL METHOD g_grid->set_table_for_first_display
EXPORTING
i_structure_name = 'SFLIGHT'
is_layout = ls_layout
it_toolbar_excluding = lt_exclude
CHANGING
* it_fieldcatalog = pt_fieldcat
it_outtab = t_sflight.
g_grid->refresh_table_display( ).
ENDFORM.
FORM alv_user_command USING e_ucomm TYPE sy-ucomm.
DATA:
l_line1 TYPE string.
CASE e_ucomm.
WHEN 'BUT1'.
PERFORM change_to_percent.
WHEN OTHERS.
ENDCASE.
ENDFORM. "alv_user_command
FORM alv_report_layout.
ls_layout-cwidth_opt = 'X'.
ls_layout-zebra = 'X'.
ENDFORM. " alv_report_layout
FORM change_to_percent .
FIELD-SYMBOLS <ls_sflight> TYPE sflight.
loop at t_sflight ASSIGNING <ls_sflight>.
CONCATENATE <ls_sflight>-PLANETYPE '%' into <ls_sflight>-PLANETYPE.
ENDLOOP.
g_grid->refresh_table_display( ).
ENDFORM.
*&---------------------------------------------------------------------*
*& Include ZIBO_INC_LCL_CLASS_BUTTONS
*&---------------------------------------------------------------------*
CLASS lcl_alv_toolbar DEFINITION.
PUBLIC SECTION.
*Constructor
METHODS: constructor
IMPORTING
io_alv_grid TYPE REF TO cl_gui_alv_grid,
*Event for toolbar
on_toolbar FOR EVENT toolbar OF cl_gui_alv_grid
IMPORTING e_object,
* activate context menu handling
alv_handle_user_command
FOR EVENT user_command OF cl_gui_alv_grid
IMPORTING e_ucomm.
ENDCLASS. "lcl_alv_toolbar DEFINITION
CLASS lcl_alv_toolbar IMPLEMENTATION.
METHOD constructor.
* Create ALV toolbar manager instance
CREATE OBJECT gr_alv_toolbarmanager
EXPORTING
io_alv_grid = io_alv_grid
iv_initial_state = '3'.
ENDMETHOD. "constructor
METHOD on_toolbar.
DATA:
ls_toolbar TYPE stb_button.
ls_toolbar-function = 'BUT1'.
ls_toolbar-icon = icon_phone.
ls_toolbar-butn_type = 0.
ls_toolbar-text = 'change to% '.
APPEND ls_toolbar TO e_object->mt_toolbar.
CALL METHOD gr_alv_toolbarmanager->reorganize
EXPORTING
io_alv_toolbar = e_object.
ENDMETHOD. "on_toolbar
METHOD alv_handle_user_command.
PERFORM alv_user_command
USING e_ucomm.
ENDMETHOD. "alv_handle_context_menu
ENDCLASS. "lcl_alv_toolbar IMPLEMENTATION
Regards
Ebrahim
10-21-2015 8:21 PM
Hi,
I think you can do it by trying to use this code
REPORT zibo_pg_alv_toolbar4.
DATA lt_exclude TYPE ui_functions.
DATA:
r_container TYPE REF TO cl_gui_custom_container,
g_grid TYPE REF TO cl_gui_alv_grid.
DATA:
t_sflight TYPE TABLE OF sflight.
DATA:
ls_layout TYPE lvc_s_layo.
DATA: gr_alv_toolbarmanager TYPE REF TO cl_alv_grid_toolbar_manager. "Toolbar man
INCLUDE ZIBO_INC_LCL_CLASS_BUTTONS2.
*INCLUDE zibo_inc_lcl_class_buttons.
DATA: gr_alv_toolbar TYPE REF TO lcl_alv_toolbar.
DATA: gv_toolbar_hide TYPE abap_bool VALUE abap_false.
START-OF-SELECTION.
SELECT * FROM sflight INTO TABLE t_sflight.
CALL SCREEN 100.
MODULE status_0100 OUTPUT.
SET PF-STATUS 'SCREEN'.
SET TITLEBAR 'TITLE'.
PERFORM exclude_tb_functions CHANGING lt_exclude.
ENDMODULE. " STATUS_0100 OUTPUT
MODULE user_command_0100 INPUT.
CASE sy-ucomm.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE. "USER_COMMAND_0100 INPUT
FORM exclude_tb_functions CHANGING ct_execlude TYPE ui_functions.
DATA:
ls_exclude TYPE ui_func,
lt_event TYPE cntl_simple_events.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_copy.
APPEND ls_exclude TO ct_execlude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_copy_row.
APPEND ls_exclude TO ct_execlude.
CREATE OBJECT r_container
EXPORTING
container_name = 'CONTAINER'.
CREATE OBJECT g_grid
EXPORTING
i_parent = r_container.
* create ALV event handler
CREATE OBJECT gr_alv_toolbar
EXPORTING
io_alv_grid = g_grid.
* ALV attributes FOR LAYOUT
PERFORM alv_report_layout.
CHECK g_grid IS NOT INITIAL.
* Register event handler
SET HANDLER gr_alv_toolbar->on_toolbar FOR g_grid.
SET HANDLER gr_alv_toolbar->alv_handle_user_command FOR g_grid.
CALL METHOD g_grid->set_table_for_first_display
EXPORTING
i_structure_name = 'SFLIGHT'
is_layout = ls_layout
it_toolbar_excluding = lt_exclude
CHANGING
* it_fieldcatalog = pt_fieldcat
it_outtab = t_sflight.
g_grid->refresh_table_display( ).
ENDFORM.
FORM alv_user_command USING e_ucomm TYPE sy-ucomm.
DATA:
l_line1 TYPE string.
CASE e_ucomm.
WHEN 'BUT1'.
PERFORM change_to_percent.
WHEN OTHERS.
ENDCASE.
ENDFORM. "alv_user_command
FORM alv_report_layout.
ls_layout-cwidth_opt = 'X'.
ls_layout-zebra = 'X'.
ENDFORM. " alv_report_layout
FORM change_to_percent .
FIELD-SYMBOLS <ls_sflight> TYPE sflight.
loop at t_sflight ASSIGNING <ls_sflight>.
CONCATENATE <ls_sflight>-PLANETYPE '%' into <ls_sflight>-PLANETYPE.
ENDLOOP.
g_grid->refresh_table_display( ).
ENDFORM.
*&---------------------------------------------------------------------*
*& Include ZIBO_INC_LCL_CLASS_BUTTONS
*&---------------------------------------------------------------------*
CLASS lcl_alv_toolbar DEFINITION.
PUBLIC SECTION.
*Constructor
METHODS: constructor
IMPORTING
io_alv_grid TYPE REF TO cl_gui_alv_grid,
*Event for toolbar
on_toolbar FOR EVENT toolbar OF cl_gui_alv_grid
IMPORTING e_object,
* activate context menu handling
alv_handle_user_command
FOR EVENT user_command OF cl_gui_alv_grid
IMPORTING e_ucomm.
ENDCLASS. "lcl_alv_toolbar DEFINITION
CLASS lcl_alv_toolbar IMPLEMENTATION.
METHOD constructor.
* Create ALV toolbar manager instance
CREATE OBJECT gr_alv_toolbarmanager
EXPORTING
io_alv_grid = io_alv_grid
iv_initial_state = '3'.
ENDMETHOD. "constructor
METHOD on_toolbar.
DATA:
ls_toolbar TYPE stb_button.
ls_toolbar-function = 'BUT1'.
ls_toolbar-icon = icon_phone.
ls_toolbar-butn_type = 0.
ls_toolbar-text = 'change to% '.
APPEND ls_toolbar TO e_object->mt_toolbar.
CALL METHOD gr_alv_toolbarmanager->reorganize
EXPORTING
io_alv_toolbar = e_object.
ENDMETHOD. "on_toolbar
METHOD alv_handle_user_command.
PERFORM alv_user_command
USING e_ucomm.
ENDMETHOD. "alv_handle_context_menu
ENDCLASS. "lcl_alv_toolbar IMPLEMENTATION
Regards
Ebrahim
10-22-2015 7:28 AM
Hi Ramya,
Just concatenate the value with '%'.
Look into the sample code attached.
Regards,
N. HARISH KUMAR