效果图:
定义的status
code:
REPORT zlm_alv_002
.
DATA
: gt_spfli
TYPE
TABLE
OF spfli
.
DATA
: ls_spfli
TYPE spfli
.
DATA
: gr_table
TYPE
REF
TO cl_salv_table
.
DATA
: gr_functions
TYPE
REF
TO cl_salv_functions_list
.
DATA
: gr_events
TYPE
REF
TO cl_salv_events_table
.
DATA
: gr_selections
TYPE
REF
TO cl_salv_selections
.
CLASS lcl_handle_events
DEFINITION
.
PUBLIC
SECTION
.
METHODS
:
on_user_command
FOR
EVENT added_function
OF cl_salv_events
IMPORTING e_salv_function
,
on_double_click
FOR
EVENT double_click
OF cl_salv_events_table
IMPORTING row column
.
ENDCLASS
.
"lcl_handle_events DEFINITION
DATA
: event_handler
TYPE
REF
TO lcl_handle_events
.
START-OF-SELECTION
.
SELECT *
INTO CORRESPONDING
FIELDS
OF
TABLE gt_spfli
FROM spfli
UP
TO
100
ROWS
.
CALL
METHOD cl_salv_table
=>factory
IMPORTING r_salv_table
= gr_table
CHANGING t_table
= gt_spfli
.
gr_table
->set_screen_status
( pfstatus
=
'SALV_TABLE_STANDARD'
report
= sy
-repid
set_functions
= gr_table
->c_functions_all
)
.
gr_events
= gr_table
->get_event
(
)
.
CREATE OBJECT event_handler
.
SET
HANDLER event_handler
->on_user_command
FOR gr_events
.
SET
HANDLER event_handler
->on_double_click
FOR gr_events
.
* Set up selections.
gr_selections
= gr_table
->get_selections
(
)
.
gr_selections
->set_selection_mode
(
1
)
.
"Single
* Display
gr_table
->display
(
)
.
CLASS lcl_handle_events
IMPLEMENTATION
.
METHOD on_user_command
.
"Get the selection rows
DATA
: lr_selections
TYPE
REF
TO cl_salv_selections
.
DATA
: lt_rows
TYPE salv_t_row
.
DATA
: ls_rows
TYPE
i
.
DATA
:
message
TYPE string
.
CASE e_salv_function
.
WHEN
'MYFUNCTION'
.
lr_selections
= gr_table
->get_selections
(
)
.
lt_rows
= lr_selections
->get_selected_rows
(
)
.
READ
TABLE lt_rows
INTO ls_rows
INDEX
1
.
READ
TABLE gt_spfli
INTO ls_spfli
INDEX ls_rows
.
CONCATENATE ls_spfli
-carrid ls_spfli
-connid ls_spfli
-cityfrom ls_spfli
-cityto
INTO
message
SEPARATED
BY space
.
MESSAGE i001
(
00
)
WITH
'You pushed the button!'
message
.
ENDCASE
.
ENDMETHOD
.
"on_user_command
METHOD on_double_click
.
DATA
:
message
TYPE string
.
DATA
: row_c
(
4
)
TYPE
c
.
row_c
= row
.
CONCATENATE
'Row' row_c
'Column' column
INTO
message
SEPARATED
BY space
.
MESSAGE i001
(
00
)
WITH
'You double-clicked