用自定義關鍵字讀取單行
要從有自定義關鍵字的內錶中讀取單行,請使用read語句的with key選項,用法如下:
語法read table [into ] with key [binary search].
用 into 選項可以指定目標區域 。如果**有表頭行,則可以忽略 into 選項。這樣,**工作區域就成了目標區域。
系統讀取 中匹配 中所定義的關鍵字的第乙個條目。關於二分法搜尋選項的詳細資訊,參見二分法搜尋。
如果找到有適當關鍵字的條目,則將系統字段 sy-subrc設定為0,並且sy-tabix包含該行的索引。否則,將 sy-subrc設定為非0值 。
如下所述,可以定義多個關鍵字 :
定義一系列關鍵字段
要定義自己的一系列關 鍵欄位,請使用 with key 選項,用法如下:
語法....with key = ... = ...
自定義關鍵字包含**元件 ...。字段 ...是關鍵字段的內容必須匹配的值。
如果 的資料型別與資料型別 不相容,則 轉換為型別 。
可以用 () 代替 來實時設定關鍵字段。關鍵字段是字段 的內容。如果在執行時 為空,則系統忽略該關鍵字段。如果 包含無效的元件名稱,則發生實時錯誤。
使用者可以為任何在關鍵字中使用的元件指定偏移量和長度(參見指定資料物件的偏移量)。
將整行定義為關鍵字
通過使用 with key 選項可將內錶整行定義為其關鍵字 ,如下所示 :
語法....with key = ...
如果 的資料型別與**行的資料型別不相容,則將 轉換為** 行的資料類 型。
對於此類關鍵字,也可以選擇由某個基本資料型別或內錶直接定義的,而不是由 段串直接定義的特定內錶行。
將行首定義為關鍵字
要將內錶的行首定義為關鍵字,請使用 with key 選項,用法如下:
語法....with key ...
系統將(左 對齊)的行首與 進行比較。 不能包含內錶或包含內錶的結構。與上面兩個選項不同之處在於用 的資料型別進行比較。
示例:data: begin of line,
col1 type c,
col2 type p decimals 5,
col3 type i,
col4 type i,
end of line.
data itab like line occurs 10.
do 10 times.
line-col1 = sy-index.
line-col2 = sqrt( sy-index ).
line-col3 = sy-index ** 2.
line-col4 = sy-index ** 3.
enddo.
read table itab into line with key col3 = 9 col4 = 36.
write: / sy-subrc, sy-tabix.
read table itab into line with key col3 = 9 col4 = 27.
write: / sy-subrc, sy-tabix.
read table itab into line with key '2'.
write: / sy-subrc, sy-tabix.
其輸出為:
4 0
0 3
0 2
在此,建立包含四列的內錶。對**的10行進行填充之後,用自定義關鍵字讀取單行。有關鍵字段 col3、col4 的自定義序列的第乙個 read 語句失敗,第二個 read 語句找到索引為 3 的行。第三 個 read 語句搜尋以 「2」開始的**行並找到索引為 2的行。下圖顯示主要步驟:
示例:data itab type i occurs 10,
data square type i.
do 30 times.
square = sy-index ** 2.
enddo.
read table itab into square with key = 25.
write: sy-subrc, sy-tabix.
其輸出為:
0 5
在此建立包含基本型別 i 行的內錶。 填充完**之後,讀取值為 25 且索引為 5 的行。
二分法搜尋
用關鍵字讀取單行時,可以執行二分法搜尋以代替標準順序搜尋。為此,請使用read語句的二分法搜尋選項。
語法read table ..... binary search.
如果使用二分法搜尋選項,則必須按關鍵字 中指定的次 序對內表進 行排序。
如果系統找 到匹配指定 關鍵字的多 行,則讀取 索引最低的 行。
二分法搜尋 比線性搜尋 要快。因此 ,應盡可能 將內錶排序 並且使用 二分法搜尋 選項。
指定資料物件的偏移量
在 abap/4 中,可以在 所有處理數 據物件的語句中指定基本資料物件的偏移量值 。
為此,請在語句中指定 資料物件名稱,如下所 示:
語法[+][()]
對欄位 中從 +1 開始且長度 的部分執行該語句的操作。
如果未指定長度 ,則 對該字段 和結尾之間的所有位置進行處理。
ABAP學習筆記
assign利用offset語句靜態賦值,語法 assign gv name off len to 中間紅色的len必須為大於0的正整數或者 且off len的值必須小於變數gv name值的長度。如 assign gv name 6 to error assign動態分配表字段,語法 assing...
ABAP學習筆記 處理字串
color indigo size medium 一 移動字段內容 1 按給定位置數移動字串 語法 shift by places 將字段移動個位置,如果省略by places,則將解釋為乙個位置 如果是0或負數,則保持不變 如果超過長度,則用空格填充。可為變數。可以為 left 向左移動個位置,右...
ABAP學習筆記 基礎語法 03 賦值
願大家的學習,輕鬆且愉快。如果大家覺得有用,希望 關注,謝謝 每天一點abap知識。本篇我們簡單分享一下abap中賦值的語法內容。核心語法包括 move to write to move corresponding to 以及field symbols。正文1.move to 和 write to ...