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.

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM