SM30

SM30添加排序功能

原创 ABAP老白 ABAP老白 2019-02-21 09:24

如下图,使用最少的更改给SM30添加排序的功能。

实现方法:

在直接给表或者维护视图创建表维护后,做下面几个步骤:

1、由使用标准GUI Status改为使用自己的GUI Status

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 dd03l     WHERE 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、添加按钮的时候,如果是红色的非活动状态,要更改为活动状态

2、要注意激活Status

3、sort_table的代码只适合非UNICODE系统,如果是UNICODE系统需要做调整。

4、排序时不需要选中列,只要把光标放到需要排序的列内,点击排序按钮就可以了。

5、只支持单列排序。

返回ABAP参考资料列表