理论教育 优化ALV输出排序设置规则及方法

优化ALV输出排序设置规则及方法

时间:2023-05-31 理论教育 版权反馈
【摘要】:程序员可以根据特定的规则进行排序,更改数据记录的顺序,进行ALV输出。除了合计之外,如果需要中间小计结果,则需要对ALV输出进行排序。创建、获取、删除排序设置排序是ALV输出中一个字段的属性。表 6-51字段的排序条件对象是类CL_SALV_WD_SORT_RULE的对象。表 6-523)按照相同的值分组默认情况下,在一个排序字段的排序的序列中,ALV输出的值是相同的。表 6-54按照选中某一列启用排序ALV输出中的列标题中可以显示小箭头图标。

优化ALV输出排序设置规则及方法

程序员可以根据特定的规则进行排序,更改数据记录的顺序,进行ALV输出。可以指定哪些字段的值按字母顺序或数字顺序(按大小)进行排序,从而确定序列中的所有行。

开发者可以进行以下排序设置:

● 创建、获取、删除排序设置(排序条件)。

● 设置排序方向和排序顺序。

● 按照相同的值分组。

● 强制某个字段的排序。

● 按照选中某一列启用排序。

● 根据另一个字段的值对一个字段结合排序。

● 隐藏和显示排序标签页。

注:程序员可以使用数字列的值进行合计。默认情况下,所有列的值均可用于此功能。除了合计之外,如果需要中间小计结果,则需要对ALV输出进行排序。如果要显示小计结果则ALV可以按照列的默认排序情况自动生成小计结果。

(1)创建、获取、删除排序设置

排序是ALV输出中一个字段的属性。创建、获取或删除字段排序条件,可以使用接口类IF_SALV_WD_SORT(实施类CL_SALV_WD_FIELD)中的方法,见表6-51。

6-51

978-7-111-54749-5-Chapter06-61.jpg

字段的排序条件对象是类CL_SALV_WD_SORT_RULE的对象。

注:如果指定的ALV输出是一个新的结构,则新的数据内表的所有字段的排序条件会自动删除。

(2)设置排序方向和排序顺序

对于每个单独的排序条件,可以指定是否要排序及按字段值升序(A、B、C)或降序(C B、A)排序(排序方向)。

如果通过改变由多个字段排序更改ALV输出,则输出结果依赖于排序序列中的哪些字段默认情况下,该字段在序列中被排序以生成排序条件。程序员可以更改此序列。要做到这一点,可以为排序顺序的字段指定一个位置编号(或排序条件)。

若要更改排序条件的排序方向或排序顺序,则可以使用类CL_SALV_WD_SORT_RULE中的方法,见表6-52。

6-52

978-7-111-54749-5-Chapter06-62.jpg

3)按照相同的值分组

默认情况下,在一个排序字段的排序的序列中,ALV输出的值是相同的。ALV自动将值进行分组。可以指定一个值出现在每一行,即使这个值不会改变。要做到这一点,使用接口类IF_SALV_WD_SORT(实现类CL_SALV_WD_FIELD)的方法,见表6-53。

6-53(www.daowen.com)

978-7-111-54749-5-Chapter06-63.jpg

(4)强制某个字段的排序

可以明确地禁止一个字段进行排序,这具有以下效果:

● 相关领域不再显示的“Settings”对话框中的“排序”选项卡页面。

● 如果想通过用户单击列标题进行排序,则该功能不可用,禁止排序的列的箭头图标被

隐藏。

● 如果在应用程序中为这一字段定义了一个排序条件,则这种状况不影响ALV输出。

要禁止某个字段的排序,使用接口类IF_SALV_WD_SORT(实现类CL_SALV_WD_ FIELD)的方法,见表6-54。

6-54

978-7-111-54749-5-Chapter06-64.jpg

(5)按照选中某一列启用排序

ALV输出中的列标题中可以显示小箭头图标。用户可以使用这些箭头图标将列按升序或降序进行排序。

也可以指定按一列排序,及使用〈Crtl〉键添加多个列进行排序。

为了使用户能够通过单击列标题进行排序,可以使用接口的类IF_SALV_WD_STD_ FUNCTIONS(实现类CL_SALV_WD_CONFIG_TABLE)的方法,见表6-55。

6-55

978-7-111-54749-5-Chapter06-65.jpg

为了使用户能够通过单击列标题的多个列进行排序,可以使用接口类F_SALV_WD_ TABLE_SETTINGS(实现类CL_SALV_WD_CONFIG_TABLE)的方法,见表6-56。

6-56

978-7-111-54749-5-Chapter06-66.jpg

6)根据另一个字段的值对一个字段结合排序

如果某字段本身不返回所需的结果,则可以指定该字段使用当前字段进行结合排序。要做到这一点,可以使用接口类IF_SALV_WD_COLUMN_SERVICE_REF(实施类CL_SALV_ WD_COLUMN)的方法,见表6-57。

6-57

978-7-111-54749-5-Chapter06-67.jpg

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈