排序和删除重复项

1、SORT中ASCENDING|DESCENDING的位置

如下例:

SORT itab_cdpos DESCENDING BY objectid  udate utime 

 和

 SORT itab_cdpos BY objectid  udate utime DESCENDING .

是不同的,升降序指示在BY在前面,表示后面的字段都用这个升降序,作用范围是后面BY所有的字段;如果指示符是在BY的后面,则只是对这个指示符前面的字段起作用,其他的字段还是默认的方式排序。

 

2、在二分法搜索之前要先排序

READ TABLE itab WITH KEY name it_source BINARY SEARCH.  

像这样的语句,如果在执行前没有对itab进行排序,出来的结果可能就会说错误的。

正确的写法应该是先排序再READ:

SORT itab BY name .
READ TABLE itab WITH KEY name it_source BINARY SEARCH.

注:二分法搜出来的数据是第一条符合条件的数据。

 

3、内表的删重语句执行前要排序

DELETE ADJACENT DUPLICATES 。。。

这个是根据指定字段删除重复的内表数据的,在使用前也要先针对指定的字段进行排序,否则结果也是错误的。

注:删除重复数据,保留第一条。

 

4、如果内表列多行也多,排序会使用大量内存空间

有可能会导致内存不够用,是一个风险点。

 

5、根据指定的序列对内表排序

 

 

6、稳定排序

按照指定序列对内表排序后,如果还要按照更高级别的字段排序,请使用稳定排序法,语法为:SORT itabSTABLE BY…

 

7、动态指定字段排序

SORT itab BY (comp1)…(compn) .

或者:

SORT itab BY (otab).

otab是一个内表,结构是ABAP_SORTORDER。

人已赞赏
知识点

AT NEW用法及注意事项

2021-1-11 9:56:54

知识点

int2 int4 int8 int的值域范围

2021-1-19 14:03:32

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索