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:

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.
时间: 2024-12-21 18:42:34

ABAP range 用法的相关文章

python 3 range用法

pytho range() 函数可创建一个整数列表,一般用在 for 循环中. 函数语法 range(start, stop[, step]) 参数说明: start: 计数从 start 开始.默认是从 0 开始.例如range(5)等价于range(0, 5); end: 计数到 end 结束,但不包括 end.例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5 step:步长,默认为1.例如:range(0, 5) 等价于 range(0, 5, 1) range(10)

转:http range 用法与说明

转: http://www.cnblogs.com/Googler/archive/2010/08/19/1803700.html HTTP RANGE Range,是在 HTTP/1.1(http://www.w3.org/Protocols/rfc2616/rfc2616.html)里新增的一个 header field,也是现在众多号称多线程下载工具(如 FlashGet.迅雷等)实现多线程下载的核心所在. Range 的规范定义如下:ranges-specifier = byte-ran

abap append 用法

[转自http://blog.chinaunix.net/uid-7982817-id-91999.html]Append用法总结 2008-11-14 11:42:19 分类: Syntax APPEND { wa        | {INITIAL LINE}        | {LINES OF jtab [FROM idx1] [TO idx2]} }    TO itab [SORTED BY comp]    [ {ASSIGNING <fs> [CASTING]} | {REFE

golang之range用法

range表达式迭代语法 range在go中主要是用来做迭代用的,它可以迭代:array,slice,string,map,channel.但是在迭代的过程中有些注意事项是需要牢记的,否则在实际使用过程中可能出现和你预期不符合的问题,而且很难排插到. 语法 0. var  x Type :x = range expresstion 1. x := range expression 2. x,y := range expression range 右侧的expresstion,它可以是数组,指向数

ABAP接口用法

1.定义接口INTERFACE intf [PUBLIC].   [components] ENDINTERFACE. 2.注意点: 2.1.接口中所定义的所有东西默认都是公共的,所以不用也不能写PUBLIC SECTION. 2.2.只有在接口中定义的常量(CONSTANTS)才可以使用 VALUE 选项来初始化,而DATA.CLASS-DATA定义的变量是不能初始化 2.3.接口定义中也只能包含成员声明部分,而具体的实现将在具体类中进行 2.4.如果要实现某个接口,则在类的公共声明PUBLI

一入python深似海--range()与for

range用法 使用python的人都知道range()函数很方便,今天再用到他的时候发现了很多以前看到过但是忘记的细节. 这里记录一下: range(1,5)#代表从1到5(不包含5) [1,2,3,4] range(1,5,2)#代表从1到5,间隔2(不包含5) [1,3] range(5)#代表从0到5(不包含5) [0,1,2,3,4] 再看看list的操作: array= [1,2,5,3,6,8,4] #其实这里的顺序标识是 [1,2,5,3,6,8,4] (0,1,2,3,4,5,

python学习笔记之-for循环

for循环需要预先设定好循环的次数(n),然后执行隶属于for的语句n次. 基本构造是 for 元素 in 序列: statement 举例来说,我们编辑一个叫forDemo.py的文件 for a in [3,4.4,'life']: print a 这个循环就是每次从表[3,4.4,'life'] 中取出一个元素(回忆:表是一种序列),然后将这个元素赋值给a,之后执行隶属于for的操作(print). 介绍一个新的Python函数range(),来帮助你建立表. idx = range(5)

关于bootstrap的datepicker在meteor应用中的使用(不包含bootstrap框架)

1.安装bootstrap3-datepicker包 meteor add rajit:bootstrap3-datepicker 2.使用方法 Example In your handlebars template: <input type="text" class="form-control" id="my-datepicker"> In client-side JS code: Template.mytemplate.rende

三、python运算符

1 /和//的区别:/结果保留小数,例如5/3=1.666   而5//3=1 2 *和**:算术运算中,第一个代表乘,第二个代表幂.再字符串操作中,第一个代表拼接多少个相同字符串,第二个类似,见如下代码: var = 2*3 print(var) #输出6 var =2**3 print(var) #输出8 var = 'hello' print(var*2) #输出hellohello print(str(var)**3) #不可以这样使用 3 python中的三种控制流语句,if for