ALV 颜色设置(行,列,单元格)
【转自:https://www.cnblogs.com/mingdashu/p/color_alv.html】
BCALV_EDIT_03
http://blog.sina.com.cn/s/blog_a87b19300102who3.html
关于ALV表格颜色,这种需求在项目中会经常用到。
- 列颜色
列的颜色很简单,在构成ALV字段的FIELDCAT内表中有一个字段是EMPHASIZE,将一个char型4位的颜色代码分配到FIELDCAT内表这个字段即可。
1 LW_FCAT-EMPHASIZE = 'C710'. "设置字段的颜色
2
3 MODIFY IT_FIELDCAT FROM LW_FCAT
4 TRANSPORTING EMPHASIZE
5 WHERE FIELDNAME = 'ESLRY'.
- 行颜色
1. 在构成ALV数据的内表中,添加一个char型4位的字段(CLR),用来记录颜色代码

1 TABLES ZEMP_TEST.
2
3 TYPES: BEGIN OF TY_ZEMP.
4 INCLUDE STRUCTURE ZEMP_TEST.
5 TYPES: CLR TYPE CHAR4,"可以控制行颜色
6 END OF TY_ZEMP.
7
8 DATA: IT_ZEMP TYPE STANDARD TABLE OF TY_ZEMP,
9 IW_ZEMP TYPE TY_ZEMP.

2. 循环内表,设置颜色代码

1 LOOP AT IT_ZEMP INTO IW_ZEMP.
2 "员工编号为‘3的行,颜色为红色
3 IF IW_ZEMP-EMPID = '3'.
4 IW_ZEMP-CLR = 'C610'.
5 MODIFY IT_ZEMP FROM IW_ZEMP.
6 CLEAR IW_ZEMP.
7 ENDIF.
8 ENDLOOP.

3. LAYOUT结构中INFO_FIELDNAME的值指定为 CLR
IW_LAYOUT-INFO_FIELDNAME = 'CLR'. "行颜色代码的字段
- 单元格颜色
单元格颜色的设置与行颜色设计基本一致
1. 在构成ALV数据的内表中,添加一个内表 CellColor,用来记录颜色代码,需要设置颜色的字段名
1 TYPES: BEGIN OF TY_ZEMP.
2 INCLUDE STRUCTURE ZEMP_TEST.
3 TYPES: CLR TYPE CHAR4,
4 CELLCOLOR TYPE LVC_T_SCOL, "单元格颜色
5 END OF TY_ZEMP.
CellColor的结构:FNAME ALV 控制: 内部表字段的字段名称
COLOR ALV 控制: 颜色代码 COLOR是一个结构:COL ALV 控制: 颜色
INT ALV 控制: 强化 1/0
INV ALV 控制: 相反 1/0 设置颜色是前景,或者是背景
NOKEYCOL ALV 控制: 覆盖码颜色
2. 循环内表,设置颜色代码

1 LOOP AT IT_ZEMP INTO IW_ZEMP.
2
3 "员工编号为‘3’的行,颜色为红色
4 IF IW_ZEMP-EMPID = '3'.
5 IW_ZEMP-CLR = 'C610'.
6
7 MODIFY IT_ZEMP FROM IW_ZEMP.
8 CLEAR IW_ZEMP.
9
10 ENDIF.
11
12 IF IW_ZEMP-EMPID = '2'.
13 IW_CELLCOLOR-FNAME = 'ENAME'.
14 "员工编号为‘2’的行的‘ENAME’字段颜色为 黄色
15 IW_CELLCOLOR-COLOR-COL = 3.
16 IW_CELLCOLOR-COLOR-INT = 1.
17 IW_CELLCOLOR-COLOR-INV = 0.
18
19 APPEND IW_CELLCOLOR TO IW_ZEMP-CELLCOLOR.
20 MODIFY IT_ZEMP FROM IW_ZEMP.
21 CLEAR IW_ZEMP.
22
23 ENDIF.
24 ENDLOOP.

3. LAYOUT结构中COLTAB_FIELDNAME的值指定为CELLCOLOR
IW_LAYOUT-COLTAB_FIELDNAME = 'CELLCOLOR'. "单元格颜色内表字段
最后在调用ALV函数时,设置layout,fieldcat参数
IS_LAYOUT = IW_LAYOUT
IT_FIELDCAT = IT_FIELDCAT
- ALV工具栏
可以自定义工具栏,或者添加标准ALV工具栏,然后去除一些不需要的功能,这样可以保留标准工具栏的功能

1 DATA:BEGIN OF TAB OCCURS 0,
2 FCODE LIKE RSMPE-FUNC,
3 END OF TAB.
4
5 TAB-FCODE = '&OL0'.APPEND TAB.
6 TAB-FCODE = '&OAD'.APPEND TAB.
7 TAB-FCODE = '&AVE'.APPEND TAB.
8
9 SET PF-STATUS 'STANDARD_FULLSCREEN' OF PROGRAM 'SAPLKKBL'
10 EXCLUDING TAB IMMEDIATELY.

- 求和
LW_FCAT-DO_SUM = 'X'. "立即求和,只有I,F,P类型的列可以求和
----------------------------------------------------------
运行效果如下:

在SE38环境下的程序名输入栏输入’DEMO*’后按F4,你可以查到SAP所有的DEMO示例程序,会学到很多ABAP功能的实现方法,
输入’BCALV*’后按F4,你可以查到很多ALV示例程序。
附:ALV的颜色代码:http://blog.csdn.net/wren2004/article/details/3941551

*----------------------------------------------------------------------------------------------------------------------------------、


1 INCLUDE <icon>.
2
3 INCLUDE <symbol>.
4
5
6
7 TYPE-POOLS slis.
8
9
10
11 TABLES spfli.
12
13
14
15 TYPES: BEGIN OF ty_layout,
16
17 exception(1),
18
19 checkbox,
20
21 icon TYPE icon_d,
22
23 symbol TYPE icon_d,
24
25 color(4),
26
27 cell_color TYPE slis_t_specialcol_alv,
28
29 hyperlink TYPE string,
30
31 link_handle TYPE int4,
32
33 END OF ty_layout.
34
35 TYPES BEGIN OF ty_spfli.
36
37 INCLUDE TYPE ty_layout.
38
39 INCLUDE TYPE spfli.
40
41 TYPES END OF ty_spfli.
42
43 TYPES ty_tab_spfli TYPE ty_spfli OCCURS 0.
44
45
46
47 PERFORM f_main.
48
49
50
51 *&---------------------------------------------------------------------*
52
53 *& Form f_main
54
55 *&---------------------------------------------------------------------*
56
57 * ALV display
58
59 *----------------------------------------------------------------------*
60
61 FORM f_main.
62
63 DATA: lt_spfli TYPE ty_tab_spfli,
64
65 lt_fieldcat TYPE slis_t_fieldcat_alv,
66
67 ls_layout TYPE slis_layout_alv,
68
69 lt_hyperlink TYPE lvc_t_hype,
70
71 lt_add_fieldcat TYPE slis_t_add_fieldcat.
72
73
74
75 PERFORM get_data TABLES lt_spfli.
76
77
78
79 PERFORM set_catalog CHANGING lt_fieldcat.
80
81
82
83 PERFORM set_layout USING ls_layout.
84
85
86
87 PERFORM hyperlink_build TABLES lt_hyperlink.
88
89
90
91 PERFORM add_fieldcat_build TABLES lt_add_fieldcat.
92
93
94
95 CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
96
97 EXPORTING
98
99 i_callback_program = sy-repid
100
101 i_grid_title = 'Xin''s ALV'
102
103 it_fieldcat = lt_fieldcat
104
105 it_hyperlink = lt_hyperlink
106
107 is_layout = ls_layout
108
109 it_add_fieldcat = lt_add_fieldcat
110
111 TABLES
112
113 t_outtab = lt_spfli.
114
115 ENDFORM. "f_main
116
117
118
119 *&---------------------------------------------------------------------*
120
121 *& Form set_layout
122
123 *&---------------------------------------------------------------------*
124
125 * text
126
127 *----------------------------------------------------------------------*
128
129 * -->P_LAYOUT text
130
131 *----------------------------------------------------------------------*
132
133 FORM set_layout USING p_layout TYPE slis_layout_alv.
134
135 p_layout-zebra = 'X'.
136
137 p_layout-colwidth_optimize = 'X'.
138
139 p_layout-window_titlebar = 'LinHuanXin''s ALV Demo'.
140
141 p_layout-no_hline = 'X'.
142
143 p_layout-no_vline = 'X'.
144
145 p_layout-info_fieldname = 'COLOR'.
146
147 p_layout-coltab_fieldname = 'CELL_COLOR'.
148
149 p_layout-lights_fieldname = 'EXCEPTION'.
150
151 ENDFORM. "set_layout
152
153
154
155 *&---------------------------------------------------------------------*
156
157 *& Form get_data
158
159 *&---------------------------------------------------------------------*
160
161 * Get the data for output
162
163 *----------------------------------------------------------------------*
164
165 * -->PT_SPFLI data internal table
166
167 *----------------------------------------------------------------------*
168
169 FORM get_data TABLES pt_spfli TYPE ty_tab_spfli.
170
171
172
173 DATA: lt_cell TYPE slis_t_specialcol_alv,
174
175 ls_cell LIKE LINE OF lt_cell,
176
177 lwa_spfli LIKE LINE OF pt_spfli.
178
179
180
181 SELECT * FROM spfli INTO CORRESPONDING FIELDS OF TABLE pt_spfli.
182
183
184
185 LOOP AT pt_spfli INTO lwa_spfli.
186
187
188
189 IF lwa_spfli-distid = 'KM'.
190
191 lwa_spfli-color = 'C610'.
192
193 ENDIF.
194
195 IF lwa_spfli-distance < 1000.
196
197 CLEAR ls_cell.
198
199 REFRESH lt_cell.
200
201 ls_cell-fieldname = 'DISTANCE'.
202
203 ls_cell-color-col = '4'.
204
205 ls_cell-color-int = '1'.
206
207 ls_cell-color-inv = '0'.
208
209 ls_cell-nokeycol = 'X'.
210
211 APPEND ls_cell TO lt_cell.
212
213 lwa_spfli-cell_color = lt_cell.
214
215 lwa_spfli-checkbox = 'X'.
216
217 lwa_spfli-exception = '1'.
218
219 ELSE.
220
221 lwa_spfli-exception = '2'.
222
223 ENDIF.
224
225
226
227 lwa_spfli-link_handle = sy-tabix.
228
229 lwa_spfli-hyperlink = 'www.163.com'.
230
231 lwa_spfli-icon = icon_detail.
232
233 lwa_spfli-symbol = sym_folder.
234
235 MODIFY pt_spfli FROM lwa_spfli.
236
237 ENDLOOP.
238
239 ENDFORM. "get_data
240
241
242
243 *&---------------------------------------------------------------------*
244
245 *& Form add_fieldcat_build
246
247 *&---------------------------------------------------------------------*
248
249 * text
250
251 *----------------------------------------------------------------------*
252
253 * -->PT_FIELDCAT text
254
255 *----------------------------------------------------------------------*
256
257 FORM add_fieldcat_build TABLES pt_fieldcat TYPE slis_t_add_fieldcat.
258
259 DATA lwa_fieldcat LIKE LINE OF pt_fieldcat.
260
261
262
263 lwa_fieldcat-fieldname = 'HYPERLINK'.
264
265 lwa_fieldcat-web_field = 'LINK_HANDLE'.
266
267 APPEND lwa_fieldcat TO pt_fieldcat.
268
269 ENDFORM. "get_data
270
271
272
273 *&---------------------------------------------------------------------*
274
275 *& Form hyperlink_build
276
277 *&---------------------------------------------------------------------*
278
279 * text
280
281 *----------------------------------------------------------------------*
282
283 * -->PT_HYPERLINK text
284
285 *----------------------------------------------------------------------*
286
287 FORM hyperlink_build TABLES pt_hyperlink TYPE lvc_t_hype.
288
289 DATA lwa_hyperlink LIKE LINE OF pt_hyperlink.
290
291
292
293 DO 13 TIMES.
294
295 lwa_hyperlink-handle = sy-index.
296
297 lwa_hyperlink-href = 'www.sina.com.cn'.
298
299 APPEND lwa_hyperlink TO pt_hyperlink.
300
301 ENDDO.
302
303 DO 13 TIMES.
304
305 lwa_hyperlink-handle = 13 + sy-index.
306
307 lwa_hyperlink-href = 'www.163.com'.
308
309 APPEND lwa_hyperlink TO pt_hyperlink.
310
311 ENDDO.
312
313
314
315 ENDFORM. "hyperlink_build
316
317
318
319 *&---------------------------------------------------------------------*
320
321 *& Form set_catalog
322
323 *&---------------------------------------------------------------------*
324
325 * set fieldcatalog for alv output
326
327 *----------------------------------------------------------------------*
328
329 FORM set_catalog CHANGING pt_fieldcat TYPE slis_t_fieldcat_alv.
330
331 DATA lwa_fieldcat TYPE slis_fieldcat_alv.
332
333
334
335 "macro
336
337 DEFINE add_field.
338
339 clear lwa_fieldcat.
340
341 lwa_fieldcat-fieldname = &1.
342
343 lwa_fieldcat-seltext_l = &2.
344
345 lwa_fieldcat-emphasize = &3.
346
347 lwa_fieldcat-key = &4.
348
349 lwa_fieldcat-fix_column = &4.
350
351 append lwa_fieldcat to pt_fieldcat.
352
353 END-OF-DEFINITION.
354
355
356
357 "add field catalog
358
359 add_field 'MANDT' 'Client' '' 'X'.
360
361 add_field 'CARRID' 'Airline Code' '' 'X'.
362
363 add_field 'CONNID' 'Fight Number' '' 'X'.
364
365 add_field 'COUNTRYFR' 'Country From' '' ''.
366
367 add_field 'CITYFROM' 'City From' '' ''.
368
369 add_field 'AIRPFROM' 'Airpart From' '' ''.
370
371 add_field 'COUNTRYTO' 'Country To' 'C510' ''.
372
373 add_field 'CITYTO' 'City To' '' ''.
374
375 add_field 'AIRPTO' 'Airpart To' '' ''.
376
377 add_field 'FLTIME' 'Fly Time' '' ''.
378
379 add_field 'DEPTIME' 'Dept Time' '' ''.
380
381 add_field 'ARRTIME' 'Arrive Time' '' ''.
382
383 add_field 'DISTANCE' 'Distance' '' ''.
384
385 add_field 'DISTID' 'Mass unit of distance' '' ''.
386
387 add_field 'FLTYPE' 'Flight type' '' ''.
388
389 add_field 'PERIOD' 'Arrival n day(s) later' '' ''.
390
391 add_field 'HYPERLINK' 'HYPERLINK' '' ''.
392
393
394
395 "checkbox
396
397 CLEAR lwa_fieldcat.
398
399 lwa_fieldcat-fieldname = 'CHECKBOX'.
400
401 lwa_fieldcat-seltext_l = 'Checkbox'.
402
403 lwa_fieldcat-checkbox = 'X'.
404
405 lwa_fieldcat-fix_column = 'X'.
406
407 APPEND lwa_fieldcat TO pt_fieldcat.
408
409
410
411 "icon
412
413 CLEAR lwa_fieldcat.
414
415 lwa_fieldcat-fieldname = 'ICON'.
416
417 lwa_fieldcat-seltext_l = 'Icon'.
418
419 lwa_fieldcat-icon = 'X'.
420
421 APPEND lwa_fieldcat TO pt_fieldcat.
422
423
424
425 "symbol
426
427 CLEAR lwa_fieldcat.
428
429 lwa_fieldcat-fieldname = 'SYMBOL'.
430
431 lwa_fieldcat-seltext_l = 'Symbol'.
432
433 lwa_fieldcat-symbol = 'X'.
434
435 APPEND lwa_fieldcat TO pt_fieldcat.
436
437
438
439 ENDFORM. "set_catalog


1 BUTN_TYPE 按钮类型
2 可用的按钮类型:
3 0 Button(normal)
4 1 Menu and default button
5 2 Menu
6 3 分割符
7 4 Radio button
8 5 Checkbox
9 6 Menu entry

ALV 颜色设置(行,列,单元格)的更多相关文章
- (转载)WPF:DataGrid设置行、单元格的前景色
WPF:DataGrid设置行.单元格的前景色 0. 说明 /********************************** 本示例实现功能1.DataGrid基本操作2.列标题样式3.内容居中 ...
- ABAP ALV 颜色设置(行,列,单元格)
BCALV_EDIT_03 http://blog.sina.com.cn/s/blog_a87b19300102who3.html 关于ALV表格颜色,这种需求在项目中会经常用到. 列颜色 列的颜色 ...
- SAP ABAP ALV 颜色设置(两个ALV函数例子) 列 行 单元格
@[TOC](设置ALV颜色)# 前言淦! 要求花花绿绿的ALV ,那就淦他! 需要的参数和对应颜色放在最后.稍微改改就能用. 介绍两个常用的ALV函数实现1.REUSE_ALV_GRID_DISPL ...
- CxGrid 改变某行或单元格的颜色
CxGrid 改变某行或单元格的颜色 一个表(T)的结构结构如下. ID Test 1 20012 14443 17885 26456 4568 cxGrid成功连接到该表, 如果要实现单元格特效 ...
- [Xcode 实际操作]五、使用表格-(5)设置UITableView的单元格背景颜色
目录:[Swift]Xcode实际操作 本文将演示单元格背景颜色的设置 在项目导航区,打开视图控制器的代码文件[ViewController.swift] import UIKit //首先添加两个协 ...
- table、tr、td表格的行、单元格等属性说明
table.tr.td表格的行.单元格等属性说明 <table>标签定义HTML表格.简单的HTML表格由table元素以及一个或多个tr.th或td元素组成. tr元素定义表格行,th元 ...
- Java poi导出设置 Excel某些单元格不可编辑
小白的总结,大神勿喷:需要转载请说明出处,如果有什么问题,欢迎留言 一.需求: 1.某一列 .某一行或某些单元格不可编辑,其他列可以编辑 二.期间遇到的问题 1.无法设置成不可编辑 2.设置为不可编辑 ...
- Easyui datagrid 设置内容超过单元格宽度时自动换行显示
datagrid 设置内容超过单元格宽度时自动换行显示 by:授客 QQ:1033553122 测试环境 jquery-easyui-1.5.3 问题描述 单元格内容超过单元格宽度不会自动化换行.如下 ...
- ExtJs GridPanel 给表格行或者单元格自定义样式
Ext.onReady(function(){ Ext.create('Ext.data.Store', { storeId:'simpsonsStore', fields:['name', 'ema ...
随机推荐
- python easygui用法
一个简单的例子 在 EasyGui 中,所有的 GUI 互动均是通过简单的函数调用,下边一个简单的例子告诉你 EasyGui 确实很 Easy! import easygui as g import ...
- RollingRegression(滚动回归分析)之Python实现
# -*- coding: utf-8 -*-"""Created on Sat Aug 18 11:08:38 2018 @author: acadsoc"& ...
- flask中使用ajax 处理前端请求,每隔一段时间请求不通的接口,结果展示同一页面
需求: flask中使用ajax 处理前端请求,每隔一段时间请求不通的接口,结果展示同一页面 用到 setTimeout方法,setTimeout(function(){},1000):setTime ...
- js 面向对象之属性描述符
上回介绍了面向对象之构造器属性.这次介绍下属性描述符 遍历对象属性 let person = {name: "lisi"} for (key in person) { consol ...
- python - Flask 基础 - 蓝图( Blueprint )(2)
""" 蓝图:为开发者提供的目录结构 - 使用: 1. 根目录创建一个跟项目名一样的文件 - 创建后第一步,在这个文件夹中添加一个 __init__.py 的配置文件 - ...
- JavaScript 弹出窗口总结
1: window.open <!-- window.open('page.html', 'newwindow', 'height=100, width=400, top=0,left=0, t ...
- sql server 标量函数的用法
函数的内容是把汉字转换成拼音 select dbo.uf_GetSpellCode( book_class) from BOOK_MSG
- 45 | 自增id用完怎么办?
MySQL 里有很多自增的 id,每个自增 id 都是定义了初始值,然后不停地往上加步长.虽然自然数是没有上限的,但是在计算机里,只要定义了表示这个数的字节长度,那它就有上限.比如,无符号整型 (un ...
- js的模块化之路
在ES6之前,官方没有出来import export这种模块化的语法. 为了提高代码复用.避免污染全局,民间写了很多模块化的实现: 1. 立即执行函数 (function(globalVariable ...
- 解决JavaWeb项目报错:The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.
明明有项目和文件,而且别的项目都可以运行,偏偏这个不能用,报错The origin server did not find a current representation for the targe ...