取出和设置滚动条状态
有一对get,set方法用来得到和设置滚动条状态。
Get_scroll_info_via_id:这个方法用来得到滚动条状态。他有三个输出参数,es_col_info输出最左边的字段名,es_row_no输出最顶端的行号,es_row_info已经不再使用。
Set_scroll_info_via_id:这个方法用来设置滚动条的状态。他的参数和上面的一样。
和选择一样当进行屏幕切换时,应该在切换之前通过get方法存储滚动条状态信息,切换之后通过set方法设置滚动条状态。
颜色设置
可以在ALV中为某行,某列以及某个单元格设置颜色。
为整列设置颜色
若想为某列设置颜色,你可以使用field catalog的emphasize字段。只要在field catalog内表中为该列行的emphasize字段设置颜色码就行。
颜色码的结构如下:
Cxyz
|
color
|
1/0:intensified on/off
|
1/0:inverse on/off
|
x
|
Color
|
Intended for
|
1
|
Gray-blue
|
headers
|
2
|
Light gray
|
List bodies
|
3
|
yellow
|
totals
|
4
|
Blue-green
|
Key columns
|
5
|
green
|
Positive threshold value
|
6
|
red
|
Negative threshold value
|
7
|
orange
|
Control levels
|
Field catalog内表中的key setting会覆盖这里的颜色设置。所以如果想甚至与key color不一样的颜色,就要把field catalog中的key字段设置为space。然而如果是通过功能模块自动产生的field catalog那么就应该注意key fields是自动设置的。
为整行设置颜色
为整行设置颜色有点儿复杂,为了为一行设置颜色,需要在要显示的内表中增加一个字段,这个字段应该是长度为4的字符型。所以需要修改我们显示内表的定义:
*---- internal table holding list data
DATA BEGIN OF gt_list OCCURS 0.
INCLUDE STRUCTURE SFLIGHT.
DATA rowcolor(4) TYPE c.
DATA END OF gt_list.
很明显你需要把颜色代码填充到这个字段。它的格式必须跟上面所描述的一样。不过ALV怎么能知道他是颜色代码字段。你可以通过layout structure中的INFO_FNAME字段告诉alv颜色代码字段的名字。
Eg:
Ps_layout-info_fname = ‘ROWCOLOR’.
可以在运行的任何时候设置这个字段。然而按照屏幕的逻辑,只有在对ALV进行刷新的时候这种设置才能有效。你还可以使用下面介绍的部分设置整行的颜色,不过这个方法的效率才是最高的。
设置单元格的颜色
这个过程跟设置整行的颜色的过程没什么区别。不过由于具体的单元格的位置需要两个参数才能被确认,所以过程稍有不同。比较复杂的所在主要是需要在要显示的内表中插入个表类型的字段。这将是我们要显示的表的结构变为DEEP。不过alv grid还可以处理它。
这个表的类型必须是LVC_T_SCOL。如果想设置整个行的颜色,这个内嵌的表中必须有一行fname为空的行。颜色值在字段col中设置,0或1在字段int中设置intensified,在字段inv中设置inverse。
如果想设置某个单元格的颜色,就在这个内嵌表中插入一行并且在fname中填入要设置颜色的那个字段。设置整个列的颜色的方法很明显便是在要显示的内表中的每一行的内嵌表中插入包含这个字段的一行。
同样key field的颜色将会覆盖你的设置。这也正是在这个内嵌表中有个字段‘nokeycol’.通过这个字段可以避免颜色设置被key field的颜色设置覆盖。
同时我们还要告诉alv grid那个内表包含颜色数据。Layout structure的ctab_fname字段便是作这个用的。
*-----internal table holding list data
DATA BEGIN OF gt_list OCCURS 0.
INCLUDE STRUCTURE SFLIGHT.
DATA rowcolor(4) TYPE c.
DATA cellcolors TYPE lvc_t_scol.
DATA END OFgt_list.
DATA: ls_cellcolor TYPE lvc_s_scol.
READ TABLE gt_list INDEX 5.
Ls_cellcolor-fname = ‘SEATSOCC’.
Ls_cellcolor-color-col = ‘7’.
Ls_cellcolor-color-int = ‘1’.
APPEND ls_cellcolor TO gt_list-cellcolors.
MODIFY gt_list INDEX 5.
在颜色设置中也有优先级顺序,它们是cell setting row setting和column setting。