在ABAP开发中,有时需要在ALV网格上实现一些颜色的转变,比如让编号相同且连续的行保持同样的颜色,遇到不同的号码则变换颜色,再遇到再变换回原本颜色。
这时要在内表中定义两个字段
cyl_abs TYPE p LENGTH 13 DECIMALS 2,
color TYPE CHAR4,
再定义一个Char4类型与一个编号的类型
DATA: l_color TYPE CHAR4,
l_aennr TYPE aennr.
此时可以做一个IF循环
SORT: wa_col BY aennr ASCENDING cyl_abs DESCENDING.
CLEAR l_aennr.
"不同订单 显示不同的行背景颜色
LOOP AT wa_col .
IF l_aennr = ''. "第一行
l_color = 'C410'.
ELSE.
IF wa_col-aennr = l_aennr AND l_color = 'C410'."上行跟这行号码相同为蓝色
l_color = 'C410'.
ELSEIF wa_col-aennr = l_aennr AND l_color = 'C500'."上行跟这行号码相同为绿色
l_color = 'C500'.
ELSEIF wa_col-aennr <> l_aennr AND l_color = 'C410'."上行为蓝色号码不同
l_color = 'C500'.
ELSEIF wa_col-aennr <> l_aennr AND l_color = 'C500'."上行为绿色号码不同
l_color = 'C410'.
ENDIF.
ENDIF.
wa_col-color = l_color.
MODIFY wa_col TRANSPORTING color.
l_aennr = wa_col-aennr.
ENDLOOP.
这时候大部分都已经完成,你只需要在输出时‘提一嘴’color.
DATA: fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE,
layout TYPE slis_layout_alv.
Layout-info_fieldname = 'COLOR'."就是☞这个
layout-colwidth_optimize = 'X'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
is_layout = layout
it_fieldcat = fieldcat[]
TABLES
t_outtab = wa_col
EXCEPTIONS
program_error = 1
OTHERS = 2.
/今天学习中遇到的问题(2.23)