范围表包含一个高值和一个低值。它到底有什么用?
范围表可以在open sql
查询中使用(使用IN
子句)作为限制。您可以定义多个范围,以便在查询结果中包含或排除。例如:
report ZZTEST.
types:
lt_kunrng type range of kunnr_d.
data:
it_rnrng type standard table of lt_kunrng,
wa_rnrng type lt_kunrng,
it_kna1 type standard table of kna1.
START-OF-SELECTION.
move:
'I' to wa_rnrng-sign,
'EQ' to wa_rnrng-option,
'0001000000' to wa_rnrng-low,
'0002999999' to wa_rnrng-high.
append wa_rnrng to it_rnrng.
move:
'I' to wa_rnrng-sign,
'EQ' to wa_rnrng-option,
'0003500000' to wa_rnrng-low,
append wa_rnrng to it_rnrng.
select * from kna1 into corresponding fields of table it_kna1
where kna1~kunnr in it_rnrng.
这个例子手动定义了一个RANGE
表,添加了两行,然后用这个范围表查询透明表KNA1
。然后,内部表it_kna1
应该包含KUNNR
在1000000到2999999之间的所有KNA1
记录和KUNNR
在35000000之间的记录。因此,您可以在单个范围表中组合多个范围。
字段SIGN
包含'I'表示包含或'E'表示排除(这意味着这一行应该包含或排除匹配定义范围的记录),字段OPTION
定义比较器('EQ'表示等于,'GT'表示大于,'GE'表示大于或等于,等等)。HIGH
和LOW
字段为实际范围。如果你只想查询一个值,你不需要同时提供LOW
和HIGH
,你只需要提供字段LOW
(当然还有SIGN
和OPTION
)。
SELECT-OPTION
时,也会创建 RANGE
表。然后,用户可以使用选择屏幕来定义他们想要在报告中使用的范围。
REPORT ZZTEST.
TABLES: kna1.
DATA: it_kna1 type standard table of kna1.
SELECT-OPTION:
so_kndrng for kna1-kunnr.
START-OF-SELECTION.
select * from kna1 into corresponding fields of it_kna1
where kna1~kunnr in so_kndrng.
有关范围表的更多信息,您也可以参考此处的官方文档