01 功能说明
本系列将通过模拟用户与开发者之间的对话场景,来逐步演示SALV的使用。
在本篇中,我们将延续前文内容,解决用户最新提出的需求。今天我们将探讨SALV模型中如何添加列颜色、 行颜色以及单元格颜色。相信通过实际操作,你能迅速理解和掌握这些知识点。
让我们一起动手尝试一下,看看如何实现这些功能吧!
02 功能效果
第18天 用户说:列、行、单元格颜色
启程、到达时间整列设置颜色,图标行按需分别设置颜色。
"列颜色
DATA ls_color TYPE lvc_s_colo.
ls_color-col = 5.
ls_color-int = 1.
ls_color-inv = 0.
lo_column ?= lo_columns->get_column( columnname = 'DEPTIME' ).
lo_column->set_color( ls_color ).
lo_column ?= lo_columns->get_column( columnname = 'ARRTIME' ).
lo_column->set_color( ls_color ).
"行、单元格颜色
lo_columns->set_color_column( 'SCOL' ).
DATA ls_scol TYPE lvc_s_scol.
DATA lt_scol TYPE lvc_t_scol.
LOOP AT gt_spfli INTO gs_spfli.
CASE sy-tabix.
WHEN 1.
"行颜色
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.
* "行颜色(覆盖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.
"单元格颜色
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.
03 源码分享
TYPES:
BEGIN OF gty_spfli_incl,
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.
START-OF-SELECTION.
SELECT * FROM spfli INTO CORRESPONDING FIELDS OF 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 ).
*------------------------------------*
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' ).
*------------------------------------*
DATA lo_functions TYPE REF TO cl_salv_functions.
lo_functions = go_salv->get_functions( ).
lo_functions->set_all( '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' ).
"列颜色
DATA ls_color TYPE lvc_s_colo.
ls_color-col = 5.
ls_color-int = 1.
ls_color-inv = 0.
lo_column ?= lo_columns->get_column( columnname = 'DEPTIME' ).
lo_column->set_color( ls_color ).
lo_column ?= lo_columns->get_column( columnname = 'ARRTIME' ).
lo_column->set_color( ls_color ).
"行、单元格颜色
lo_columns->set_color_column( 'SCOL' ).
DATA ls_scol TYPE lvc_s_scol.
DATA lt_scol TYPE lvc_t_scol.
LOOP AT gt_spfli INTO gs_spfli.
CASE sy-tabix.
WHEN 1.
"行颜色
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.
"行颜色(覆盖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.
"单元格颜色
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.
*------------------------------------*
go_salv->display( ).
小贴士:
- 可使用BC_DATA_GEN生成数据,以便查看演示效果;
- 以上纯属个人总结,如有纰漏请联系我;
以上是今日分享,希望对你有所帮助~~
04 关注我
更多干货请扫码关注微信公众号:ABAP猿