[login]

  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 来定义,否则系统会报出错误。

如:

RANGES: gr_werks FOR werks_d.

  1. 在 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

  1. 在 Function Module 中传输 Range Table

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

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.

[/login]

RIPRO主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
SapiBook » ABAP Range Table

发表评论