ABAP 的坑4

作者:ABAP老白 约 3 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:ABAP, Data Engineering, 开发, 数据工程

本次推送介绍SORT的一些知识点和容易出错的地方。

如有同学想讲讲自己遇到的坑,请使用留言,不要在微信发消息(可能看不到),谢谢!

另外可以加QQ群:15881589(收费5元。本来是想设置收费100来着,奈何现在最多只能设置为5元)

**

**

正文:

**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、根据指定的序列对内表排序**

ABAP 的坑4 - 封面图
ABAP 的坑4 - 封面图

**6、稳定排序**

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

**7、动态指定字段排序**

SORT itab BY (comp1)...(compn) .

或者:

SORT itab BY (otab).

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

ABAP 的坑4 - 封面图
ABAP 的坑4 - 封面图
ABAP老白

关于作者:ABAP老白

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

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