SM30添加排序功能

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

8a4bccf4967b1c72202240b8f3802ea4.png

实现方法:

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

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

83b9bc9ebd99746716063082f76f246d.png

c433c212648e3940dbd430ded08477cf.png

9388faa9d5760906054a429845d88d1e.png

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

需要修改EALX、ESLG、EULG。

03de2e6a2747ecfde1076d7f8fa33c41.jpeg

3、添加代码:

58d5f0d9773b0e60ce1345aae83ab281.jpeg

585aae9a1136934149f2ae6ec77da240.jpeg

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

b91333001022a55368ea7e4afa42c67d.jpeg

需要注意的点:

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

2、要注意激活Status

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

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

5、只支持单列排序。

2f2d3ca2091b886446bef35374e066fe.jpeg

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值