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