12.4. SELECT-OPTIONS
SELECT-OPTIONS selcrit FOR {dobj|(name)}
screen_options[OBLIGATORY|NO-DISPLAY][VISIBLE LENGTH vlen][NO-EXTENSION][NO INTERVALS][MODIF ID id]
value_options [DEFAULT val1 [TO val2] [OPTION opt] [SIGN sgn]][LOWER CASE]
[MATCHCODE OBJECT search_help][MEMORY ID pid]
該語句會生成一個名為selcrit選擇條件內表,具體請參數OPEN SQL章節中的 RANG條件內表
NO-EXTENSION:限制選擇表為單行,元素輸入后面不會出現按鈕
NO INTERVALS:只會出現LOW字段,To后面的HIGH字段不出現在選擇屏幕上,但是用戶仍然可以在Mutiple Selection窗口中輸入范圍選擇。也就是說:只要有按鈕,就可以選擇多個條件與范圍值
OBLIGATORY:只有前面一個框框中出現鈎,第二個框沒有,也就是說該選項只能LOW字段有效
DEFAULT:
TABLES: mara,marc.
SELECT-OPTIONS:werks FOR marc-werks OBLIGATORY DEFAULT 1001 TO 1007 SIGN I OPTION BT.
SELECT-OPTIONS:p2 FOR mara-matnr MODIF.
AT SELECTION-SCREEN OUTPUT.
p2-low = 'aaaa'.
APPEND p2 .
MEMORY ID:將第一個輸入框中的數據存放到SAP MEMORY中共享
12.4.1. 輸入ABAP程序默認值時,需要加上“=”
如果輸入框中輸入的值恰為ABAP程序中相應字段所對應的初始值時(如字符類型為空串,時間與數字類型為“0”串時),需要在第一個框前面選擇操作符,否則程序將會忽略這個值的輸入,即查詢所有的
12.4.2. 選擇條件內表多條件組合規則
((Select Single Values OR…) OR(Select Intervals OR…))( AND NOT Exclude Single Values) … ( AND NOT Exclude Intervals) …
("MATNR" = '1' OR "MATNR" >= '2' OR "MATNR" <= '3' OR "MATNR" > '4' OR "MATNR" < '5' OR "MATNR" <> '6' OR "MATNR" <> '7' OR "MATNR" LIKE '23%' OR NOT ( "MATNR" LIKE '24_' ) OR"MATNR" BETWEEN '8' AND '9' OR NOT ( "MATNR" BETWEEN '10' AND '11' )) AND"MATNR" <> '12' AND "MATNR" < '13' AND "MATNR" > '14' AND "MATNR" <= '15' AND "MATNR" >= '16' AND "MATNR" = '17' AND "MATNR" = '18' AND NOT ( "MATNR" LIKE '25%' ) AND "MATNR" LIKE '26_' AND NOT ("MATNR" BETWEEN '19' AND '20' ) AND "MATNR" BETWEEN '21' AND '22'
12.4.3. 使用SELECT-OPTIONS替代PARAMETERS
實際上PARAMETERS 類型的參數完全可以使用SELECT-OPTIONS來替代,下面就是使用這種替換方式,外表看上去與PARAMETERS是一樣的,但雙擊后可以出現操作符選擇界面,所以唯一不同點就是這個可以選擇操作符,而且這樣做的好處是:當不輸入值時,查詢所有的,但PARAMETERS值為空是查詢就是為空(或0)的值(如果此時要忽略這個條件,則要將單值轉換為Rang或者是分兩種情況來寫SQL條件):
TABLES: marc.
SELECT-OPTIONS: s_werks FOR marc-werks NO INTERVALS NO-EXTENSION.