ABAPSALV 固定列鼠标悬停文本

作者:ABAP猿 约 6 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:ABAP, 开发
目录
ABAPSALV 固定列鼠标悬停文本 - 封面图
ABAPSALV 固定列鼠标悬停文本 - 封面图
ABAPSALV 固定列鼠标悬停文本 - 封面图
ABAPSALV 固定列鼠标悬停文本 - 封面图

点击上方 蓝字 关注我们

ABAPSALV 固定列鼠标悬停文本 - 封面图
ABAPSALV 固定列鼠标悬停文本 - 封面图
ABAPSALV 固定列鼠标悬停文本 - 封面图
ABAPSALV 固定列鼠标悬停文本 - 封面图

Studies serve for delight, for ornament and for ability.

读书足以怡情,足以博彩,足以长才。

功能说明

上篇: [ ABAP SALV-隐藏列、修改列标题、添加图标列、调整列位置

](http://mp.weixin.qq.com/s?__biz=Mzg3OTE2Njg0OQ==&mid=2247493824&idx=1&sn=d55a310f49f4b5cd0212c0b68a25787d&chksm=cf0a3c2ef87db5385a04d9249869b51f6b1bd02921dd31754266817e68f14d74c23db01ec974&scene=21#wechat_redirect)

本系列将通过模拟用户与开发者之间的对话场景, 来逐步演示SALV的使用。在本篇中,我们将延续前文内容,解决用户最新提出的需求。

今天我们的主题是SALV模型中的另外两个功能:如何 固定列 以及如何添加鼠标 悬停文本

。相信通过亲自操作,你能够快速的理解和掌握这些知识点。让我们一起动手尝试一下,看看如何实现这些功能吧!

功能效果

ABAPSALV 固定列鼠标悬停文本 - 封面图
ABAPSALV 固定列鼠标悬停文本 - 封面图

第 16 天 用户说

固定序号列、图标列,方便查看。

IF p_day16 = 'X' .

"固定列

lo_columns -> set_key_fixation ( 'X' ).

lo_column ?= lo_columns -> get_column ( columnname = 'SNUM' ).

lo_column -> set_key ( 'X' ).

lo_column ?= lo_columns -> get_column ( columnname = 'ICON' ).

lo_column -> set_key ( 'X' ).

ENDIF .
ABAPSALV 固定列鼠标悬停文本 - 封面图
ABAPSALV 固定列鼠标悬停文本 - 封面图
ABAPSALV 固定列鼠标悬停文本 - 封面图
ABAPSALV 固定列鼠标悬停文本 - 封面图

第 17 天 用户说

图标列标题添加悬停文本、不同图标需要展示不同悬停文本。

IF p_day17 = 'X' .

"列标题悬停文本

lo_column ?= lo_columns -> get_column ( columnname = 'ICON' ).

lo_column -> set_tooltip ( '列标题:鼠标悬停有文本!' ).

"单元格内容悬停文本

DATA lo_functional_settings TYPE REF TO cl_salv_functional_settings .

DATA lo_tooltips TYPE REF TO cl_salv_tooltips .

lo_functional_settings = go_salv -> get_functional_settings ( ). lo_tooltips = lo_functional_settings -> get_tooltips ( ).

lo_tooltips -> add_tooltip (

EXPORTING

type = cl_salv_tooltip => c_type_icon "不设置图标列,不起效果

value = '@5B@'

tooltip = '图标值:绿灯!'

).

lo_tooltips -> add_tooltip (

EXPORTING

type = cl_salv_tooltip => c_type_icon

value = '@5C@'

tooltip = '图标值:红灯!'

).

lo_tooltips -> add_tooltip (

EXPORTING

type = cl_salv_tooltip => c_type_icon

value = '@5D@'

tooltip = '图标值:黄灯!'

).

ENDIF .
ABAPSALV 固定列鼠标悬停文本 - 封面图
ABAPSALV 固定列鼠标悬停文本 - 封面图
ABAPSALV 固定列鼠标悬停文本 - 封面图
ABAPSALV 固定列鼠标悬停文本 - 封面图

源码分享

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE t1 . SELECTION-SCREEN BEGIN OF LINE . SELECTION-SCREEN COMMENT 01 ( 54 ) day01 . SELECTION-SCREEN COMMENT 59 ( 54 ) day14 . SELECTION-SCREEN END OF LINE . SELECTION-SCREEN BEGIN OF LINE . SELECTION-SCREEN COMMENT 01 ( 54 ) day02 . SELECTION-SCREEN COMMENT 59 ( 54 ) day15 . SELECTION-SCREEN END OF LINE . SELECTION-SCREEN BEGIN OF LINE . SELECTION-SCREEN COMMENT 01 ( 54 ) day03 . SELECTION-SCREEN COMMENT 59 ( 54 ) day16 . SELECTION-SCREEN END OF LINE . SELECTION-SCREEN BEGIN OF LINE . SELECTION-SCREEN COMMENT 01 ( 54 ) day04 . SELECTION-SCREEN COMMENT 59 ( 54 ) day17 . SELECTION-SCREEN END OF LINE .

...

SELECTION-SCREEN END OF BLOCK b1 .
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE t2 . SELECTION-SCREEN BEGIN OF LINE .

PARAMETERS p_day01 AS CHECKBOX DEFAULT 'X' . "01、基本展示

SELECTION-SCREEN COMMENT 03 ( 54 ) c01 FOR FIELD p_day01 .

PARAMETERS p_day14 AS CHECKBOX DEFAULT 'X' . "14、功能:隐藏列、修改列标题

SELECTION-SCREEN COMMENT 59 ( 54 ) c14 FOR FIELD p_day14 . SELECTION-SCREEN END OF LINE .
SELECTION-SCREEN BEGIN OF LINE .

PARAMETERS p_day02 AS CHECKBOX DEFAULT 'X' . "02、外观设置

SELECTION-SCREEN COMMENT 03 ( 54 ) c02 FOR FIELD p_day02 .

PARAMETERS p_day15 AS CHECKBOX DEFAULT 'X' . "15、功能:调整列位置、图标列

SELECTION-SCREEN COMMENT 59 ( 54 ) c15 FOR FIELD p_day15 . SELECTION-SCREEN END OF LINE .
SELECTION-SCREEN BEGIN OF LINE .

PARAMETERS p_day03 AS CHECKBOX DEFAULT 'X' . "03、列设置

SELECTION-SCREEN COMMENT 03 ( 54 ) c03 FOR FIELD p_day03 .

PARAMETERS p_day16 AS CHECKBOX DEFAULT 'X' . "16、功能:固定列、

SELECTION-SCREEN COMMENT 59 ( 54 ) c16 FOR FIELD p_day16 . SELECTION-SCREEN END OF LINE .

...

SELECTION-SCREEN BEGIN OF LINE .

PARAMETERS p_day04 AS CHECKBOX DEFAULT 'X' . "04、按钮设置

SELECTION-SCREEN COMMENT 03 ( 54 ) c04 FOR FIELD p_day04 .

PARAMETERS p_day17 AS CHECKBOX DEFAULT 'X' . "17、功能:鼠标悬停文本

SELECTION-SCREEN COMMENT 59 ( 54 ) c17 FOR FIELD p_day17 . SELECTION-SCREEN END OF LINE .
SELECTION-SCREEN END OF BLOCK b2 .

INITIALIZATION .

sy \- title = 'ABAP SALV演示程序-公众号(ABAP猿)' .

t1 = '用户说' .

t2 = '你来做' .

day01 = '01、从表SPFLI获取数据,并进行基本展示。' .

day02 = '02、能否修改下抬头标题文本,并斑马纹展示?' .

day03 = '03、能否优化下列宽?' .

day04 = '04、怎么没有应用工具栏按钮,能加上吗?' .

...

day14 = '14、不显示集团列,起飞国家、到达国家列标题调整。' .

day15 = '15、新增序号列、图标列,要求:居中显示,并调整到第头2列进行显示。' .

day16 = '16、将新增的序号、图标列固定,方便查看。' .

day17 = '17、图标列标题悬停文本、不同图标展示不同悬停文本' .

c01 = '01、基本展示' .

c02 = '02、外观设置' .

c03 = '03、列设置' .

c04 = '04、按钮设置' .

...

c14 = '14、功能:隐藏列、修改列标题' .

c15 = '15、功能:调整列位置、图标列' .

c16 = '16、功能:固定列' .

c17 = '17、功能:鼠标悬停文本' .

START-OF-SELECTION .

*------------------------------------*

CHECK p_day01 EQ 'X' .

TYPES

BEGIN OF gty_spfli_incl ,

snum TYPE i ,

icon TYPE icon_d ,

END OF gty_spfli_incl .

DATA

BEGIN OF gs_spfli .

INCLUDE TYPE spfli . INCLUDE TYPE gty_spfli_incl .

DATA

END OF gs_spfli ,

gt_spfli LIKE TABLE OF gs_spfli .

• DATA gt_spfli TYPE TABLE OF spfli.

SELECT * FROM spfli INTO TABLE gt_spfli UP TO 30 ROWS .

DATA go_salv TYPE REF TO cl_salv_table .

cl_salv_table => factory (

IMPORTING

r_salv_table = go_salv

CHANGING

t_table = gt_spfli ).

...

*------------------------------------*

IF p_day02 EQ 'X' .

DATA lo_display TYPE REF TO cl_salv_display_settings .

lo_display = go_salv -> get_display_settings ( ).

lo_display -> set_list_header ( 'ABAP SALV演示程序-公众号(ABAP猿)' ).

lo_display -> set_striped_pattern ( 'X' ).

...

ENDIF .

*------------------------------------*

IF p_day03 EQ 'X' .

DATA lo_columns TYPE REF TO cl_salv_columns_table .

DATA lo_column TYPE REF TO cl_salv_column_table .

lo_columns = go_salv -> get_columns ( ).

lo_columns -> set_optimize ( 'X' ).

...

IF p_day14 = 'X' .

"列不可见、不可用

lo_column ?= lo_columns -> get_column ( columnname = 'MANDT' ).

lo_column -> set_visible ( 'X' ). "不可见

lo_column -> set_technical ( 'X' ). "技术列(布局也不可见)

"列标题修改

lo_column ?= lo_columns -> get_column ( columnname = 'COUNTRYFR' ).

lo_column -> set_short_text ( '起飞国家' ).

lo_column -> set_medium_text ( '起飞国家' ).

lo_column -> set_long_text ( '起飞国家' ).

lo_column ?= lo_columns -> get_column ( columnname = 'COUNTRYTO' ).

lo_column -> set_short_text ( '到达国家' ).

lo_column -> set_medium_text ( '到达国家' ).

lo_column -> set_long_text ( '到达国家' ).

ENDIF .
IF p_day15 = 'X' .

"调整列位置

lo_columns -> set_column_position ( columnname = 'SNUM' position = 1

).

lo_columns -> set_column_position ( columnname = 'ICON' position = 2

).

"取消关键列

lo_column ?= lo_columns -> get_column ( columnname = 'CARRID' ).

lo_column -> set_key ( '' ).

lo_column ?= lo_columns -> get_column ( columnname = 'CONNID' ).

lo_column -> set_key ( '' ).

lo_column ?= lo_columns -> get_column ( columnname = 'SNUM' ).

lo_column -> set_short_text ( '序号' ).

lo_column -> set_medium_text ( '序号' ).

lo_column -> set_long_text ( '序号' ).

lo_column -> set_alignment ( if_salv_c_alignment => centered ).
lo_column ?= lo_columns -> get_column ( columnname = 'ICON' ).

lo_column -> set_short_text ( '图标' ).

lo_column -> set_medium_text ( '图标' ).

lo_column -> set_long_text ( '图标' ).

lo_column -> set_icon ( 'X' ).

lo_column -> set_alignment ( if_salv_c_alignment => centered ).
LOOP AT gt_spfli INTO gs_spfli .

gs_spfli \- snum = sy \- tabix .

CASE sy \- tabix .

WHEN 1 .

gs_spfli \- icon = '@5B@' .

WHEN 2 .

gs_spfli \- icon = '@5C@' .

WHEN 3 .

gs_spfli \- icon = '@5D@' .

WHEN OTHERS .

ENDCASE . MODIFY gt_spfli FROM gs_spfli . ENDLOOP . ENDIF .
IF p_day16 = 'X' .

"固定列

lo_columns -> set_key_fixation ( 'X' ).

lo_column ?= lo_columns -> get_column ( columnname = 'SNUM' ).

lo_column -> set_key ( 'X' ).

lo_column ?= lo_columns -> get_column ( columnname =

...

ABAP猿

关于作者:ABAP猿

企业信息化与 SAP 技术顾问,长期专注 SAP ABAP、FI/CO、MM、SD 等模块的技术分享与实战经验总结。查看更多介绍

来源说明:本文内容由「ABAPSALV固定列鼠标悬停文本.md」整理生成,仅用于内部技术分享与学习交流。