注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

XINBO'S SAP BLOG

你所浪费的今天,是昨天死去的人奢望的明天。你所厌恶的现在,是未来的你回不去的曾经

 
 
 

日志

 
 

ALV GRID的参考文档(VI)  

2009-05-22 14:36:48|  分类: ALV |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
设置排序条件
可以为要显示的数据设置排序条件。可以把排序规则插入到结构类型为‘LVC_T_SORT’的内表中。如果想对显示的数据进行初始排序,就把它传给方法‘SET_TABLE_FOR_FIRST_DISPLAY’的参数IT_SORT.
FORM prepare_sort_table CHANGING pt_sort TYPE lvc_t_sort.
 DATA: ls_sort TYPE lvc_s_sort.
 Ls_sort-spos = ‘1’.
 Ls_sort-fieldname = ‘CARRID’.
Ls_sort-up = ‘X’.
Ls_sort-down = space.
APPEND ls_sort TO pt_sort.
 
Ls_sort-spos = ‘2’.
Ls_sort-fieldname = ‘SEATSOCC’.
Ls_sort-up = space.
Ls_sort-down = ‘X’.
APPEND ls_sort TO pt_sort.
.
ENDFORM..
这里有两点需要注意:首先是如果在排序表中存在的字段在fieldcat表中不存在,就会出现dump,另外就是被排序的字段缺省情况下相同的值将会被合并,不过你可以设置layout结构的no_merging来避免这种情况。如果你只是想指定的某些列不被合并你可以设置fieldcat表中该字段行的no_merging。
可以通过方法:‘get_sort_criteria’,’set_sort_criteria’来动态设置排序准则。
筛选
跟排序规则差不多,可以通过填充类型为‘LVC_T_FILT’的表来实现筛选,插入这个表的方法跟插入ranges变量差不多。
FORM prepare_filter_table CHANGING pt_filt TYPE lvc_t_filt.
 DATA: ls_filt TYPE lvc_s_filt.
 
 Ls_filt-fieldname = ‘FLDATE’.
 Ls_filt-sign = ‘E’.
 Ls_filt-option = ‘BT’.
 Ls_filt-low = ‘20030101’.
 Ls_filt-high = ‘20031231’.
 
 APPEND ls_filt TO pt_filt.
ENDFORM.
你可以通过方法get_filter_criteria和set_filter_criteria来动态的设置筛选。
选择功能
选择某一行,某一列或者某一格是经常需要的功能。通过layout structure的sel_mode字段可以设置alv grid的选择方式。下面列表列举了可选择的方式和他们的功能。
Value
Mode
Possible selections
Comment
Space
Same as ‘B’
See ‘B’
Default setting
A
Column and row selection
Multiple columns
Multiple rows
用户可以通过左边的按钮来选择行
B
Simple selection list box
Multiple columns
Multiple rows
 
C
Multiple selection
List box
Multiple columns
Multiple rows
 
D
Cell selection
Multiple columns
Multiple rows
Any cells
用户可以通过左边的按钮来选择行
除了设置这些属性外,如果你设置了可以选择多行,那么行标志缺省情况下是可见的,可以设置NO_ROWMARK来隐藏行标志。
需要注意的一点是如果ALV GRID是可编辑的,它将会替代你在layout设置中选择的选择模式。
当进行了选择以后,重要的一点便是要知道我们要选择的是什么。可以通过以下方法来实现:
GET_SELECTED_CELLS: 这个方法通过参数‘et_cell’返回类型为LVC_T_CELL的表来描述选择单元格的确切位置。Alv grid control只返回选择单元格的确切位置。如果你选择的是整行或整列那么这个方法不返回任何信息。这个方法返回的是选择单元格的行属性和列属性。
GET_SELECTED_ROWS: 对于A,C,D的选择方式,你可以选择多行。这个方法可以用来告诉你所选择的行。他有两个参数,不过参数et_index_rows已经不用,另一个参数et_row_no的类型为LVC_T_ROWID用来显示所选择行的索引信息。
GET_SELECTED_COLUMNS:跟前面的方法一样。他的输出参数et_index_columns的类型为lvc_t_col来描述所选择的列信息。
在程序中你可能需要选择某些列,行或格,你可以使用这些方法的set版本来实现与前面相反的目的。在屏幕切换之后回来到原来的屏幕,alv grid的选择信息有可能会丢掉。应该在屏幕切换之前使用get方法得到选择信息,然后在屏幕切换之后使用set方法恢复选择信息。
  评论这张
 
阅读(448)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017