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