日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

SAP ABAP二分查找(binary search)实际问题的深度分析

發布時間:2025/3/20 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SAP ABAP二分查找(binary search)实际问题的深度分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在維護公司SAP的過程中,遇到一個問題,困擾了很久!

簡單描述一下問題:(為了不牽扯公司業務,這是抽取問題)將主要的三個字段

存在一個內表TAB2,如圖所示:

需要強調一下,真是的內表比TAB2要多很多字段,(這是重點

?

首先對系統中真實的內表進行了排序,其中主要的三個字段的排序如TAB2所示,

(如果是內表TAB2,對COLUMN1排序的話,默認的COLUMN3也會自動安裝升序排列):

SORT??TAB2? BY COLUMN1?.

得到下圖:

?

使用二分查找:

READ?TABLE?TAB2?WITH?KEY?COLUMN1?=?'0800113864'?COLUMN2?=?'2012'?COLUMN3?=?'3018054318'?BINARY?SEARCH.

返回?SY-SUBRC?=?8.

即查詢沒有相關數據!

?

這就是問題的情況所在!!

?

我發現問題的過程可以理解為如下步驟:

1. 首先定位到5條記錄的中間那條記錄,即第3條記錄,然后對比COLUMN3。

2. 第3條記錄的COLUMN3數據如果不等于?'3018054318'?,則從第3條至第5條記錄的中間那條記錄,即第4條記錄,然后對比COLUMN3。

3. 第4條記錄的COLUMN3數據如果不等于?'3018054318'?,則比較第5條記錄然后對比COLUMN3。

4. 由于都沒有等于?'3018054318'?的記錄,則返回SY-SUBRC?=?8。

?

解決此問題的關鍵:

在于對內表的排序,如果在

READ?TABLE?TAB2?WITH?KEY?COLUMN1?=?'0800113864'?COLUMN2?=?'2012'?COLUMN3?=?'3018054318'?BINARY?SEARCH.

時候,使用到COLUMN1?=?'0800113864'?COLUMN2?=?'2012'?COLUMN3?=?'3018054318'?,則對此系統中內表排序的時候需要依照此三個字段進行排序。

?

--------------------------------------------

解決疑惑,一點點開心。希望對讀者有幫助。

總結

以上是生活随笔為你收集整理的SAP ABAP二分查找(binary search)实际问题的深度分析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。