# ABAP OOALV-颜色(列、行、单元格)
原创 猿ABAP [ ABAP猿 ](javascript:void\(0\);)
__ _ _ _ _
There’s so much creativity in brokeness.
Brokeness will have you making it work.
跳脱常规激发更多的创造力,同时可以造就不凡的成功。
• * *
1
程序效果
2
源码分享
*------------------------------------*
BEGIN OF gty_spfli_incl ,
snum TYPE i ,
icon TYPE icon_d ,
scol TYPE lvc_t_scol , "<\------颜色
END OF gty_spfli_incl .BEGIN OF gs_spfli .
INCLUDE TYPE spfli .
INCLUDE TYPE gty_spfli_incl .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 TO30 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 .
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_displayEXPORTING
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解释
仅供参考
ABAP OOALV 高级功能演示
介绍:
这段ABAP代码在之前的OOALV演示程序基础上,添加了三个新功能:列颜色、行颜色以及单元格颜色。下面将详细解释这三项新功能。
1\. 列颜色的添加:
列颜色是一项用于突出显示特定列的功能。在这个例子中,我们为 ` DEPTIME ` 和 ` ARRTIME ` 列添加了颜色 ` C510 `
,以突出显示这两列。这样做有助于用户更容易区分并关注重要的信息。
2\. 行颜色的添加:
行颜色是一项用于突出整行的功能。在这个例子中,我们为第一行添加了颜色,并为第二行添加了覆盖Key颜色的效果。通过使用行颜色,你可以使报表中的某些行在视觉上更为突出。
3\. 单元格颜色的添加:
单元格颜色是一项用于突出显示特定单元格的功能。在这个例子中,我们为 ` COUNTRYFR、COUNTRYTO、FLTIME `
列的单元格添加了颜色。通过这样做,你可以更突出地显示关键数据,使其在整个报表中更加显眼。
通过这三个功能的添加,你可以使你的OOALV报表更具有可读性和可视化效果。列颜色、行颜色和单元格颜色都是提高用户体验的强大工具,帮助用户更轻松地理解报表内容。
源码篇幅较长,后台回 复 " **20231115** " 获取
以上是今日分享,希望对你有所帮助~~~
欢迎点赞、留言、分享
往期推荐
[ 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)
.textContent = new Date().getFullYear();