@[TOC](設定ALV顏色)
# 前言
淦! 要求花花綠綠的ALV ,那就淦他!
需要的引數和對應顏色放在最后,
稍微改改就能用,
介紹兩個常用的ALV函式實作
1.REUSE_ALV_GRID_DISPLAY
2.REUSE_ALV_GRID_DISPLAY_LVC
# 實體
先以LVC 舉個例子吧,那另外一個函式就只是引數的問題,
## 列的顏色
列的顏色很簡單,在構成ALV欄位的FIELDCAT內表中有一個欄位是EMPHASIZE,將一個char型4位的顏色代碼分配到FIELDCAT內表這個欄位即可,
```bash
LW_FCAT-EMPHASIZE = 'C710'. "設定欄位的顏色 橙色
MODIFY LT_FCAT FROM LW_FCAT
TRANSPORTING EMPHASIZE
WHERE FIELDNAME = 'ESLRY'.
```
## 行 和 單元格的顏色
```bash
定義好結構(以LVC函式為例子)
* 增加顏色欄位,,
TYPES : BEGIN OF TY_ALV.
INCLUDE TYPE z06pms260_alv.
TYPES : CLR TYPE CHAR4, " 控制行顏色,
CELLCOLOR TYPE SLIS_T_SPECIALCOL_ALV, "控制單元格顏色
END OF TY_ALV.
資料內表就變成了 DEEP 結構了, ALV函式是可以識別的.
DATA: GT_ALV TYPE TABLE OF TY_ALV,
GS_ALV TYPE TY_ALV.
*SLIS_T_SPECIALCOL_ALV 引數的含義
*FNAME 告訴我們你需要設定的是哪個欄位,如果為空,然后直接在 COLOR 中設定顏色,就是整行設定為這個顏色.如果具體到某個單元格,必須指定是哪個欄位.
*COLOR 用來設定顏色的.
*NOKEYCOL 設定為關鍵列的一些欄位,我們的顏色設定可能被覆寫.通過這個欄位的設定,可以避免被關鍵列的顏色被覆寫.
```
1.行顏色,在構成ALV資料的內表中,添加一個char4的欄位(CLR),用來記錄顏色代碼(注釋部分)
2.單元格顏色的設定與行顏色設計基本一致
在構成ALV資料的內表中,添加一個內表 CellColor,用來記錄顏色代碼,需要設定顏色的欄位名
```bash
* if gS_alv-ZTLSJ > '3' . " 如果停留時間大于 3 該行標紅,
* gS_alv-CLR = 'C610'.
* endif.
if gS_alv-ZTLSJ > '3' . " 如果停留時間大于 3 該單元格標紅,
L_CELLCOLOR-FIELDNAME = 'ZTLSJ'. " 需要變色的欄位
L_CELLCOLOR-COLOR-COL = 6. “對應C610 紅色,參考最后顏色圖”
L_CELLCOLOR-COLOR-INT = 1.
L_CELLCOLOR-COLOR-INV = 0.
APPEND L_CELLCOLOR TO gS_alv-CELLCOLOR.
endif.
MODIFY GT_ALV FORM GS_ALV INDEX LV_TABIX.
```
內表中定義完成了,為LAYOUT設定對應得欄位,
```bash
* ls_layout-INFO_FNAME = 'CLR'. " 設定行顏色
ls_layout-CTAB_FNAME = 'CELLCOLOR'. " 設定單元格顏色
```
```bash
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
i_callback_program = sy-repid
is_layout_lvc = ls_layout "行跟單元格
it_fieldcat_lvc = lt_fcat “列的顏色定義在這個內表中
i_callback_user_command = 'FRM_US_COMM'
i_save = 'A'
TABLES
t_outtab = gt_alv
EXCEPTIONS
program_error = 1
OTHERS = 2.
```
看看效果(這里不需要用到行設定,注釋了代碼)
# 顏色表及需要的引數
顏色對應表

列顏色,在FIELDCAT中的引數EMPHASIZE 設定顏色代碼,
行在內表中定義一個CHAR4長度的欄位,LAYOUT設定屬性,
單元格就不同了
1.REUSE_ALV_GRID_DISPLAY
**LVC_T_SCOL**
```bash
TYPES: BEGIN OF TY_ZEMP.
INCLUDE STRUCTURE ZEMP_TEST.
TYPES: CLR TYPE CHAR4,
CELLCOLOR TYPE LVC_T_SCOL, "單元格顏色
END OF TY_ZEMP.
```
2.REUSE_ALV_GRID_DISPLAY_LVC
**SLIS_T_SPECIALCOL_ALV**
```bash
* 增加顏色欄位,,
TYPES : BEGIN OF TY_ALV.
INCLUDE TYPE z06pms260_alv.
TYPES : CLR TYPE CHAR4, " 控制行顏色,
CELLCOLOR TYPE SLIS_T_SPECIALCOL_ALV, "控制單元格顏色
END OF TY_ALV.
```
CSDN地址: https://blog.csdn.net/Pegasus666/article/details/116792441?spm=1001.2014.3001.5501,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/285879.html
標籤:SAP
