• range table


    abap range

    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- CARRID EQ 'LH'

    选择表:

    系统为每个SELECT-OPTIONS语句创建选择表。选择表的目的是按标准化的方式保存复合选择限制。它们可按多种方式使用。它们的主要目的是使用Open SQL语句的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和NOT BETWEEN一样(参见《检查字段是否属于某一范围》)。

    Ø         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语句》

    ranges s_HKONT for bsis-HKONT.

    s_HKONT-sign = 'I'.
    s_hkont-option = 'BT'.
    s_hkont-low = '0010010000'.
    s_hkont-high = '0010019999'.

    append s_hkont.

    s_HKONT-sign = 'I'.
    s_hkont-option = 'BT'.
    s_hkont-low = '0010020000'.
    s_hkont-high = '0010029999'.

    SAP 中SELECTION-OPTION 是个很强大的功能,在程序中也经常需要类似SELECTION-OPTION的功能,如果不画屏幕的话,SAP提供了RANGE来实现该功能,下面是一段简单例子代码。

    RANGES:s_belnr FOR bseg-belnr.
    DATA:   lw LIKE LINE OF s_belnr.

    "单值
    CLEAR lw.
    lw-sign = 'I'.
    lw-option = 'EQ'.
    lw-low = 'BB'.
    APPEND lw TO s_belnr.

    "区间
    CLEAR lw.
    lw-sign = 'I'.
    lw-option = 'BT'.
    lw-low = 'BB'.
    lw-high = 'CC'.
    APPEND lw TO s_belnr.

    *选项介绍:
    *1.SIGN  值为I和E I包含 E是排除 一般使用I
    *2.OPTION 如果HIGH 为空  为单值选择 有 EQ、NE、GT、LE、LT等逻辑操作  对于*的  CP包含  NP是排除
    *         如果HIGH 不为空 为区间选择 有BT,NB可选
    *3.LOW     低值
    *4.HIGH    高值

  • 相关阅读:
    POJ3687拓扑排序+贪心
    POJ3687拓扑排序+贪心
    POJ3614奶牛晒阳光DINIC或者贪心
    POJ3614奶牛晒阳光DINIC或者贪心
    POJ3070矩阵快速幂简单题
    POJ3070矩阵快速幂简单题
    POJ3040给奶牛发工资
    POJ3040给奶牛发工资
    #Leetcode# 78. Subsets
    #Leetcode# 89. Gray Code
  • 原文地址:https://www.cnblogs.com/eric0701/p/2767613.html
Copyright © 2020-2023  润新知