ALV 行列 颜色
1)颜色含义
1:海蓝;2:浅清;3:黄色;4:浅蓝;5:青色;6:红色;7:橙色。
(1)首位为主颜色;
(2)次位为辅助颜色;
(3)末位为0时,表示首位数字表为表格的底色;
末位为1时,则表示以1为底色,首位数字则表为表格字体的颜色;
末位为其它颜色时,则表示底色为ALV的默认颜色;
以上三条是本人大概总结出来的规律,本人发现的现象基本如上,但也不一定全部正确。
其中C200与系统标准ALV底色比较相似;C410与系统标准关键字颜色比较相似。
2)列颜色:
在 slis_t_fieldcat_alv-emphasize 中,写入需要的颜色代码。
Eg:
DATA: fc TYPE slis_t_fieldcat_alv WITH HEADER LINE.
fc-tabname = 'ITAB'.
fc-fieldname = 'COL'. "列名
fc-emphasize = 'C100'."颜色
append fc.
设置ALV字段fieldcat属性:i_fieldcat-emphasize = &3. "颜色
把fieldcat属性写入属性内表allfields:alv_append_field 'WERKS' '工厂' 'C110'.
C110:为颜色代码;
data: i_fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE
i_fieldcat-emphasize = 'C100'. "颜色代码
3)行颜色:
(1)在内表itab定义一个字段style来存储颜色;loop内表itab,在需要显示颜色的行为其值赋为颜色'C110';
(2)在定义alv显示格式定义:
设置ALV显示layout属性:i_layout-info_fieldname = 'STYLE',STYLE为内表定义的存储颜色的列名。
a.在要输出的 itab 中,加入 color 列,类型为C(4),记录需要的颜色代码。
b.设置 layout。alv_layout-info_fieldname = 'COLOR'.
Eg: DATA: BEGIN OF itab OCCURS 0.
INCLUDE STRUCTURE itab.
DATA: color(4) TYPE c.
DATA: END OF itab.
DATA: alv_layout TYPE slis_layout_alv.
"内表赋值
itab-matnr = '123'.
itab-color = 'C200'.
APPEND itab.
alv_layout-info_fieldname = 'COLOR'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
is_layout = alv_layout
TABLES
it_outtab = itab.
4)单元格颜色
单元格颜色属性:LVC_S_SCOL(类方式) ,该属性为一结构,含三个字段:FNAME(30)、COLOR(颜色结构,含三个字段:col(10)、int(3)、inv(10))、NOKEYCOL(1)(覆盖码颜色)
单元格颜色属性:slis_t_specialcol_alv,该属性为一结构,含三个字段:FIELDNAME(30)、COLOR(颜色结构,含三个字段:col(10)、int(3)、inv(10))、NOKEYCOL(1)(覆盖码颜色)
eg:
定义内表itab含字段FLDNAME type LVC_S_SCOL;
定义内表itab含字段FLDNAME type slis_t_specialcol_alv;
ALV列属性:coltab_fieldname = 'FLDNAME'.
DATA: BEGIN OF itab_test3 OCCURS 0.
INCLUDE STRUCTURE itab_test.
DATA: FLDNAME TYPE slis_t_specialcol_alv.
DATA: END OF itab_test3.
定义单元格颜色结构内表cellcolor type slis_t_specialcol_alv with header line;
循环内表,当要设置单元格颜色所在的列字段colname要设置颜色时
refresh cellcolor.
cellcolor-FIELDNAME =‘COLNAME’. "列名
cellcolor-COLOR-col =‘2’.(颜色代码)
cellcolor-COLOR-int =‘1’.
cellcolor-COLOR-inv =‘0’.
APPEND cellcolor.
CONCATENATE '2' '10' INTO itab_test3-colname. "把颜色值赋给该列
" 更新内表对应存放字段
itab_test3-fldname[] = cellcolor[].
APPEND itab_test3.
" 显示单元格颜色
DATA: alv_layout TYPE slis_layout_alv.
alv_layout-coltab_fieldname = 'FLDNAME'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
is_layout = alv_layout
TABLES
it_outtab = itab_test3.
*&---------------------------------------------------------------------*
*& Report YLPY_ALV004
*&
*&---------------------------------------------------------------------*
*& ALV 行、列、单元格颜色设置
*&
*&---------------------------------------------------------------------*
REPORT ylpy_alv004.
TYPE-POOLS: slis.
*一共定义3个内表.
*itab1 :设置列颜色,
*itab2 :设置行颜色.
*itab3 :设置单元格颜色.
DATA: BEGIN OF itab_test OCCURS 0,
col1(4) TYPE c,
col2(4) TYPE c,
col3(4) TYPE c,
col4(4) TYPE c,
col5(4) TYPE c,
col6(4) TYPE c,
END OF itab_test .
* 显示行颜色
DATA: BEGIN OF itab_test2 OCCURS 0.
INCLUDE STRUCTURE itab_test.
DATA: color(4) TYPE c. "定义行颜色字段
DATA: END OF itab_test2.
* 显示单元格颜色
DATA: BEGIN OF itab_test3 OCCURS 0.
INCLUDE STRUCTURE itab_test.
DATA: color TYPE slis_t_specialcol_alv.
DATA: END OF itab_test3.
DATA: fc TYPE slis_t_fieldcat_alv WITH HEADER LINE,
fc2 TYPE slis_t_fieldcat_alv WITH HEADER LINE,
fc3 TYPE slis_t_fieldcat_alv WITH HEADER LINE.
START-OF-SELECTION.
PERFORM create_data. "构建内表数据
END-OF-SELECTION.
PERFORM fieldcat_build. "构建列表头
PERFORM show_alv.
*&---------------------------------------------------------------------*
*& Form create_data
*&---------------------------------------------------------------------*
* 构建内表数据
*----------------------------------------------------------------------*
FORM create_data.
DATA: l_color(4) TYPE c,
l_char TYPE c,
i TYPE i.
DATA: color_wa TYPE slis_t_specialcol_alv WITH HEADER LINE."单元格颜色属性内表
REFRESH itab_test.
REFRESH itab_test2.
REFRESH itab_test3.
REFRESH fc.
REFRESH fc2.
REFRESH fc3.
WHILE sy-index < 8.
* 内表 1
itab_test-col1 = ( sy-index - 1 ) * 6 + 1.
itab_test-col2 = ( sy-index - 1 ) * 6 + 2.
itab_test-col3 = ( sy-index - 1 ) * 6 + 3.
itab_test-col4 = ( sy-index - 1 ) * 6 + 4.
itab_test-col5 = ( sy-index - 1 ) * 6 + 5.
itab_test-col6 = ( sy-index - 1 ) * 6 + 6.
APPEND itab_test.
* 内表 2
MOVE-CORRESPONDING itab_test TO itab_test2.
l_char = sy-index.
i = sy-index MOD 2. "根据奇偶数构建行颜色值
IF i = 0.
CONCATENATE 'C' l_char '01' INTO l_color.
ELSE.
CONCATENATE 'C' l_char '10' INTO l_color.
ENDIF.
itab_test2-color = l_color.
APPEND itab_test2.
* 内表 3
MOVE-CORRESPONDING itab_test TO itab_test3. "转移数据到itab_test3内表
REFRESH color_wa.
" 第一列颜色
color_wa-color-col = l_char.
color_wa-color-int = '0'.
color_wa-color-inv = '0'.
color_wa-fieldname = 'COL1'.
APPEND color_wa.
CONCATENATE l_char '00' INTO itab_test3-col1.
" 第二列颜色
color_wa-color-int = '0'.
color_wa-color-inv = '1'.
color_wa-fieldname = 'COL2'.
APPEND color_wa.
CONCATENATE l_char '01' INTO itab_test3-col2.
" 第三列颜色
color_wa-color-int = '1'.
color_wa-color-inv = '0'.
color_wa-fieldname = 'COL3'.
APPEND color_wa.
CONCATENATE l_char '10' INTO itab_test3-col3.
itab_test3-color[] = color_wa[].
APPEND itab_test3.
ENDWHILE.
ENDFORM. "create_data
************************************************************************
FORM fieldcat_build.
DATA: BEGIN OF fc_struct,
tabname(10),
fieldname(5),
seltext_m(5),
emphasize(4),
END OF fc_struct.
DEFINE ac.
clear: fc,fc2,fc_struct.
fc_struct = &1.
fc-tabname = fc_struct-tabname. "内表名
fc-fieldname = fc_struct-fieldname. "字段名
fc-seltext_m = fc_struct-seltext_m. "字段描述
fc-emphasize = fc_struct-emphasize. "列颜色
append fc.
fc2-tabname = fc_struct-tabname. "内表名
fc2-fieldname = fc_struct-fieldname. "字段名
fc2-seltext_m = fc_struct-seltext_m. "字段描述
append fc2.
if fc3-fieldname < 'COL4'. "只显示前四列
fc3-tabname = fc_struct-tabname. "内表名
fc3-fieldname = fc_struct-fieldname. "字段名
fc3-seltext_m = fc_struct-seltext_m. "字段描述
append fc3.
endif.
END-OF-DEFINITION.
" 第一个内表显示列颜色效果
ac 'ITAB_TEST COL1 COL1 C100'.
ac 'ITAB_TEST COL2 COL2 C200'.
ac 'ITAB_TEST COL3 COL3 C300'.
ac 'ITAB_TEST COL4 COL4 C400'.
ac 'ITAB_TEST COL5 COL5 C500'.
ac 'ITAB_TEST COL6 COL6 C600'.
ENDFORM. "fieldcat_build
*&---------------------------------------------------------------------*
*& Form show_alv
*&---------------------------------------------------------------------*
* 显示内表 1
*----------------------------------------------------------------------*
FORM show_alv.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
it_fieldcat = fc[]
i_callback_user_command = 'PROCESS_USER_COMMAND_1' "响应双击事件
i_save = 'A'
TABLES
t_outtab = itab_test
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. "show_alv
*&---------------------------------------------------------------------*
*& Form PROCESS_USER_COMMAND_1
*&---------------------------------------------------------------------*
* 当用户双击时显示下层内容
*----------------------------------------------------------------------*
* -->UCOMM text
* -->RS_SELFIELD text
*----------------------------------------------------------------------*
FORM process_user_command_1 USING ucomm
rs_selfield TYPE slis_selfield.
IF rs_selfield-fieldname <> space AND rs_selfield-tabindex > 0. "这句很有用
PERFORM show_alv_2.
ENDIF.
ENDFORM. "PROCESS_USER_COMMAND_1
*&---------------------------------------------------------------------*
*& Form show_alv_2
*&---------------------------------------------------------------------*
* 显示内表 2 行颜色效果
*----------------------------------------------------------------------*
FORM show_alv_2.
DATA: alv_layout TYPE slis_layout_alv.
alv_layout-info_fieldname = 'COLOR'. "显示行颜色
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
it_fieldcat = fc2[]
i_callback_user_command = 'PROCESS_USER_COMMAND_2' "下层双击事件内容
is_layout = alv_layout
i_save = 'U'
TABLES
t_outtab = itab_test2
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. "show_alv_2
*&---------------------------------------------------------------------*
*& Form PROCESS_USER_COMMAND_2
*&---------------------------------------------------------------------*
* 第三层报表内容
*----------------------------------------------------------------------*
* -->UCOMM text
* -->RS_SELFIELD text
*----------------------------------------------------------------------*
FORM process_user_command_2 USING ucomm
rs_selfield TYPE slis_selfield.
IF rs_selfield-fieldname <> space AND rs_selfield-tabindex > 0.
PERFORM show_alv_3.
ENDIF.
ENDFORM. "PROCESS_USER_COMMAND_2
*&---------------------------------------------------------------------*
*& Form show_alv_3
*&---------------------------------------------------------------------*
* 显示内表 3 单元格颜色
*----------------------------------------------------------------------*
FORM show_alv_3.
DATA: alv_layout TYPE slis_layout_alv.
alv_layout-coltab_fieldname = 'COLOR'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
it_fieldcat = fc3[]
is_layout = alv_layout
i_save = 'U'
TABLES
t_outtab = itab_test3
EXCEPTIONS
program_error = 1
OTHERS = 2.
ENDFORM. "show_alv_3
ALV 行列 颜色的更多相关文章
- ALV的颜色分为行的颜色、列的颜色和CELL的颜色
ALV的颜色分为行的颜色.列的颜色和CELL的颜色.任务要求,将一定的Tabellenfeld 用黄色填充,也就是说CELL的颜色 DATA:ls_cellcolorTYPElvc_s_scol,co ...
- WDA基础十六:ALV的颜色
这里介绍三种类型的颜色:列的背景色,单元格的背景色,单元格文本的颜色. 1.给ALV结构添加颜色控制字段: 三个字段都是同一类型:WDY_UIE_LIBRARY_ENUM_TYPE COL_BACKG ...
- 再谈控制 cxGrid 的行列颜色
1. [转]CxGrid 改变某行或单元格的颜色 (2016-01-19 09:37:19) 转载▼ 标签: it delphi 分类: Delphi 一个表(T)的结构结构如下. ID Test 1 ...
- DataGridView 改变行列颜色
[一篮饭特稀原创,转载请注明出自http://www.cnblogs.com/wanghafan/p/3227351.html] 1 private void ChangBackColor() { ) ...
- ABAP ALV 颜色设置(行,列,单元格)
BCALV_EDIT_03 http://blog.sina.com.cn/s/blog_a87b19300102who3.html 关于ALV表格颜色,这种需求在项目中会经常用到. 列颜色 列的颜色 ...
- ALV行 列颜色设置
ALV的颜色设置分为3种:行.列.单元格. 1.列颜色的设置 在 slis_t_fieldcat_alv-emphasize 中,写入需要的颜色代码. Eg: DATA: fc TYP ...
- ALV报表——ALV颜色设置(三)
目录 一.行 二.列 三.单元格 四.附ALV的颜色代码 一.行:用Layout相关属性设置 代码: *Report ZRFI001_XFL_TEST REPORT ZRFI001_XFL_TEST ...
- ALV 颜色设置(行,列,单元格)
[转自:https://www.cnblogs.com/mingdashu/p/color_alv.html] BCALV_EDIT_03 http://blog.sina.com.cn/s/blog ...
- ABAP ALV DEMO示例源码
关于ALV表格颜色,感觉这种需求在项目中用到的时候不是很多,但是前一段时间面试的时候,面试官问了我关于ALV单元格颜色的问题. 以前了解过一点,回答的不是很好,后来百度了一下,大概了解了一些,今天工作 ...
随机推荐
- TCP/IP协议原理与应用笔记16:交换机和路由器区别
1.交换机和路由器区别 (1)交换机: 交换机是一种基于MAC(网卡的硬件地址)识别,能完成封装转发数据包功能的网络设备.交换机可以“学习”MAC地址,并把其存放在内部地址表中,通过在数据帧的 ...
- dependencies与devDependencies的区别
npm install在安装node模块时,有两种命令参数可以把它们的信息写入package.json文件: –save –save-dev 但它的文档里1,只提到一个小区别,–save会把依赖包名称 ...
- CVPR 2013 录用论文【待更新】
完整录用论文官方链接:http://www.pamitc.org/cvpr13/program.php 过段时间CvPaper上面应该会有正文链接 今年有关RGB-D摄像机应用和研究的论文渐多起来了. ...
- msql 按值排序
ORDER BY find_in_set(status,'705,710,706,1027,707,709,708'),create_time desc
- 关于C语言中运算符优先级的一次错误
好久没碰编程了,最近有点闲,又拾起来.做了个简单的网络测试程序,测试的时候发现有条语句老是获取不到结果.如下: if(portnumber=atoi(argv[1])>65535) portnu ...
- FxCop
下载地址:http://www.microsoft.com/en-us/download/details.aspx?id=8279 FxCop是一个代码分析工具,和StyleCop(代码规范)一起配合 ...
- How to: cgminer (Bitcoin, Litecoin etc.) + AMD Radeon driver install on CentOS
UPDATE 7/7/13: If you want to use Catalyst drivers version 12.8 you will find that X won’t start (er ...
- 面试相关的技术问题---java基础
最近在准备秋季校招,将一些常见的技术问题做一个总结!希望对大家有所帮助! 1.面向对象和面向过程的区别是什么? 面向对象是把构成问题的事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描 ...
- SqlServer查找表中多余的重复记录
1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select * from people where peopleId in (select peopleId from ...
- 20160127 linux 学习笔记
Linux学习笔记第一天 Linux基本介绍 Linux的起源和发展: 简单说linux是一种操作系统,可以安装在包括服务器.个人电脑,乃至PDA.手机.打印机等各类设备中. 起源: Linux起源于 ...