abap range 或 Filter的说明
RANGES語句:要用與選擇表相同的結構創建內表,可使用RANGES語句,如下所示:
語法:RANGES<seltab> FOR<f>.
該語句創建選擇表<seltab>,該表參考數據庫表的列<f>或內部字段<f>。選擇表<seltab>必須在程序中填充。不必在程序中再用TABLES語句聲明數據庫表。
RANGES語句是下列語句的短格式:
DATA: BEGIN OF<seltab> OCCURS 10,
????????SIGN(1),
????????OPTION(2)
????????LOW? LIKE <f>,
????????HIGH LIKE <f>,
?????END OF <seltab>.
用RANGES創建的內表與選擇表結構相同,但功能不同。
用RANGES語句創建的選擇表:
不是選擇屏幕的一部分:它們在程序<prog>中不能用于數據傳遞,該程序由下列語句啟動:SUBMIT<prog> WITH<seltab> IN<table>.請注意,表<table>可以在調用程序中用RANGES創建(參見《調用報表》)。
不與數據庫表相鏈接。這意味著:
????????它們不被傳遞給連接數據庫(參見《自定義選擇標準與邏輯數據庫》)。
????????它們不能與邏輯表達式的短格式一起使用(參見《在邏輯表達式中使用選擇表》)
????????它們不能與《在GET事件中與CHECK語句一起使用選擇表》中描述的變體CHECK SELECT-OPTIONS一起使用。
您可以象使用真正的選擇表一樣在開放式SQL語句的WHERE子句中和在帶IN參數(參見《使用報表的選擇標準》)的邏輯表達式中使用這些內表。
RANGES S_CARRID FOR SPFLI-CARRID.
S_CARRID-SIGN?? ='I'.
S_CARRID-OPTION = 'EQ'.
S_CARRID-LOW???= 'LH'.
APPEND S_CARRID.
該示例中,內表S_CARRID按選擇表的結構創建,并參考數據庫表SPFLI的列CARRID。字段S_CARRID-LOW和S_CARRID-HIGH具有相同的類型CARRID。內表S_CARRID的表頭行被填充并添加到表中。表中定義的選擇條件與下列邏輯表達式的功能相同:SPFLI-CARRIDEQ 'LH'
?
選擇表:
系統為每個SELECT-OPTIONS語句創建選擇表。選擇表的目的是按標準化的方式保存復合選擇限制。它們可按多種方式使用。它們的主要目的是使用OpenSQL語句的WHERE子句(參見《使用報表的選擇標準》)把選擇標準直接傳輸到數據庫表。
選擇表是一個帶表頭行的內表。它的行結構是字段字符串,由四個組件構成,即SIGN、OPTION、LOW和HIGH。每個選擇表行表示數據選擇的條件:
????????SIGN?:SIGN的數據類型是C,長度為1。SIGN是標志,表示保存在OPTION中的運算符是否需要翻轉。允許值是I和E。
????????I表示“包含”(包含標準-運算符不翻轉)
?????????E表示“排除”(排除標準-運算符翻轉)
????????OPTION:OPTION的數據類型是C,長度為2。OPTION包含選擇運算符。如果SIGN包含E,運算符的作用就象它的前面有NOT(有關NOT的詳細信息,參見《組合幾個邏輯表達式》)一樣。下列運算符是可用的:
?????????如果HIGH是空的,您可以使用EQ、NE、GT、LE、LT、CP和NP。這些運算符在《編程邏輯表達式》中描述。運算符CP和NP沒有它們在通常邏輯表達式中所具有的范圍。只有當在輸入字段中使用了通配符(“*”或“+”)時它們才是有效的。沒有定義退出符號。
?????????如果HIGH已被填充,則可以使用BT(位于)和NB(不位于)。這些運算符的功能與BETWEEN和NOTBETWEEN一樣(參見《檢查字段是否屬于某一范圍》)。
????????LOW:LOW的數據類型與數據庫表的列類型相同,該表與選擇標準相連接。
?????????如果HIGH為空,LOW的內容定義單值選擇。它與OPTION中的運算符相結合,為數據庫選擇指定了條件。
?????????如果HIGH已填充,LOW和HIGH中的內容為間隔選擇指定上界和下界。與OPTION中的運算符相結合,該間隔為數據庫選擇指定了條件。
????????HIGH:HIGH的數據類型與數據庫表的列類型相同,該表與選擇標準相連接。HIGH中的內容為間隔選擇指定了上界。與OPTION中的運算符相結合,該間隔為數據庫選擇指定了條件。
?
如果選擇表包含多行,系統將按下列規則執行數據選擇:
???????組成在SIGN字段值為I(包含)的行上定義的集合聯合。
???????去掉在SIGN字段值為E(排除)的行上定義的集合聯合。
???????選擇結果集合。
?
如果選擇表只具有SIGN字段等于E的行,系統將選擇這些行所指定的集合之外的所有數據。
除了用SELECT-OPTIONS語句創建選擇表,您可以用在《創建和處理內表》中描述的語句或RANGES語句,按相同的結構創建內表。這些表可以用與SELECT-OPTIONS語句創建的真正的選擇表相似方法使用,但是有限制。有關RANGES語句的詳細信息,參見《RANGES語句》
總結
以上是生活随笔為你收集整理的abap range 或 Filter的说明的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 惨绝人寰的日期函数,用的方便
- 下一篇: SAP MM 移动类型-入门篇