效果图:

ALV <wbr>demo:cl_salv_table <wbr>(ICONs <wbr>and <wbr>Tooltips)




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