如下图,使用最少的更改给SM30添加排序的功能。
实现方法:
在直接给表或者维护视图创建表维护后,做下面几个步骤:
2、修改生成的GUI Status,添加排序按钮。
需要修改EALX、ESLG、EULG。
3、添加代码:
MODULE sort_table INPUT .
DATA : fname ( 40 ) ,
offset TYPE i ,
len TYPE i .
DATA : wa_dd03l TYPE dd03l .
FIELD-SYMBOLS : <fs> .
CHECK function ( 4 ) = 'SORT' .
GET CURSOR FIELD fname .
SPLIT fname AT '-' INTO fname fname .
CLEAR : offset , len .
SELECT * INTO wa_dd03l FROM dd03lWHERE tabname = x_header \- maintview
ORDER BY position .
IF wa_dd03l \- fieldname = fname .
len = wa_dd03l \- intlen .EXIT .
ELSE .
offset = offset + wa_dd03l \- intlen .
ENDIF .
ENDSELECT .ASSIGN extract+offset ( len ) TO <fs> .
IF function = 'SORTA' .SORT extract STABLE BY <fs> .
ELSEIF function = 'SORTD' .
SORT extract STABLE BY <fs> DESCENDING .
ENDIF .
ENDMODULE . " sort_table INPUT现在就可以在SM30实现排序的功能了:
需要注意的点:
1、添加按钮的时候,如果是红色的非活动状态,要更改为活动状态
3、sort_table的代码只适合非UNICODE系统,如果是UNICODE系统需要做调整。
4、排序时 不需要选中列,只要把光标放到需要排序的列内,点击排序按钮就可以了。
5、 只支持单列排序。