SAP ABAP ALV 顏色設置(兩個ALV函數例子) 列 行 單元格


@[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。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM