十五、SALV 显示图标(ICON)和提示信息(Tooltips)

58 篇文章 3 订阅

显示图标(ICON)和提示信息(Tooltips)

一、主要功能
  1. 图标(ICON)和提示信息(tooltips)会使ALV更加易读,突出重点,下面就介绍一下如何在SALV上添加ICON和tooltips。
  2. 在SALV的status列中显示红绿灯图标,并根据图标的颜色显示不同的提示信息,方便用户更清晰的阅读SALV,具体方法如下:
    • 将为图标ID赋值到Status列上,图标ID的查询方法参照–>如何查找图标ID(ICON ID)等详细信息
    • 设定列值为图标-调用cl_salv_columns->get_column ()得到‘Status’列的类引用,然后通过cl_salv_columns->set_icon ()将列设置为显示图标.
    • 调用cl_salv_tooltips->add_tooltip()设置图标的提示信息(tooltips)
二、实现与代码
*&---------------------------------------------------------------------*
*& Report ZABAP_SALV15
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ZABAP_SALV15.

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
三、执行结果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Wg3RgRBZ-1678759822879)(D:\学习计划笔记\SALV\IMAGE\image-20220418120350047.png)]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值