zoukankan      html  css  js  c++  java
  • ABAP range 用法

    转自http://www.sapjx.com/abap-range-table.html

    1. Range Table 概述

    Range Table 为 SAP R/3系统标准内表的一种,结构与 Selection Table 一致,
    由 SIGN, OPTION, LOW 和 HIGH字段组成;

    可以通过 TYPE RANGE OF 语句或 RANGES 关键字定义 Range Table。

    Range Table 常用于Open SQL语句中的条件筛选,可以优化取数效率与程序性能。

     

    2.定义Range Table

    可以通过两种方式定义:

    1) TYPE RANGE OF…

    DATA rtab {TYPE RANGE OF type}|{LIKE RANGE OF dobj}

    [INITIAL SIZE n]

    [WITH HEADER LINE]

    [VALUE IS INITIAL]

    [READ-ONLY].

    2) RANGES

    语法:

    RANGES rtab FOR dobj [OCCURS n].

    * 全局变量
    DATA: gt_marc TYPE STANDARD TABLE OF marc.
     
    *-------------------------------------------
    * 通过 RANGE OF 定义
    *-------------------------------------------
    DATA: gr_werks TYPE RANGE OF werks_d,
          gw_werks LIKE LINE  OF gr_werks.
     
    * 宏定义
    DEFINE set_range.
      gw_werks-sign   = 'I'.
      gw_werks-option = 'EQ'.
      gw_werks-low    = &1.
      append gw_werks to gr_werks.
    END-OF-DEFINITION.
     
    set_range '1000'.
    set_range '1010'.
     
    SELECT *
      FROM marc
      INTO CORRESPONDING FIELDS OF TABLE gt_marc
      WHERE werks IN gr_werks.
     
    *-------------------------------------------
    * 通过 RANGES 定义
    *-------------------------------------------
    TABLES:marc.
     
    RANGES: gr_matnr FOR marc-matnr.

    这里需要注意,For后面字段必须为参考表的字段,不能使用 Data Element 来定义,否则系统会报出错误。

    3. 在 Subroutine 中传输 Range Table

    TABLES: mara.
     
    * 全局变量
    DATA: gt_mara  TYPE STANDARD TABLE OF mara.
     
    DATA: gr_matnr TYPE RANGE OF mara-matnr WITH HEADER LINE,
          gl_matnr LIKE LINE  OF gr_matnr.
     
    *&---------------------------------------------------------------------*
    *&      Form  frm_get_data
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *      -->PT_MARA    text
    *      -->PR_MATNR   text
    *----------------------------------------------------------------------*
    FORM frm_get_data  TABLES pt_mara  STRUCTURE mara
                              pr_matnr STRUCTURE gr_matnr.
     
      SELECT matnr mtart matkl
        FROM mara
        INTO CORRESPONDING FIELDS OF TABLE pt_mara
        WHERE matnr IN pr_matnr.
     
    ENDFORM.                    " F_GET_DATA

    4. 在 Function Module 中传输 Range Table

    当需要在 Function Module 中传输Range Table 时,可以直接参考预定义类型 Table:

    abap_11_Range_Table_Function

    FIELD-SYMBOLS < fs_line >  TYPE ANY.
    FIELD-SYMBOLS < fs_value > TYPE ANY.
     
    DATA lv_value TYPE char40.
     
    LOOP AT t_selection ASSIGNING < fs_line >.
     
      ASSIGN COMPONENT 'LOW' OF STRUCTURE < fs_line > TO < fs_value >.
      lv_value = < fs_value >.
     
      …
    ENDLOOP.
  • 相关阅读:
    Android笔记
    Scala中apply的用法
    MySQL备忘
    Spring test
    Scala
    Dubbo
    Scala元组
    Scala中None, Nil, Nothing的区别
    java多态与异常处理——动手动脑
    《大道至简》第七八章读后感
  • 原文地址:https://www.cnblogs.com/rainysblog/p/6424436.html
Copyright © 2011-2022 走看看