RANGES语句:要用与选择表相同的结构创建内表,可使用RANGES语句,如下所示:
语法:RANGES <seltab> FOR <f>.
该语句创建选择表<seltab>,该表参考数据库表的列<f>或内部字段<f>。选择表<seltab>必须在程序中填充。不必在程序中再用TABLES语句声明数据库表。
RANGES语句是下列语句的短格式:
DATA: BEGIN OF <seltab> OCCURS 10,
用RANGES创建的内表与选择表结构相同,但功能不同。
用RANGES语句创建的选择表:
Ø不是选择屏幕的一部分:它们在程序<prog>中不能用于数据传递,该程序由下列语句启动:SUBMIT <prog> WITH <seltab> IN <table>.
Ø不与数据库表相链接。这意味着:
ü
ü
ü
您可以象使用真正的选择表一样在开放式SQL语句的WHERE子句中和在带IN参数(参见《使用报表的选择标准》)的逻辑表达式中使用这些内表。
RANGES S_CARRID FOR SPFLI-CARRID.
S_CARRID-SIGN
S_CARRID-OPTION = 'EQ'.
S_CARRID-LOW
APPEND S_CARRID.
该示例中,内表S_CARRID按选择表的结构创建,并参考数据库表SPFLI的列CARRID。字段S_CARRID-LOW和S_CARRID-HIGH具有相同的类型CARRID。内表S_CARRID的表头行被填充并添加到表中。表中定义的选择条件与下列逻辑表达式的功能相同:SPFLI-CARRID EQ 'LH'
选择表:
系统为每个SELECT-OPTIONS语句创建选择表。选择表的目的是按标准化的方式保存复合选择限制。它们可按多种方式使用。它们的主要目的是使用Open SQL语句的WHERE子句(参见《使用报表的选择标准》)把选择标准直接传输到数据库表。
选择表是一个带表头行的内表。它的行结构是字段字符串,由四个组件构成,即SIGN、OPTION、LOW和HIGH。每个选择表行表示数据选择的条件:
Ø
ü
ü
Ø
ü
ü
Ø
ü
ü
Ø
如果选择表包含多行,系统将按下列规则执行数据选择:
Ø
Ø
Ø
如果选择表只具有SIGN字段等于E的行,系统将选择这些行所指定的集合之外的所有数据。
除了用SELECT-OPTIONS语句创建选择表,您可以用在《创建和处理内表》中描述的语句或RANGES语句,按相同的结构创建内表。这些表可以用与SELECT-OPTIONS语句创建的真正的选择表相似方法使用,但是有限制。有关RANGES语句的详细信息,参见《RANGES语句》