SM30添加排序功能

作者:ABAP老白 约 3 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:ABAP, AI Coding, AI编程, Data Engineering, SD, 开发, 数据工程, 销售分销
SM30添加排序功能 - 封面图
SM30添加排序功能 - 封面图

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

SM30添加排序功能 - 封面图
SM30添加排序功能 - 封面图

实现方法:

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

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

SM30添加排序功能 - 封面图
SM30添加排序功能 - 封面图
SM30添加排序功能 - 封面图
SM30添加排序功能 - 封面图
SM30添加排序功能 - 封面图
SM30添加排序功能 - 封面图

2、修改生成的GUI Status,添加排序按钮。

需要修改EALX、ESLG、EULG。

SM30添加排序功能 - 封面图
SM30添加排序功能 - 封面图

3、添加代码:

SM30添加排序功能 - 封面图
SM30添加排序功能 - 封面图
SM30添加排序功能 - 封面图
SM30添加排序功能 - 封面图

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实现排序的功能了:

SM30添加排序功能 - 封面图
SM30添加排序功能 - 封面图

需要注意的点:

1、添加按钮的时候,如果是红色的非活动状态,要更改为活动状态

2、要注意激活Status

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

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

5、 只支持单列排序。

SM30添加排序功能 - 封面图
SM30添加排序功能 - 封面图
ABAP老白

关于作者:ABAP老白

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

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