【转】ABAP的坑4
本次介紹SORT的一些知識點和容易出錯的地方。
正文:
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。
總結
以上是生活随笔為你收集整理的【转】ABAP的坑4的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【转】ABAP的坑3
- 下一篇: FOR ALL ENTRIES IN内表