ABAP ALV 颜色设置(行,列,单元格)
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. 循环内表,设置颜色代码
LOOP AT IT_ZEMP INTO IW_ZEMP.
"员工编号为‘3’的行,颜色为红色
IF IW_ZEMP-EMPID = ''.
IW_ZEMP-CLR = 'C610'.
MODIFY IT_ZEMP FROM IW_ZEMP.
CLEAR IW_ZEMP.
ENDIF.
IF IW_ZEMP-EMPID = ''.
IW_CELLCOLOR-FNAME = 'ENAME'.
"员工编号为‘2’的行的‘ENAME’字段颜色为 黄色
IW_CELLCOLOR-COLOR-COL = .
IW_CELLCOLOR-COLOR-INT = .
IW_CELLCOLOR-COLOR-INV = .
APPEND IW_CELLCOLOR TO IW_ZEMP-CELLCOLOR.
MODIFY IT_ZEMP FROM IW_ZEMP.
CLEAR IW_ZEMP.
ENDIF.
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

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

INCLUDE <icon>.
INCLUDE <symbol>.
TYPE-POOLS slis.
TABLES spfli.
TYPES: BEGIN OF ty_layout,
exception(),
checkbox,
icon TYPE icon_d,
symbol TYPE icon_d,
color(),
cell_color TYPE slis_t_specialcol_alv,
hyperlink TYPE string,
link_handle TYPE int4,
END OF ty_layout.
TYPES BEGIN OF ty_spfli.
INCLUDE TYPE ty_layout.
INCLUDE TYPE spfli.
TYPES END OF ty_spfli.
TYPES ty_tab_spfli TYPE ty_spfli OCCURS .
PERFORM f_main.
*&---------------------------------------------------------------------*
*& Form f_main
*&---------------------------------------------------------------------*
* ALV display
*----------------------------------------------------------------------*
FORM f_main.
DATA: lt_spfli TYPE ty_tab_spfli,
lt_fieldcat TYPE slis_t_fieldcat_alv,
ls_layout TYPE slis_layout_alv,
lt_hyperlink TYPE lvc_t_hype,
lt_add_fieldcat TYPE slis_t_add_fieldcat.
PERFORM get_data TABLES lt_spfli.
PERFORM set_catalog CHANGING lt_fieldcat.
PERFORM set_layout USING ls_layout.
PERFORM hyperlink_build TABLES lt_hyperlink.
PERFORM add_fieldcat_build TABLES lt_add_fieldcat.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
i_grid_title = 'Xin''s ALV'
it_fieldcat = lt_fieldcat
it_hyperlink = lt_hyperlink
is_layout = ls_layout
it_add_fieldcat = lt_add_fieldcat
TABLES
t_outtab = lt_spfli.
ENDFORM. "f_main
*&---------------------------------------------------------------------*
*& Form set_layout
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_LAYOUT text
*----------------------------------------------------------------------*
FORM set_layout USING p_layout TYPE slis_layout_alv.
p_layout-zebra = 'X'.
p_layout-colwidth_optimize = 'X'.
p_layout-window_titlebar = 'LinHuanXin''s ALV Demo'.
p_layout-no_hline = 'X'.
p_layout-no_vline = 'X'.
p_layout-info_fieldname = 'COLOR'.
p_layout-coltab_fieldname = 'CELL_COLOR'.
p_layout-lights_fieldname = 'EXCEPTION'.
ENDFORM. "set_layout
*&---------------------------------------------------------------------*
*& Form get_data
*&---------------------------------------------------------------------*
* Get the data for output
*----------------------------------------------------------------------*
* -->PT_SPFLI data internal table
*----------------------------------------------------------------------*
FORM get_data TABLES pt_spfli TYPE ty_tab_spfli.
DATA: lt_cell TYPE slis_t_specialcol_alv,
ls_cell LIKE LINE OF lt_cell,
lwa_spfli LIKE LINE OF pt_spfli.
SELECT * FROM spfli INTO CORRESPONDING FIELDS OF TABLE pt_spfli.
LOOP AT pt_spfli INTO lwa_spfli.
IF lwa_spfli-distid = 'KM'.
lwa_spfli-color = 'C610'.
ENDIF.
IF lwa_spfli-distance < .
CLEAR ls_cell.
REFRESH lt_cell.
ls_cell-fieldname = 'DISTANCE'.
ls_cell-color-col = ''.
ls_cell-color-int = ''.
ls_cell-color-inv = ''.
ls_cell-nokeycol = 'X'.
APPEND ls_cell TO lt_cell.
lwa_spfli-cell_color = lt_cell.
lwa_spfli-checkbox = 'X'.
lwa_spfli-exception = ''.
ELSE.
lwa_spfli-exception = ''.
ENDIF.
lwa_spfli-link_handle = sy-tabix.
lwa_spfli-hyperlink = 'www.163.com'.
lwa_spfli-icon = icon_detail.
lwa_spfli-symbol = sym_folder.
MODIFY pt_spfli FROM lwa_spfli.
ENDLOOP.
ENDFORM. "get_data
*&---------------------------------------------------------------------*
*& Form add_fieldcat_build
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->PT_FIELDCAT text
*----------------------------------------------------------------------*
FORM add_fieldcat_build TABLES pt_fieldcat TYPE slis_t_add_fieldcat.
DATA lwa_fieldcat LIKE LINE OF pt_fieldcat.
lwa_fieldcat-fieldname = 'HYPERLINK'.
lwa_fieldcat-web_field = 'LINK_HANDLE'.
APPEND lwa_fieldcat TO pt_fieldcat.
ENDFORM. "get_data
*&---------------------------------------------------------------------*
*& Form hyperlink_build
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->PT_HYPERLINK text
*----------------------------------------------------------------------*
FORM hyperlink_build TABLES pt_hyperlink TYPE lvc_t_hype.
DATA lwa_hyperlink LIKE LINE OF pt_hyperlink.
DO TIMES.
lwa_hyperlink-handle = sy-index.
lwa_hyperlink-href = 'www.sina.com.cn'.
APPEND lwa_hyperlink TO pt_hyperlink.
ENDDO.
DO TIMES.
lwa_hyperlink-handle = + sy-index.
lwa_hyperlink-href = 'www.163.com'.
APPEND lwa_hyperlink TO pt_hyperlink.
ENDDO.
ENDFORM. "hyperlink_build
*&---------------------------------------------------------------------*
*& Form set_catalog
*&---------------------------------------------------------------------*
* set fieldcatalog for alv output
*----------------------------------------------------------------------*
FORM set_catalog CHANGING pt_fieldcat TYPE slis_t_fieldcat_alv.
DATA lwa_fieldcat TYPE slis_fieldcat_alv.
"macro
DEFINE add_field.
clear lwa_fieldcat.
lwa_fieldcat-fieldname = &.
lwa_fieldcat-seltext_l = &.
lwa_fieldcat-emphasize = &.
lwa_fieldcat-key = &.
lwa_fieldcat-fix_column = &.
append lwa_fieldcat to pt_fieldcat.
END-OF-DEFINITION.
"add field catalog
add_field 'MANDT' 'Client' '' 'X'.
add_field 'CARRID' 'Airline Code' '' 'X'.
add_field 'CONNID' 'Fight Number' '' 'X'.
add_field 'COUNTRYFR' 'Country From' '' ''.
add_field 'CITYFROM' 'City From' '' ''.
add_field 'AIRPFROM' 'Airpart From' '' ''.
add_field 'COUNTRYTO' 'Country To' 'C510' ''.
add_field 'CITYTO' 'City To' '' ''.
add_field 'AIRPTO' 'Airpart To' '' ''.
add_field 'FLTIME' 'Fly Time' '' ''.
add_field 'DEPTIME' 'Dept Time' '' ''.
add_field 'ARRTIME' 'Arrive Time' '' ''.
add_field 'DISTANCE' 'Distance' '' ''.
add_field 'DISTID' 'Mass unit of distance' '' ''.
add_field 'FLTYPE' 'Flight type' '' ''.
add_field 'PERIOD' 'Arrival n day(s) later' '' ''.
add_field 'HYPERLINK' 'HYPERLINK' '' ''.
"checkbox
CLEAR lwa_fieldcat.
lwa_fieldcat-fieldname = 'CHECKBOX'.
lwa_fieldcat-seltext_l = 'Checkbox'.
lwa_fieldcat-checkbox = 'X'.
lwa_fieldcat-fix_column = 'X'.
APPEND lwa_fieldcat TO pt_fieldcat.
"icon
CLEAR lwa_fieldcat.
lwa_fieldcat-fieldname = 'ICON'.
lwa_fieldcat-seltext_l = 'Icon'.
lwa_fieldcat-icon = 'X'.
APPEND lwa_fieldcat TO pt_fieldcat.
"symbol
CLEAR lwa_fieldcat.
lwa_fieldcat-fieldname = 'SYMBOL'.
lwa_fieldcat-seltext_l = 'Symbol'.
lwa_fieldcat-symbol = 'X'.
APPEND lwa_fieldcat TO pt_fieldcat.
ENDFORM. "set_catalog
BUTN_TYPE 按钮类型
可用的按钮类型:
Button(normal)
Menu and default button
Menu
分割符
Radio button
Checkbox
Menu entry
ABAP ALV 颜色设置(行,列,单元格)的更多相关文章
- (转载)WPF:DataGrid设置行、单元格的前景色
WPF:DataGrid设置行.单元格的前景色 0. 说明 /********************************** 本示例实现功能1.DataGrid基本操作2.列标题样式3.内容居中 ...
- SAP ABAP ALV 颜色设置(两个ALV函数例子) 列 行 单元格
@[TOC](设置ALV颜色)# 前言淦! 要求花花绿绿的ALV ,那就淦他! 需要的参数和对应颜色放在最后.稍微改改就能用. 介绍两个常用的ALV函数实现1.REUSE_ALV_GRID_DISPL ...
- ALV 颜色设置(行,列,单元格)
[转自:https://www.cnblogs.com/mingdashu/p/color_alv.html] BCALV_EDIT_03 http://blog.sina.com.cn/s/blog ...
- 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 ...
随机推荐
- jquery获取元素索引值index()方法
jquery的index()方法 搜索匹配的元素,并返回相应元素的索引值,从0开始计数. 如果不给 .index() 方法传递参数,那么返回值就是这个jQuery对象集合中第一个元素相对于其同辈元素的 ...
- FastScroll(3)分组的listview 打开fastscroll的分组提示功能
1,让ListView显示分组(用两个layout) 2,让ListView实现sectionIndexer接口 3,代码如下: import java.util.ArrayList; import ...
- java中synchronized的用法详解
记下来,很重要. Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码. 一.当两个并发线程访问同一个对象object中的这个synchron ...
- 第二部分 MediaPlayer的接口与架构
第二部分 MediaPlayer的接口与架构 2.1 整体框架图 MediaPlayer的各个库之间的结构比较复杂,可以用下图的表示 在各个库中,libmedia.so位于核心 ...
- 斜率优化dp(POJ1180 Uva1451)
学这个斜率优化dp却找到这个真心容易出错的题目,其中要从n倒过来到1的确实没有想到,另外斜率优化dp的算法一开始看网上各种大牛博客自以为懂了,最后才发现是错了. 不过觉得看那些博客中都是用文字来描述, ...
- UVa 540 (团体队列) Team Queue
题意: 每个人都属于一个团体,在排队的时候,如果他所在的团体有人在队伍中,则他会站到这个团体的最后.否则站到整个队伍的队尾. 输出每次出队的人的编号. 分析: 容易看出,长队中,在同一个团体的人是排在 ...
- LeetCode Excel Sheet Column Title (输出excel表的列名称)
题意:给一个数字n,输出excel表的列名称. 思路:其实观察可知道,是个26进制的标记而已.那就模拟一下,每次计算一位时就先左移1位,再进行计算. class Solution { public: ...
- [Mac][phpMyAdmin] [2002] No such file or directory
我从phpMyAdmin的官网下载了最新版,将它解压到 /Library/WebServer/Documents 下,然后把文件夹改名 phpmyadmin . 接着输入在浏览器中输入 localho ...
- Windows 之间用rsync同步数据(cwRsyncServer配置)
rsync是一款优秀的数据同步软件,在跨服务器,跨机房,跨国备份服务器的首选工具,下面就来介绍下如何配置安装cwRsyncServer很大多数软件一样是B/C架构,cwRsyncServer是rsyn ...
- Spring Bean之间的关系
bean之间的关系:继承和依赖继承bean的配置 Spring允许继承bean的配置,被继承的bean称为父bean,继承这个父bean的bean称为子bean 子bean从父bean中继承配置,包括 ...