ABAPOOALV 颜色列行单元格

作者:ABAP猿 约 6 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:ABAP, 开发
目录
ABAPOOALV 颜色列行单元格 - 封面图
ABAPOOALV 颜色列行单元格 - 封面图

# ABAP OOALV-颜色(列、行、单元格)

原创 猿ABAP [ ABAP猿 ](javascript:void\(0\);)

__ _ _ _ _

ABAPOOALV 颜色列行单元格 - 封面图
ABAPOOALV 颜色列行单元格 - 封面图

There’s so much creativity in brokeness.

Brokeness will have you making it work.

跳脱常规激发更多的创造力,同时可以造就不凡的成功。

• * *

ABAPOOALV 颜色列行单元格 - 封面图
ABAPOOALV 颜色列行单元格 - 封面图

1

程序效果

ABAPOOALV 颜色列行单元格 - 封面图
ABAPOOALV 颜色列行单元格 - 封面图

2

源码分享

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

TYPES

BEGIN OF gty_spfli_incl ,

snum TYPE i ,

icon TYPE icon_d ,

scol TYPE lvc_t_scol , "<\------颜色

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 go_alv TYPE REF TO cl_gui_alv_grid .

DATA gs_layout TYPE lvc_s_layo .

DATA gt_fieldcat TYPE lvc_t_fcat .

DATA gs_fieldcat TYPE lvc_s_fcat .

DATA gs_sort TYPE lvc_s_sort .

DATA gt_sort TYPE lvc_t_sort .

DATA gt_filter TYPE lvc_t_filt .

DATA gs_filter TYPE lvc_s_filt .

DATA gs_variant TYPE disvariant .

DATA gt_qinfo TYPE alv_t_qinf .

DATA gs_qinfo TYPE alv_s_qinf .

INITIALIZATION .

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

gs_variant \- report = sy \- repid .

START-OF-SELECTION .

SELECT * FROM spfli INTO CORRESPONDING FIELDS OF TABLE gt_spfli UP TO

30 ROWS .

DATA ls_scol TYPE lvc_s_scol .

DATA lt_scol TYPE lvc_t_scol .

LOOP AT gt_spfli INTO gs_spfli .

gs_spfli \- snum = sy \- tabix .

CASE sy \- tabix .

WHEN 1 .

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

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

"行颜色

CLEAR ls_scol .

ls_scol \- color \- col = 5 . ls_scol \- color \- int = 1 . ls_scol \- color \- inv = 0 .
ls_scol \- fname = '' . ls_scol \- nokeycol = '' . APPEND ls_scol TO gs_spfli \- scol .

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

WHEN 2 .

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

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

"行颜色(覆盖Key颜色)

CLEAR ls_scol .

ls_scol \- color \- col = 6 . ls_scol \- color \- int = 1 . ls_scol \- color \- inv = 0 .
ls_scol \- fname = '' . ls_scol \- nokeycol = 'X' . "避免被Key颜色覆盖 APPEND ls_scol TO gs_spfli \- scol .

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

WHEN 3 .

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

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

"单元格颜色

CLEAR ls_scol .

ls_scol \- color \- col = 3 . ls_scol \- color \- int = 1 . ls_scol \- color \- inv = 0 .
ls_scol \- fname = 'COUNTRYFR' . ls_scol \- nokeycol = 'X' . APPEND ls_scol TO gs_spfli \- scol .
ls_scol \- fname = 'COUNTRYTO' . APPEND ls_scol TO gs_spfli \- scol .
ls_scol \- fname = 'FLTIME' . APPEND ls_scol TO gs_spfli \- scol .

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

WHEN OTHERS .

ENDCASE . MODIFY gt_spfli FROM gs_spfli . ENDLOOP .

CREATE OBJECT go_alv

EXPORTING

i_parent = cl_gui_container => default_screen .

DATA lo_evt_handler TYPE REF TO lcl_evt_handler .

CREATE OBJECT lo_evt_handler .

SET HANDLER

lo_evt_handler -> toolbar FOR go_alv ,

lo_evt_handler -> hotspot_click FOR go_alv ,

lo_evt_handler -> double_click FOR go_alv ,

lo_evt_handler -> before_user_command FOR go_alv ,

lo_evt_handler -> user_command FOR go_alv ,

lo_evt_handler -> after_user_command FOR go_alv .

CLEAR gs_layout .

gs_layout \- zebra = 'X' .

gs_layout \- cwidth_opt = 'X' .

gs_layout \- sel_mode = 'D' .

gs_layout \- keyhot = 'X' .

gs_layout \- no_keyfix = 'X' .

gs_layout \- ctab_fname = 'SCOL' . "<\------C olor Tab le

"添加排序

CLEAR gs_sort .

gs_sort \- spos = '1' .

gs_sort \- fieldname = 'CARRID' .

gs_sort \- subtot = 'X' .

gs_sort \- up = 'X' .

gs_sort \- down = '' .

APPEND gs_sort TO gt_sort .

"添加过滤

CLEAR gs_filter .

gs_filter \- fieldname = 'CARRID' .

gs_filter \- sign = 'E' .

gs_filter \- option = 'EQ' .

gs_filter \- low = 'JL' .

APPEND gs_filter TO gt_filter .

"添加鼠标悬停文本

gs_qinfo \- type = cl_salv_tooltip => c_type_icon .

gs_qinfo \- value = '@5B@' .

gs_qinfo \- text = '图标值:绿灯!' .

APPEND gs_qinfo TO gt_qinfo .
gs_qinfo \- type = cl_salv_tooltip => c_type_icon .

gs_qinfo \- value = '@5C@' .

gs_qinfo \- text = '图标值:红灯!' .

APPEND gs_qinfo TO gt_qinfo .
gs_qinfo \- type = cl_salv_tooltip => c_type_icon .

gs_qinfo \- value = '@5D@' .

gs_qinfo \- text = '图标值:黄灯!' .

APPEND gs_qinfo TO gt_qinfo .

"字段目录

CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'

EXPORTING

i_structure_name = 'SPFLI'

CHANGING

ct_fieldcat = gt_fieldcat .

"添加输出列

CLEAR gs_fieldcat .

gs_fieldcat \- fieldname = 'SNUM' .

gs_fieldcat \- reptext = '序号' .

APPEND gs_fieldcat TO gt_fieldcat .

CLEAR gs_fieldcat .

gs_fieldcat \- fieldname = 'ICON' .

gs_fieldcat \- reptext = '图标' .

APPEND gs_fieldcat TO gt_fieldcat .

FIELD-SYMBOLS <fcat> LIKE gs_fieldcat .

LOOP AT gt_fieldcat ASSIGNING <fcat> .

CASE <fcat> \- fieldname .

WHEN 'DISTANCE' .

<fcat> \- do_sum = 'X' .

WHEN 'PERIOD' .

<fcat> \- no_out = 'X' . "不可见

<fcat> \- tech = 'X' . "不可用(技术列)

WHEN 'COUNTRYFR' .

<fcat> \- reptext = '起飞国家' .

<fcat> \- scrtext_s = '起飞国家' .

<fcat> \- scrtext_m = '起飞国家' .

<fcat> \- scrtext_l = '起飞国家' .

WHEN 'COUNTRYTO' .

<fcat> \- reptext = '到达国家' .

<fcat> \- scrtext_s = '到达国家' .

<fcat> \- scrtext_m = '到达国家' .

<fcat> \- scrtext_l = '到达国家' .

WHEN 'SNUM' .

<fcat> \- col_pos = 1 .

<fcat> \- just = 'C' .

<fcat> \- fix_column = 'X' .

WHEN 'ICON' .

<fcat> \- col_pos = 1 .

<fcat> \- icon = 'X' .

<fcat> \- just = 'C' .

<fcat> \- fix_column = 'X' .

<fcat> \- tooltip = '列标题:鼠标悬停有文本!' .

WHEN 'DEPTIME' OR 'ARRTIME' .

<fcat> \- emphasize = 'C510' . "<\------列颜色

WHEN OTHERS .

ENDCASE . ENDLOOP .
CALL METHOD go_alv -> set_table_for_first_display

EXPORTING

is_variant = gs_variant

i_save = 'A'

is_layout = gs_layout

it_except_qinfo = gt_qinfo

CHANGING

it_outtab = gt_spfli

it_fieldcatalog = gt_fieldcat

it_sort = gt_sort

it_filter = gt_filter .

cl_abap_list_layout => suppress_toolbar ( ).

WRITE space .

3

AI解释

ABAPOOALV 颜色列行单元格 - 封面图
ABAPOOALV 颜色列行单元格 - 封面图

仅供参考

ABAPOOALV 颜色列行单元格 - 封面图
ABAPOOALV 颜色列行单元格 - 封面图

ABAP OOALV 高级功能演示

介绍:

这段ABAP代码在之前的OOALV演示程序基础上,添加了三个新功能:列颜色、行颜色以及单元格颜色。下面将详细解释这三项新功能。

1\. 列颜色的添加:

列颜色是一项用于突出显示特定列的功能。在这个例子中,我们为 ` DEPTIME ` 和 ` ARRTIME ` 列添加了颜色 ` C510 `

,以突出显示这两列。这样做有助于用户更容易区分并关注重要的信息。

2\. 行颜色的添加:

行颜色是一项用于突出整行的功能。在这个例子中,我们为第一行添加了颜色,并为第二行添加了覆盖Key颜色的效果。通过使用行颜色,你可以使报表中的某些行在视觉上更为突出。

3\. 单元格颜色的添加:

单元格颜色是一项用于突出显示特定单元格的功能。在这个例子中,我们为 ` COUNTRYFR、COUNTRYTO、FLTIME `

列的单元格添加了颜色。通过这样做,你可以更突出地显示关键数据,使其在整个报表中更加显眼。

通过这三个功能的添加,你可以使你的OOALV报表更具有可读性和可视化效果。列颜色、行颜色和单元格颜色都是提高用户体验的强大工具,帮助用户更轻松地理解报表内容。

ABAPOOALV 颜色列行单元格 - 封面图
ABAPOOALV 颜色列行单元格 - 封面图
ABAPOOALV 颜色列行单元格 - 封面图
ABAPOOALV 颜色列行单元格 - 封面图

源码篇幅较长,后台回 复 " **20231115** " 获取

ABAPOOALV 颜色列行单元格 - 封面图
ABAPOOALV 颜色列行单元格 - 封面图

以上是今日分享,希望对你有所帮助~~~

欢迎点赞、留言、分享

ABAPOOALV 颜色列行单元格 - 封面图
ABAPOOALV 颜色列行单元格 - 封面图
ABAPOOALV 颜色列行单元格 - 封面图
ABAPOOALV 颜色列行单元格 - 封面图
ABAPOOALV 颜色列行单元格 - 封面图
ABAPOOALV 颜色列行单元格 - 封面图
ABAPOOALV 颜色列行单元格 - 封面图
ABAPOOALV 颜色列行单元格 - 封面图

往期推荐

[ ABAP SALV-颜色(列、行、单元格)

](https://mp.weixin.qq.com/s?__biz=Mzg3OTE2Njg0OQ==&mid=2247493882&idx=1&sn=e51c27345c23f3aabe70799f5cc8d935&chksm=cf0a3c14f87db502c8f9206999dbc5153b9bbff5a7c2ea804385d58c5993018703061f458331&scene=21#wechat_redirect)

[ ABAP SALV-演示程序 源码分享

](https://mp.weixin.qq.com/s?__biz=Mzg3OTE2Njg0OQ==&mid=2247494081&idx=1&sn=671c4de5734c7131744f47fd6abeab65&chksm=cf0a3d2ff87db43943c9a773f2572b79df043fae880909bed6178a5c2e5a308cf16f39f75aba&scene=21#wechat_redirect)

ABAPOOALV 颜色列行单元格 - 封面图.textContent = new Date().getFullYear();