浅谈 ABAP 内表和工作区
来源:互联网 发布:淘宝严重违规48分申诉 编辑:程序博客网 时间:2024/05/21 08:54
浅谈 ABAP 内表和工作区
http://scnblogs.techweb.com.cn/xmtcanfly/archives/2.html
作者:Maoting.xia
时间:2010-4-30 9:30
这几天一直在跟同事讲内表和工作区的问题,网上介绍这方面的资料也比较多,今天顺便就这个问题整理下了自己的思路,希望对您在这个问题上有所帮助。
1、首先,我们应该先了解下:内表(internal table) 标题行(header line) 工作区(work area) 这三个不同概念(具体定义请自行查找,这里只讲思路)。在当你在创建一个内表的时候,你同时也声明了一个具有相同名称的标题行(header line),这是一个隐式的(implicit) 的工作区,当然在你定义内表的时候也可以选择无标题行。那么这个工作区是做什么用的呢?因为在对内表操作时,比如增加或者取回一条记录.我们必须暂时保存这条记录,而这条记录就保存在工作区里。来看一个例子:
data: begin of itab occurs 10 with header line,
ab type c,
cd type i,
end of itab.
Itab是一个内表,且有标题行(也有这样的理解:直接定义了内表itab,不使用工作区,系统自动产生同名工作区(itab)来处理数据,这总说法可能不容易能理解),这里所说的同名工作区即指标题行。
再看一个显示的(explicit)声明一个工作区:
data: wa_itab like itab。
用SAP library的说法,如果一个内表有标题行,则对其进行操作的ABAP语句会简洁一些,因为这些语句会自动认为标题行是一个隐式的工作区,来看下SAP library的例子:
Operations without header line
Operations with header line
Operations for all Table Types
INSERT INTO TABLE .
INSERT TABLE ITAB.
COLLECT INTO .
COLLECT .
READ TABLE … INTO .
READ TABLE …
MODIFY TABLE FROM …
MODIFY TABLE …
MODIFY FROM …WHERE …
MODIFY … WHERE …
DELETE TABLE FROM .
DELETE TABLE .
LOOP AT ITAB INTO …
LOOP AT ITAB …
Operations for Index Tables
APPEND TO .
APPEND .
INSERT INTO …
INSERT …
MODIFY FROM …
MODIFY …
但是这种用隐式的工作区简洁的写法的代码很难理解(系统对于隐式工作区的处理),所以还是定义另外一个不同名的工作来使用易于理解。
到这里相信你对于标题行和工作区的理解已经清楚了。来总结一下:标题行是一个和内表主体有着一样结构的字段的串,标题行只有一行,用于存放被操作的纪录,是内表的缺省的工作区。
2、再回头看下一个没有标题的内表:
data: itab1 like itab occurs 10.
类似这种like/like table of 定义的内表 如没有用with header line(声明标题行)则没有标题行。
那么occurs n 又是怎么回事呢?
因为在定义内表时系统会给你的内表分配空间,而occurs 就是用来定义这个大小的。
例如:当你知道可能每次用Select命中或交换的纪录数N时,可指明 occurs N.
但如用 occurs 0 声明时, buffers 由系统自动分配。
3、针对网上有说:标题行相当于一个缓冲区(buffers) ,我不能苟同这种说法
因为我们只有在内表定义时是用 occurs 命令 系统才会分配buffers ,而工作区则没有。
- 浅谈 ABAP 内表和工作区
- 浅谈 ABAP 内表和工作区
- 浅谈 ABAP 内表和工作区
- abap内表,标题行,工作区
- abap 工作区 结构 内表 区别
- ABAP工作区,内表,标题行的定义和区别
- ABAP工作区,内表,标题行的定义和区别
- 我们一起学ABAP(03)~内表、工作区(Work Area)和标题行(Header Lin)
- 工作区和内表
- sap --- ABAP 内表(internal table) 标题行(header line) 工作区(work area) 简介
- ABAP 内表(internal table) 标题行(header line) 工作区(work area) 简介
- ABAP 内表(internal table) 标题行(header line) 工作区(work area) 简介
- sap --- ABAP 内表(internal table) 标题行(header line) 工作区(work area) 简介
- abap内部表和工作区的区别
- abap中 结构 工作区和 表工作区 有什么区别
- 关于ABAP内表
- ABAP-内表
- ABAP动态内表
- Linux Kernel时间子系统之来龙去脉浅析
- 遇见PyCharm
- 分数拆分
- vc6.0 下配置opengl
- 【第一期】Mini2440开发板软件开发
- 浅谈 ABAP 内表和工作区
- 集中优势兵力,单点突破
- Linux内核学习之list_entry --- 用C语言实现泛型编程
- UVa414 Machined Surfaces
- wince实现NAND FLASH的扩展(64M->128M)
- 小明的调查作业
- 一篇有关内存对齐的文章
- 9,少年白_新华书店给我的启示
- 【C++进阶】C++函数调用过程深入分析