在ABAP中,RANGE表包含SIGN,OPTION,LOW,HIGH那它能不能和普通表一样进行操作,比如LOOP,APPEND,READ等等
为什么在检索DB时IN后面可以加RANGE表,在这个时候IN语句会自动去匹配LOW,HIGH的值吗?
为什么普通的标准表不可以?
还有,RANGE表使用时除了数据量的要求外还要注意什么? INDEX ,MODIFY之类的可以用吗?效率怎样?
不要从网上摘抄的,我自己也会做测试,但我需要专业的解释,知道的大侠讲一下啊,谢谢
为什么在检索DB时IN后誉迟面可以加RANGE表,在这个时候IN语句会自动去匹配LOW,HIGH的值吗?
--->是的,这是ABAP Open SQL 特有的功能。
为什么普通的标准表不可以?
--->如果内表有根range table 一样的结构的话,那么也是可以的。range table也是一种内表,只不过它的表结构被特定化了。
还有,RANGE表使用时袭虚宽除了数据量的要求外还要注意什么? INDEX ,MODIFY之类的可以用吗?效率怎样?
--->注意sing和option的值必须是大写,例如:“I” 不能为“i”。 INDEX 和 MODIFY也拍亮是可以用的,因为Range table也是一种内表。
Range table 和select-option 的变量是差不多的
sign = 'I' 或 sign = 'E' 是指INCLUED 和 EXCLUDE
OPTION = 'EQ' 或其他铅罩操作符。旅激陪拆蠢。
LOW 是指最少值(操作符是范围的话)
HIGH ( 如果操作符是‘EQ’,该field没用)
如果
data: lv_ebeln type ekko-ebeln.
ranges: r_ebeln for lv_ebeln.
r_ebeln-sign = 'I'.
r_ebeln-option = 'EQ'.
r_ebeln-low = '123456'.
append r_ebeln.
r_ebeln-sign = 'I'.
r_ebeln-option = 'EQ'.
r_ebeln-low = '234567'.
append r_ebeln.
r_ebeln-sign = 'I'.
r_ebeln-option = 'EQ'.
r_ebeln-low = '345678'.
append r_ebeln.
select * from ekko
into table XXX where ebeln in r_ebeln.
就会把EKKO表里的EBELN = '123456' OR EBELN = '234567' OR EBELN = '345678'的纪录选出来