天天看點

ABAP 使用Select Options代替Parameters

我們經常會遇到如下的需求,在頁面的幾個輸入框中輸入參數,然後在根據輸入條件顯示結果集清單。這是最常見的report形式。可是問題是,在使用parameters作為參數的時候,某一項的值沒有輸入,sql執行後的結果與我們期望的不相符,根源在于某一字段為空,查詢條件就會去搜尋這一字段為空的值,結果往往是沒有符合條件的結果。

對應這種情況,可以采取多種方法解決,如使用range,或者使用動态sql語句。但是也可以使用select options 來代替parameters進行輸入參數定義。因為select options定義出來的實際上是一個内表,在查詢的時候使用IN,即使沒有輸入,查詢語句會忽略這一項的比對,而不會取資料庫裡找尋沒有值或為空的記錄比對。這樣的查詢結果才是我們所需要的。

然而,select options 預設會産生兩個輸入框,這與parameters有些不同,不過沒有關系,在定義select options的時候隻需要加上一些特殊操作即可以隻顯示第一個輸入框,這樣在外觀上與parameters就很相似了。

如: SELECT-OPTIONS: so_gjahr FOR bsik-gjahr NO INTERVALS . 這樣在查詢的時候就不能按照 '=' 來設定查詢條件了,而應該應 'IN' 來設定這個條件,即:…… where bsik-gjahr IN so_gjahr ……。這樣,即使so_gjahr即使沒有輸入也不會影響到最終查詢的結果。