Read Table Binary Search读得field一定要按照Sort的顺序
2010-12-23 23:20
453 查看
如果 Sort int_tab1 by aaa bbb ccc.
则 Read table with key bbb=… ccc=… aaa=… Binary search. 肯定会缺少很多返回记录,这样是错误的。
一定要和sort时候的field顺序一样。
** 但是如果是sorted table,那么无论是否顺序一致,都无要紧。都能找到正确的值。
问题:
那么如果read table with key aaa=… bbb=… binary search. 结果会有缺失么?
下面证明不会缺失。
则 Read table with key bbb=… ccc=… aaa=… Binary search. 肯定会缺少很多返回记录,这样是错误的。
一定要和sort时候的field顺序一样。
** 但是如果是sorted table,那么无论是否顺序一致,都无要紧。都能找到正确的值。
测试程序 |
DATA: lt_afvc TYPE TABLE OF afvc, lv_i1 TYPE sytabix, lv_i2 TYPE sytabix, lv_cnt TYPE i. FIELD-SYMBOLS: <afvc> TYPE afvc, <afvc1> TYPE afvc, <afvc2> TYPE afvc. SELECT * FROM afvc INTO TABLE lt_afvc. SORT lt_afvc BY aufpl aplzl arbid. LOOP AT lt_afvc ASSIGNING <afvc>. READ TABLE lt_afvc ASSIGNING <afvc1> WITH KEY arbid = <afvc>-arbid aplzl = <afvc>-aplzl aufpl = <afvc>-aufpl BINARY SEARCH. lv_i1 = sy-tabix. READ TABLE lt_afvc ASSIGNING <afvc2> WITH KEY aufpl = <afvc>-aufpl aplzl = <afvc>-aplzl arbid = <afvc>-arbid BINARY SEARCH. lv_i2 = sy-tabix. IF lv_i1 NE lv_i2. lv_cnt = lv_cnt + 1. WRITE: / lv_i1, 30 lv_i2, 50 <afvc>-aufpl, 65 <afvc>-aplzl, 75 <afvc>-arbid. ENDIF. ENDLOOP. uline. WRITE: / 'Number of mismatches: ', 20 lv_cnt. lv_cnt = lines( lt_afvc ). WRITE: / 'Number of checks: ', 20 lv_cnt. |
那么如果read table with key aaa=… bbb=… binary search. 结果会有缺失么?
下面证明不会缺失。
测试程序 |
*&---------------------------------------------------------------------* *& Report ZTEST_BINARY_SEARCH *& *&---------------------------------------------------------------------* *& *& *&---------------------------------------------------------------------* REPORT ZTEST_BINARY_SEARCH. data: IT_VBAP TYPE STANDARD TABLE OF VBAP WITH HEADER LINE, IT_VBAP2 TYPE STANDARD TABLE OF VBAP WITH HEADER LINE, IT_VBAP3 TYPE STANDARD TABLE OF VBAP WITH HEADER LINE, IT_XTAb TYPE STANDARD TABLE OF VBAK WITH HEADER LINE. data: cr_usrname type vbak-ernam, doc_nr type vbak-vbeln, doc_nr2 type vbak-vbeln.. cr_usrname = 'CURA'. doc_nr = '0000005081'. doc_nr2 = '0000005081'. SELECT * FROM VBAK INTO TABLE IT_XTAB WHERE ERNAM = CR_USRNAME. IF SY-SUBRC <> 0. MESSAGE E010(ZSOP). EXIT. ENDIF. SELECT DISTINCT MANDT VBELN POSNR KWMENG KBMENG MATNR ARKTX NETWR KWMENG VRKME WAERK LPRIO VSTEL ROUTE WERKS MWSBP FROM VBAP INTO CORRESPONDING FIELDS OF TABLE IT_VBAP FOR ALL ENTRIES IN IT_XTAB WHERE VBELN = IT_XTAB-VBELN ORDER BY PRIMARY KEY. it_vbap2[] = it_vbap[]. write: /, 'standard read table ------------- ', /. do 5 times. do. read table IT_VBAP2 WITH KEY VBELN = doc_nr. if sy-subrc <> 0. exit. endif. write: /,'Vbeln', it_vbap2-vbeln, ' Posnr', it_vbap2-posnr. delete it_vbap2 index sy-tabix. enddo. write: /, 'loop index:', sy-index. doc_nr = doc_nr + 1. call function 'CONVERSION_EXIT_ALPHA_INPUT' exporting input = doc_nr importing output = doc_nr. enddo. it_vbap3[] = it_vbap[]. write: /, 'binary read table ------------ ', /. do 5 times. do. read table IT_VBAP3 WITH KEY VBELN = doc_nr2 BINARY SEARCH. if sy-subrc <> 0. exit. endif. write: /,'Vbeln', it_vbap3-vbeln, ' Posnr', it_vbap3-posnr. delete it_vbap3 index sy-tabix. enddo. write: /, 'loop index:', sy-index. add 1 to doc_nr2. call function 'CONVERSION_EXIT_ALPHA_INPUT' exporting input = doc_nr2 importing output = doc_nr2. enddo. |
相关文章推荐
- BINARY SEARCH in read table statement
- [LeetCode]--315. Count of Smaller Numbers After Self(Binary Search Tree && Merge Sort)
- Why std::binary_search of std::list works, sorta ...(转载)
- Algorithms Review: Divide and Conquer(Binary Search & Merge Sort)
- merge sort and binary search recursive version
- STL 之search,search_n,sort,binary_search
- search - binary search/sort tree
- STL_Algorithm6--find, find_if, sort, binary_search
- uva 11368 - Nested Dolls(sort+greedy+binary_search)
- SAP Skill - How to search a field for which table it belongs
- map queue sort binary_search
- 编写一个类,其中包含一个排序的方法Sort(),当传入的是一串整数,就按照从小到大的顺序输出,如果传入的是一个字符串,就将字符串反序输出。
- 让linux Sort 按照 ASCII 顺序排序
- STL之sort(),binary_search(),lower_bound(),upper_bound()函数
- 二叉排序树/二叉查找树 (binary sort tree/ binary search tree)的C语言实现
- 关于sort、binary_search
- Linux Shell sort按照指定的顺序进行排列
- SAP Table and Field Search Stratagies
- 让linux Sort 按照 ASCII 顺序排序
- The bubble sort and Binary search