202X年创建和处理内表

上传人:tang****xu6 文档编号:134824578 上传时间:2020-06-09 格式:DOC 页数:34 大小:275.50KB
返回 下载 相关 举报
202X年创建和处理内表_第1页
第1页 / 共34页
202X年创建和处理内表_第2页
第2页 / 共34页
202X年创建和处理内表_第3页
第3页 / 共34页
202X年创建和处理内表_第4页
第4页 / 共34页
202X年创建和处理内表_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《202X年创建和处理内表》由会员分享,可在线阅读,更多相关《202X年创建和处理内表(34页珍藏版)》请在金锄头文库上搜索。

1、 8: 1创建和处理内表概览内容什么是内表内表的目的内表的结构标识表格行访问内表创建内表创建内表数 据类型创建内表数 据对象使 用内表填充内表读取内表更改和删除 内表行内表排序创建次序表循环处理比较内表初始化内表本节讨论内 表。除字段 串外,内表 还构成 ABAP/4 提供的另一 种结构化数 据类型。本节主题描 述在处理内表 中大量的数 据时,花费 的计算机时 间对性能来 说非常关键 。例如,要 获得最佳性 能,在“ABAP/4 开发工作台 ”初始屏幕 (或事务 SE30) 上选择“测 试 - 运行时间分 析 ”,在“内 表”下选定 “提示 & 技巧.”, 就会出现有 关如何改进 性能的不同

2、任务示例。1什么是内表下列主题提 供内表简介 :1内表的目的在 ABAP/4 中,主要使 用表格。表 格是 R/3 系统中的关 键数据结构 。长期使用 的数据存储 在关系数据 库表格中。 关于如何读 取和处理数 据库表格的 详细信息, 参见 读取并处理数据库表。除了数据库 表格,还可 以创建仅在 程序运行时 间内存在的 内表。ABAP/4 提供了针对 内表的不同 操作。例如 ,可以搜索 、附加、插 入或删除行 。内表中的行 数并不固定 。根据需求 ,系统可实 时增加内表 的大小。例 如,如果想 将某个数据 库表格读入 内表,不必 事先知道数 据库表格的 大小。该特 征项使得内 表使用起来 十分

3、方便, 同时还支持 动态编程。可以使用内 表在数据库 表格的子集 上执行表格 计算。例如 ,可以将数 据库表格的 某个部分读 入内表(参 见 将数据读入内表)。然后可 以从内表中 计算总和或 生成次序表 。内表的另一 种用处是根 据程序需要 重新组织数 据库表格的 内容。例如 ,可以从一 个或多个大 客户表格特 定的数据中 将与创建电 话清单有关 的数据读入 内表中。然 后可在程序 运行期间直 接访问该清 单,而不用 每次调用时 都执行耗时 的数据库查 询。除了在使用 来自数据库 表格的数据 时使用内表 外,内表还 是 ABAP/4 中用于在程 序中实现许 多复杂数据 结构的重要 特征项(参

4、见 结构化数据类型 (页 36) )。1内表的结构在 ABAP/4 中,可以区 别内表数据 类型(定义 内表的结构 )和内表数 据对象(实 际的内表而 且可以用数 据进行填充 )。内表数 据类型是数 据结构(可 用于将数据 对象说明为 内表)的抽 象定义。关 于数据类型 和数据对象 之间区别的 详细信息, 参见 声明数据 (页 31) 。数据类型内表是 ABAP/4 中两种结构 化数据类型 中的一种。 其它结构化 数据类型是 字段串(参 见 结构化数据类型 (页 36) )。内表包 括任意数据 类型相同的 行。行的数 据类型可以 是基本的或 结构化的。 该定义打开 了多种内表 结构,范围 从包

5、含一个 字段的行到 包含字段串 将内表作为 组件的行。可以用带 OCCURS 参数的 TYPES 语句将数据 类型定义为 内表(参见 创建内表数 据类型 (页 8) )。定义数 据类型时不 占用内存。数据对象数据对象包 含定义为内 表的数据类 型,是实际 使用的内表 。数据对象 占用内存, 可以对其行 进行填充或 读取。可以使用带 OCCURS 参数的 DATA 语句,或使 用 TYPE 或 LIKE 参数引用另 一个内表将 数据对象创 建为内表( 参见 创建内表数 据对象 (页 8) )。2标识表格行为了访问表 格的某一行 ,必须指定 可用于标识 该行的字段 或组合字段 。在关系数 据模型(

6、用 于在 R/3 系统中存储 长期使用的 数据)中, 用于该目的 的最小组合 称为关键字 。定义关键 字的字段称 为关键字段 。在关系数据 模型中,每 个表格至少 有一个关键 字(参见文 档 ABAP/4 词典 (页 Error! Not a valid link.) )。特殊唯 一关键字段 的该概念不 用于内表。但是 ABAP/4 提供了下列 特征项以便 用户访问内 表行:2内表索引索引是表格 行的序列号 ,不是表格 字段,但由 系统自动创 建和管理。可以用 DELETE、 INSERT、 MODIFY、 LOOP 和 READ 语句来使用 索引。在这 些语句中, 可以将索引 指定为文字 或

7、变量。处理完内表 的特定行后 ,系统字段 SY-TABIX 一般包含该 行的索引。2内表关键字有两种类型 的内表关键 字。自定义关键 字使用 READ 语句从内表 中读取行时 ,可以指定 自定义关键 字(参见 用自定义关 键字读取单 行 (页 8) )。缺省关键字根据定义, 内表的关键 字段是非数 字(类型 F、I 和 P)和非内 表的字段。 这些关键字 段形成内表 的标准关键 字。要获得带嵌 套结构(包 含字段串作 为组件的表 格行)的内 表标准关键 字,系统将 子结构分为 基本字段层 次。根据填充内 表的方式不 同,内表可 以包含带相 同标准关键 字的多行。用 COLLECT、 READ、

8、 SORT 和 SUM 语句使用内 表的关键字 段。如果标 准关键字段 是内表行的 第一个组件 ,这有助于 提高这些语 句的效率。 创建内表时 请记住这一 点。2访问内表内表是按行 进行访问的 。必须使用 某个工作区 域作为与表 格互相传输 数据的接口 。工作区域对 内表的行必 须是可转换 的(关于可 转换性的详 细信息,参 见 类型转换 (页 636) )。从内表中读 取数据时, 已定址的表 格行内容覆 盖工作区域 的内容。然 后可以在程 序中引用工 作区域的内 容。将数据 写入内表时 ,必须首先 在工作区域 (从中系统 可以将数据 传输给内表 )中输入数 据。为了避免不 一致,最好 是工作

9、区域 与内表行有 相同的数据 类型。创建 与内表兼容 的工作区域 的一种安全 步骤是在说 明内表和工 作区域时使 用相同的数 据类型。在该环境中 ,可以区分 ABAP/4 中两种类型 的内表的差 别:_ 带表头行 的内表_ 不带表头 行的内表如果创建带 表头行的内 表(参见 创建内表 (页 8) ),系统自 动创建与内 表行数据类 型相同的工 作区域。该 工作区域称 为表头行或 表格工作区 域,对内表 的作用与由 TABLES 语句创建的 数据库表格 工作区域相 同(参见 TABLES 语句 (页 320) )。表格工 作区域和内 表本身同名 。在所有用于 访问内表的 ABAP/4 语句中,可

10、 以指定要使 用的工作区 域(参见 使 用内表 (页 8) )。对于带 表头行的内 表,可以忽 略这一指定 。这样,系 统隐式使用 表格工作区 域:不带表头行 的内表没有 可以隐式使 用的表格工 作区域。要 访问没有表 头行的内表 ,必须在相 应的 ABAP/4 语句中显式 指定工作区 域。决定创建的 内表是否带 表头行时, 必须考虑是 喜欢隐式还 是显式用于 内表访问的 工作区域。请记住,对 于带表头行 的内表,内 表本身和表 格工作区域 同名。如果 在语句中使 用该名称, 系统将其解 释为表格工 作区域的名 称,而不是 表格本身( 对于将数据 读入内存或 从内存中读 取数据的语 句,这一点

11、 例外,参见 ABAP/4 内存中的数据簇 )。但在某 些语句中, 可以在名称 之后输入方 括号,定址 内表而不是 表格工作区 域,如下所 示:。3创建内表创建内表时 ,可以决定 是想先用TYPES 语句创建内 表数据类型 ,然后再创 建具有该类 型的数据对 象,还是想 直接使用 DATA 语句创建内 表数据对象 。既可以创 建带表头行 的内表数据 对象,又可 创建不带表 头行的内表 数据对象。下列主题描 述3创建内表数 据类型要创建内表 数据类型, 请使用 TYPES 语句,用法 如下(参见 TYPES 语句 (页 322) ):语法TYPES OCCURS .该语句通过 使用 TYPES

12、语句的 OCCURS 选项创建一 个内表数据 类型 。内 表中行的数 据类型在 中指定。要 指定行的数 据类型,可 以使用 TYPE 或 LIKE 参数(参见 DATA 语句的基本格式 (页 314) )。通过使用 LIKE 参数引用 ABAP/4 词典中定义 的对象,可 以创建内表 ,其行结构 与存储在词 典中的对象 相同且反映 数据库表格 的结构。这 在读取和处 理数据库表 格时非常重 要(参见 读取并处理数据库表)。 指定行的初 始号。将第 一行写入用 类型 创建的内表 数据对象之 后,就为指 定行保留了 内存。如果 添加到内表 中的行比 指定的要多 ,则自动扩 展保留的内 存。如果内

13、存中没有足 够空间可用 于内表,则 将其写入缓 冲区或磁盘 (分页区域 )。TYPES VECTOR TYPE I OCCURS 10.本示例创建 内表数据类 型 VECTOR, 其行包含基 本类型 I 字段。TYPES: BEGIN OF LINE, COLUMN1 TYPE I, COLUMN2 TYPE I, COLUMN3 TYPE I, END OF LINE.TYPES ITAB TYPE LINE OCCURS 10.本示例创建 内表数据类 型 ITAB, 其行与字段 串 LINE 结构相同。TYPES VECTOR TYPE I OCCURS 10.TYPES: BEGIN O

14、F LINE, COLUMN1 TYPE I, COLUMN2 TYPE I, COLUMN3 TYPE I, END OF LINE.TYPES ITAB TYPE LINE OCCURS 10.TYPES: BEGIN OF DEEPLINE, TABLE1 TYPE VECTOR, TABLE2 TYPE ITAB, END OF DEEPLINE.TYPES DEEPTABLE TYPE DEEPLINE OCCURS 10.本示例创建 与上例相同 的内表数据 类型(VECTOR 和 ITAB) 。然后创建 数据类型 DEEPLINE 作为字段串 ,包含这些 内表作为组 件。通过该 字

15、段串,数 据类型 DEEPTABLE 被创建为内 表。因此该 内表的元素 本身就是内 表。4创建内表数 据对象要创建内表 数据对象, 可以有几种 方式使用 DATA 语句(参见 DATA 语句 (页 314) )。可将 DATA 语句用于对于前两种 情况,创建 表头行可选 ,但对于用 新的行结构 创建的表格 ,则必须要 有表头行。4通过引用另 一个表格来 创建内表要通过引用 现有内表数 据类型或数 据对象来创 建内表数据 对象,可使 用 DATA 语句,用法 如下:语法DATA WITH HEADER LINE.通过使用 TYPE 或 LIKE, 可以使用 选项来引用 表格数据类 型或表格数 据对象(关 键这些选项 的详细信息 ,参见 DATA 语句的基本格式 (

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号