图标(ICON)和提示信息(tooltips)会使ALV更加易读,突出重点,下面就介绍一下如何在SALV上添加ICON和tooltips。
本例子在SALV的status列中显示红绿灯图标,并根据图标的颜色显示不同的提示信息,方便用户更清晰的阅读SALV,具体方法如下:
1,将为图标ID赋值到Status列上,图标ID的查询方法参照-->如何查找图标ID(ICON ID)等详细信息
2,设定列值为图标-调用cl_salv_columns->get_column ()得到‘Status’列的类引用,然后通过cl_salv_columns->set_icon ()将列设置为显示图标.
3,调用cl_salv_tooltips->add_tooltip()设置图标的提示信息(tooltips)
完整代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 |
REPORT Z_SALV_18. 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: <icon>. DATA: ls_output LIKE LINE OF t_output. DO 3 TIMES. ls_output-status = icon_green_light. ls_output-field1 = sy-abcde. 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: <icon>. * * 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. * 设定SALV的工具栏toolbar lo_functions = o_salv->get_functions( ). lo_functions->set_all( abap_true ). *... set the columns lo_columns = o_salv->get_columns( ). TRY. lo_column ?= lo_columns->get_column( 'STATUS' ). * 将列设置为显示ICON lo_column->set_icon( if_salv_c_bool_sap=>true ). * 设置列标签 label 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. * 当绿灯时,提示 Everything is Processed 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. * 黄灯时提示 Everything is Processed 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. * 红灯时提示 Nothing Yet processed 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 |
运行后,鼠标悬停在图标(ICON)上会显示相应的提示信息,
以上。
发表评论