0
点赞
收藏
分享

微信扫一扫

ABAP ALV之有关于颜色的使用详解

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第1天,​​点击查看活动详情​​

Hello, 这里是百里,一个中老年程序员.在ABAP开发中,会经常遇到用户说,ALV报表中某个字段展示颜色.比如按照行展示.按照列展示,对比某个数据展示颜色等等.今天结合工作经验这里做下技术总结.

分类

ALV常用颜色使用场景分为,行颜色,列颜色,单元格颜色. 这三个分类并没有说哪个经常哪个不经常用,具体需要按照实际情况使用.

行颜色

行颜色的使用场景, 一般作为,ALV标题,次标题,求和等等,做着重表示.

在ALV数据定义的内表中,增加一个color字段,字段类型为char4,用来记录颜色相关的内容. 颜色代码:

ABAP ALV之有关于颜色的使用详解_掘金·日新计划

#定义结构
TYPES :BEGIN OF ty_Data ,
......
color TYPE CHAR4 ,
END OF ty_data .
#定义工作区
data : gs_Data TYPE ty_Data .
#定义内表
data : gt_Data TYPE TABLE OF ty_Data .
# 定义alv变量
"alv 变量
DATA: wa_layout TYPE lvc_s_layo.
DATA:wa_fieldcat TYPE lvc_s_fcat,
g_layout TYPE lvc_s_layo,
gt_fieldcat TYPE lvc_t_fcat.
DATA gs_grid TYPE lvc_s_glay. "新
DATA:gs_glay TYPE lvc_s_glay.
DATA : gv_error TYPE c.

#设置格式样式

FORM SET_ALV_LAYOUT .
CLEAR WA_LAYOUT .
........
WA_LAYOUT-INFO_FNAME = 'CLR'
........

ENDFORM .


#取数逻辑

#处理数据逻辑

loop at gt_data into gs_Data

if 条件
gs_data-clr= 'C710'

endif.

endloop .

FORM call_alv_func .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
i_callback_program = sy-repid "回调程序
i_callback_pf_status_set = 'SET_PF_STATUS'
i_callback_user_command = 'USER_COMMAND'
i_grid_settings = gs_glay
is_layout_lvc = wa_layout
" i_grid_settings = gs_grid "新
it_fieldcat_lvc = gt_fieldcat "需要显示的内表的列
i_save = 'A' "这个需要问下
it_events = gt_event
TABLES
t_outtab = gt_Data "需要显示的数据
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
ENDIF.
ENDFORM.

列颜色

列颜色的使用场景,一般内容为相同字段着重表示,比如单号字段,料号字段,等内容,区别相同字段.或者消息相关字段等需要着重字段.

使用方式

列颜色的使用方式,相对而言是比较简单,只需要将,字段中的wa_fieldcat-emphasize 设置成4位颜色内容即可,设置颜色内容.

........
#前段代码

#ALV展示

if 条件 .
wa_fieldcat-emphasize = 'C610'
endif .


........
#后端代码

单元格颜色

单元格颜色的使用场景,一般适用于不同字段比较,数据更新判断等应用场景是工作场景中最常用的颜色赋值方式.

使用方式

"数据结构准备

DATA: wa_layout TYPE lvc_s_layo.
DATA:wa_fieldcat TYPE lvc_s_fcat.



TYPES: BEGIN OF TY_DATA ,

cellcolor TYPE lvc_t_scol, "颜色
END OF TY_dATA .

DATA : GS_DATA TYPE TY_dATA .
DATA : GT_DATA TYPE TABLE OF TY_dATA .

" 单元格格式设定

DATA : gs_cellcolor TYPE lvc_s_scol,
gt_cellcolor TYPE TABLE OF lvc_s_scol.


" 设置样式
" set_alv_layout

FORM set_alv_layout .
CLEAR: wa_layout.
wa_layout-zebra = 'X'. "斑马线
wa_layout-cwidth_opt = 'X'. "自动列宽



" 通过这句增加颜色设定.
wa_layout-ctab_fname = 'cellcolor'.


ENDFORM.




" 给gs_Data 设定 内容
loop ...................
refresh gt_cellcolor .
gs_cellcolor-fname = 'KWMENG1'. "字段
gs_cellcolor-color-col = '6'.
gs_cellcolor-color-int = 1.
gs_cellcolor-color-inv = 1.

APPEND gs_cellcolor TO gt_cellcolor.
endloop .

''''

gs_data-cellcolor = gt_cellcolor.


MODIFY gt_data FROM gs_data.

clear gs_data-cellcolor .

注意单元格的颜色使用内容为数字内容, 1:海蓝,2:浅清,3:黄色,4:浅蓝,5:青色,6:红色,7:橙色

技术总结

alv的颜色使用内容是在abap开发中必须会的一项技术内容,在工作中需要按照不同的应用场景熟练的使用颜色相关开发方式,此篇文章提供了alv常用的颜色使用方式,行,列,单元格均可以拿来即用.

贵有恒何必三更起五更睡,最无益只怕一日曝十日寒。 这里是百里,一个年近30的中年程序员.希望能够帮到您.

举报

相关推荐

0 条评论