SM30

作者:郑德鼎 约 2 分钟阅读 更新日期:2024-02-22 2 年前更新 标签:ABAP, 开发

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、只支持单列排序。

郑德鼎

关于作者:郑德鼎

企业信息化与 SAP 技术顾问,长期专注 SAP ABAP、FI/CO、MM、SD 等模块的技术分享与实战经验总结。查看更多介绍

来源说明:本文内容由「SM30.docx」整理生成,仅用于内部技术分享与学习交流。