we copy the code from DEMO_GUI_ALV_GRID_EXT. I add the define button .
*&---------------------------------------------------------------------*
*& Report ZJGLTEST07
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zjgltest07.
TABLES : sbook.
*&---------------------------------------------------------------------*
*& Report DEMO_GUI_ALV_GRID_EXT
*&
*&---------------------------------------------------------------------*
*& this is an example report, how to use the PP extension class
*& CL_GUI_ALV_GRID_EXT that is based on CL_GUI_ALV_GRIDhas same
*& additional functions like: fast kernel BADI, Navigation profile,
*& and hide empty columns
*&---------------------------------------------------------------------*
TYPES: BEGIN OF ty_outtab,
sel.
INCLUDE STRUCTURE sbook .
TYPES END OF ty_outtab .
DATA: gw_outtab TYPE ty_outtab,
gt_outtab TYPE TABLE OF ty_outtab.
*data: gt_outtab type TABLE OF sbook.
data: gt_okcode TYPE navp_t_okcode,
go_grid TYPE REF TO cl_gui_alv_grid_ext,
go_container TYPE REF TO cl_gui_custom_container,
okcode TYPE sy-ucomm.
*&---------------------------------------------------------------------*
*& Class LCL_EVENTHANDLER
*&---------------------------------------------------------------------*
* eventhandler
*----------------------------------------------------------------------*
CLASS lcl_eventhandler DEFINITION FINAL.
PUBLIC SECTION.
CLASS-METHODS:
on_toolbar FOR EVENT toolbar OF cl_gui_alv_grid_ext
IMPORTING e_object,
on_user_command FOR EVENT user_command OF cl_gui_alv_grid_ext
IMPORTING e_ucomm.
ENDCLASS. "lcl_eventhandler DEFINITION
*----------------------------------------------------------------------*
* CLASS lcl_eventhandler IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_eventhandler IMPLEMENTATION.
METHOD on_user_command.
DATA: lt_rows TYPE lvc_t_row,
ls_rows LIKE LINE OF lt_rows,
ls_outtab LIKE LINE OF gt_outtab.
CASE e_ucomm.
WHEN 'ANWENDUNG'.
CALL METHOD go_grid->get_selected_rows
IMPORTING
et_index_rows = lt_rows.
IF NOT lt_rows IS INITIAL.
LOOP AT lt_rows INTO ls_rows.
* fill gt_selected_rows.
READ TABLE gt_outtab INDEX ls_rows-index INTO ls_outtab.
ls_outtab-forcuram = 4000.
MODIFY gt_outtab FROM ls_outtab INDEX ls_rows-index.
ENDLOOP.
go_grid->refresh_table_display( ).
ENDIF.
ENDCASE.
ENDMETHOD. "on_user_command
METHOD on_toolbar.
DATA: l_toolbar LIKE LINE OF e_object->mt_toolbar.
* DEMO: change current line
READ TABLE e_object->mt_toolbar WITH KEY function = 'ANWENDUNG'
TRANSPORTING NO FIELDS.
IF sy-subrc <> 0.
l_toolbar-function = 'ANWENDUNG'.
l_toolbar-icon = icon_price.
l_toolbar-quickinfo = ' 4000'.
l_toolbar-disabled = space.
APPEND l_toolbar TO e_object->mt_toolbar.
ENDIF.
CLEAR l_toolbar.
ENDMETHOD. "on_toolbar
ENDCLASS. "lcl_eventhandler IMPLEMENTATION
*PARAMETERS:
* p_no_nav TYPE char1 DEFAULT space AS CHECKBOX,
* p_ext_na TYPE char1 DEFAULT 'X' AS CHECKBOX,
* p_hid_em TYPE char1 DEFAULT 'X' AS CHECKBOX.
SELECT-OPTIONS:s_carrid FOR sbook-carrid DEFAULT 'AA'.
AT SELECTION-SCREEN OUTPUT.
START-OF-SELECTION.
CALL SCREEN 0100.
*---------------------------------------------------------------------*
* MODULE STATUS_0100 OUTPUT
*---------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
SET PF-STATUS '001'.
SET TITLEBAR '001'.
ENDMODULE. " STATUS_0100 OUTPUT
*---------------------------------------------------------------------*
* MODULE pbo_0100 OUTPUT
*---------------------------------------------------------------------*
MODULE pbo_0100 OUTPUT.
IF go_grid IS NOT BOUND.
PERFORM pbo_0100.
ENDIF.
ENDMODULE. " pbo_0100 OUTPUT
*---------------------------------------------------------------------*
* MODULE user_command_0100 INPUT
*---------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
okcode = sy-ucomm .
CASE okcode.
WHEN 'BACK'
OR 'EXIT'
OR 'CANCEL'.
SET SCREEN 0.
LEAVE SCREEN.
WHEN 'REFRESH'.
PERFORM data_select.
go_grid->refresh_table_display( ).
WHEN 'GEN'.
ENDCASE.
CLEAR okcode.
ENDMODULE. " USER_COMMAND_0100 INPUT
*&--------------------------------------------------------------------*
*& Form pbo_0100
*&--------------------------------------------------------------------*
FORM pbo_0100 .
DATA: ls_variant TYPE disvariant,
ls_layout TYPE lvc_s_layo.
PERFORM data_select.
* create new container for main screen
CREATE OBJECT go_container
EXPORTING
container_name = 'CONTROL1'.
* create and initialize ALV display
CREATE OBJECT go_grid
EXPORTING
i_parent = go_container
EXCEPTIONS
OTHERS = 1.
* hide all visible emtpty columns at first display:
* go_grid->set_hide_empty_columns( EXPORTING
* iv_hide_empty_columns = p_hid_em ).
* init navigation profile ?
* IF p_no_nav = 'X'.
* go_grid->set_navigation_profile( EXPORTING
* iv_navp_on = space ).
* ELSE.
* navigation profile activ -> add EXT function to navigation profile?
* go_grid->set_okcode_table( EXPORTING it_okcode = gt_okcode
* iv_ext_functions = p_ext_na ).
* ENDIF.
SET HANDLER lcl_eventhandler=>on_toolbar FOR go_grid.
* SET HANDLER lcl_eventhandler=>on_context_menu FOR go_grid.
SET HANDLER lcl_eventhandler=>on_user_command FOR go_grid.
* needed for BADI, without that no badi will activated!
ls_variant-report = sy-repid.
* set grid title
ls_layout-grid_title = sy-title.
ls_layout-smalltitle = 'X'.
* call ALV
go_grid->W(
EXPORTING
is_variant = ls_variant
i_save = 'A'
is_layout = ls_layout
i_structure_name = 'SBOOK'
CHANGING
it_outtab = gt_outtab
EXCEPTIONS
OTHERS = 1 ).
ENDFORM. " pbo_0100
*&---------------------------------------------------------------------*
*& Form data_select
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM data_select.
* select data
SELECT * FROM sbook INTO CORRESPONDING FIELDS OF TABLE gt_outtab
WHERE carrid in s_carrid .
"#EC CI_NOWHERE
IF gt_outtab IS INITIAL.
MESSAGE i888(navigation_profile)
WITH 'NO TEST DATA!' 'GENERATE'
'WITH REPORT' 'FLIGHT_MODEL_DATA_GENERATOR'.
LEAVE TO SCREEN 0.
ENDIF.
ENDFORM. "data_select
We call ‘set_table_for_first_display’ . I don’t know how to deal with the i_structure_name . Becasue we define internal table. In general I don’t use standard table.