ABAP學習筆記 4 22 READ語句相關

2021-05-22 08:06:08 字數 2599 閱讀 4187

用自定義關鍵字讀取單行

要從有自定義關鍵字的內錶中讀取單行,請使用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 ...