效果图:
code:
*&---------------------------------------------------------------------*
*& Report ZLM_ALV_010
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZLM_ALV_010
.
CLASS lcl_main
DEFINITION
.
PUBLIC
SECTION
.
DATA o_salv
TYPE
REF
TO cl_salv_table
.
TYPES
:
BEGIN
OF ty_output
,
status
TYPE char10
,
field1
TYPE char30
,
END
OF ty_output
.
DATA
: t_output
TYPE
STANDARD
TABLE
OF ty_output
.
METHODS
:
select_data
,
generate_alv
.
ENDCLASS
.
"lcl_main DEFINITION
*
START-OF-SELECTION
.
DATA
: o_main
TYPE
REF
TO lcl_main
.
CREATE OBJECT
o_main
.
o_main
->select_data
(
)
.
o_main
->generate_alv
(
)
.
*
CLASS lcl_main
IMPLEMENTATION
.
METHOD select_data
.
INCLUDE
:
.
DATA
: ls_output
LIKE
LINE
OF t_output
.
DO
3
TIMES
.
ls_output
-status
= icon_green_light
.
ls_output
-field1
= sy
-uname
.
APPEND ls_output
TO t_output
.
ls_output
-status
= icon_yellow_light
.
APPEND ls_output
TO t_output
.
ls_output
-status
= icon_red_light
.
APPEND ls_output
TO t_output
.
ls_output
-status
= icon_led_green
.
APPEND ls_output
TO t_output
.
ls_output
-status
= icon_led_red
.
APPEND ls_output
TO t_output
.
ls_output
-status
= icon_led_yellow
.
APPEND ls_output
TO t_output
.
ENDDO
.
ENDMETHOD
.
"select_Data
METHOD generate_alv
.
DATA
: lo_functions
TYPE
REF
TO cl_salv_functions_list
.
DATA
: lo_functional_settings
TYPE
REF
TO cl_salv_functional_settings
.
DATA
: lo_tooltips
TYPE
REF
TO cl_salv_tooltips
,
lv_value
TYPE lvc_value
.
DATA
: lo_columns
TYPE
REF
TO cl_salv_columns
.
DATA
: lo_column
TYPE
REF
TO cl_salv_column_table
.
INCLUDE
:
.
*
* ALV Object
TRY
.
cl_salv_table
=>factory
(
IMPORTING
r_salv_table
= o_salv
CHANGING
t_table
= t_output
)
.
CATCH cx_salv_msg
.
"#EC NO_HANDLER
ENDTRY
.
* Functions
lo_functions
= o_salv
->get_functions
(
)
.
lo_functions
->set_all
( abap_true
)
.
*... set the columns
lo_columns
= o_salv
->get_columns
(
)
.
"lo_columns->set_optimize( abap_true ).
TRY
.
lo_column
?=
lo_columns
->get_column
(
'STATUS'
)
.
lo_column
->set_icon
( if_salv_c_bool_sap
=>true
)
.
lo_column
->set_long_text
(
'Hover for Tooltip'
)
.
lo_column
->set_alignment
( if_salv_c_alignment
=>
centered
)
.
lo_column
->set_output_length
(
20
)
.
CATCH cx_salv_not_found
.
"#EC NO_HANDLER
ENDTRY
.
*...Tooltips
lo_functional_settings
= o_salv
->get_functional_settings
(
)
.
lo_tooltips
= lo_functional_settings
->get_tooltips
(
)
.
TRY
.
lv_value
= icon_green_light
.
lo_tooltips
->add_tooltip
(
TYPE
= cl_salv_tooltip
=>c_type_icon
VALUE
= lv_value
tooltip
=
'Everything is Processed'
)
.
"#EC NOTEXT
CATCH cx_salv_existing
.
"#EC NO_HANDLER
ENDTRY
.
TRY
.
lv_value
= icon_yellow_light
.
lo_tooltips
->add_tooltip
(
TYPE
= cl_salv_tooltip
=>c_type_icon
VALUE
= lv_value
tooltip
=
'Partially processed'
)
.
"#EC NOTEXT
CATCH cx_salv_existing
.
"#EC NO_HANDLER
ENDTRY
.
TRY
.
lv_value
= icon_red_light
.
lo_tooltips
->add_tooltip
(
TYPE
= cl_salv_tooltip
=>c_type_icon
VALUE
= lv_value
tooltip
=
'Nothing Yet processed'
)
.
"#EC NOTEXT
CATCH cx_salv_existing
.
"#EC NO_HANDLER
ENDTRY
.
*... display the table
o_salv
->display
(
)
.
ENDMETHOD
.
"generate_alv
ENDCLASS
.
"lcl_main IMPLEMENTATION