READ語句學習

2021-05-31 22:22:27 字數 2611 閱讀 9973

**自:

用自定義關鍵字讀取單行

要從有自定義關鍵字的內錶中讀取單行,請使用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學習筆記 4 22 READ語句相關

用自定義關鍵字讀取單行 要從有自定義關鍵字的內錶中讀取單行,請使用read語句的with key選項,用法如下 語法read table into with key binary search 用 into 選項可以指定目標區域 如果 有表頭行,則可以忽略 into 選項。這樣,工作區域就成了目標區...

shell學習十六 read

例題1 如果讀入的不是整數或者引數不是兩個 可以判斷有沒有輸入內容 以上shell指令碼的執行會有什麼結果?如何解決這兩個問題?思考 1 輸入為兩個值過關。2 輸入均為整數過關。3 計算 方法一使用read root node01 day6 vi read1.sh bin bash read p p...

每日linux命令學習 read命令

read命令 作用 從標準輸入中讀取一行。語法 read ers a array d delim i text n nchars n nchars p prompt t timeout u fd name 描述 read 命令從標準輸入中讀取一行,並把輸入行的每個欄位的值指定給 shell 變數。標...