
以簇方式存储数据对象(doc14).doc
15页1以簇方式存 储数据对象概览内容ABAP/4 内存中的数 据簇 在 ABAP/4 内存中存储 数据对象 从内存中读 取数据对象 删除内存中 的数据簇 数据库中的 数据簇 簇数据库 在簇数据库 中存储数据 对象 创建数据簇 目录表 从簇数据库 中读取数据 对象 从簇数据库 中删除数据 簇 用开放式 SQL 语句访问簇 数据库 可以用数据 簇方式对 ABAP/4 程序的任何 复杂内部数 据对象进行 分组保存, 并将其临时 存储在 ABAP/4 内存中,或 长时间存储 在数据库中 在下列主题 中,您将学 到更多有关 在内存和数 据库中存储 数据簇的知 识1ABAP/4 内存中的数 据簇可以在 ABAP/4 内存中存储 数据簇ABAP/4 内存是分配 给特定事务 的存储区, 任何模块都 是用关键词 CALL 或 SUBMIT 从中进行调 用的关于 事务流的详 细信息,参 见编写 ABAP/4事务 (页 Error! Not a valid link.) ABAP/4 内存与在事 务期间生成 该内存的 ABAP/4 程序或程序 模块无关 这意味着在 同一事务中 ,存储在 ABAP/4 内存中的对 象可由任何 ABAP/4 程序重新读 取。
但本节 所说的 ABAP/4 内存与不受 事务限制的 全局 SAP 内存不同( 对于示例, 参见 将 SPA/GPA 参数传送到 事务 (页 Error! Not a valid link.) )ABAP/4 内存允许跨 越多个程序 层次,在不 同模块化单 元之间进行 数据传递 例如,可以 在下列单元 之间传递数 据:_ 报表和其 他 SUBMIT 调用的报表_ 事务和报 表_ 不同对话 模块_ 程序和功 能模块等等离开事务后 ,就释放该 内存使用 EXPORT TO MEMORY 语句在内存 中存储数据 对象使用 IMPORT FROM MEMORY 语句从内存 中读取数据 对象使用 FREE MEMORY 语句从内存 中删除数据 簇2在 ABAP/4 内存中存储 数据对象要将数据对 象从 ABAP/4 程序写入 ABAP/4 内存,请使 用下列语句 :语法EXPORT
如果使用 该选项,则 将数据对象
2从内存中读 取数据对象要将 ABAP/4 内存中的数 据对象读到 ABAP/4 程序中,请 使用下列语 句:语法IMPORT
PROGRAM SAPMZTS1.DATA TEXT1(10) VALUE 'Exporting'.DATA ITAB LIKE SBOOK OCCURS 10 WITH HEADER LINE.DO 5 TIMES. ITAB-BOOKID = 100 + SY-INDEX. APPEND ITAB.ENDDO.EXPORT TEXT1 TEXT2 FROM 'Literal' TO MEMORY ID 'text'.EXPORT ITAB TO MEMORY ID 'table'.SUBMIT SAPMZTS2 AND RETURN.SUBMIT SAPMZTS3.程序的第一 部分对应于在 ABAP/4 内存中存储 数据对象 (页 2) 中的示例 当前示例也 以 SUBMIT 调用程序 SAPMZTS1 和 SAPMZTS2 通过在 ABAP/4 编辑器中双 击程序名生 成和维护 SUBMIT 后面指定的 程序关于 SUBMIT 的详细信息 ,参见调用报表 (页 Error! Not a valid link.) SAPMZTS2 的示例:PROGRAM SAPMZTS2.DATA: TEXT1(10), TEXT3 LIKE TEXT1 VALUE 'Initial'.IMPORT TEXT3 FROM MEMORY ID 'text'.WRITE: / SY-SUBRC, TEXT3.IMPORT TEXT2 TO TEXT1 FROM MEMORY ID 'text'.WRITE: / SY-SUBRC, TEXT1.SAPMZTS3 的示例:PROGRAM SAPMZTS3.DATA JTAB LIKE SBOOK OCCURS 10 WITH HEADER LINE.IMPORT ITAB TO JTAB FROM MEMORY ID 'table'.LOOP AT JTAB. WRITE / JTAB-BOOKID.ENDLOOP.输出位于两 个连续的屏 幕上,如下 所示:和SAPMZTS2 试图从数据 簇“文本” 中读取不存 在的数据对 象 TEXT3。
因此,目标 字段 TEXT3 保持不变 现有数据对 象 TEXT2 被放到 TEXT1 之后两种 情况中, 因为簇“文 本”包含数 据,SY-SUBRC 都被设置为 0SAPMZTS3 将内表 ITAB 从簇“表” 中写入内表 JTAB 两个表结构 一样,同为 ABAP/4 词典表 SBOOK 结构4删除内存中 的数据簇要删除 ABAP/4 内存中的数 据对象,请 使用下列语 句:语法FREE MEMORY [ID
因此,在 下一个 IMPORT 语句之后, 系统字段 SY-SUBRC 被设置为 4,而目标 字段保持不 变5数据库中的 数据簇可以将数据 簇存储到 ABAP/4 词典的特定 数据库中 就是所谓的 ABAP/4 簇数据库, 其预定义结 构为:该方法允许 单步存储任 何具有深结 构的复杂数 据对象,而 不必将其调 整为关系数 据库的平面 结构这样 ,在整个系 统中都可使 用该数据对 象,并且每 个用户都可 对其进行访 问要使访 问成功,必 须知道存储 对象的数据 类型在簇数据库 中存储数据 ,对于支持 有关关系数 据库信息的 分析结果十 分有用例 如,如果要 从所有分支 机构的人员 数据中生成 销售额最高 的客户清单 或者完整的 通讯录,就 可以编写 ABAP/4 程序,让程 序来解决此 类问题,并 将结果存储 为数据簇 如果需要刷 新存储的数 据簇,可以 在后台定期 运行这些程 序要使用 该结果,可 以使用只访 问该数据簇 的其他程序 因为不必 在每次使用 结果时都访 问关系数据 库中的分布 式数据,并 且也不必每 次都重新生 成结果,所 以,此方法 可以很大程 度上减少系 统的响应时 间。
存储数据簇 是专就 ABAP/4 而言尽管 也可以使用 SQL 语句访问簇 数据库,但 是,只有 ABAP/4 语句能够对 已存储的数 据簇结构进 行解码使用 EXPORT TO DATABASE 语句将数据 对象存储到 簇数据库中 使用 IMPORT FROM DATABASE 语句为数据 簇生成目录 表,并从簇 数据库中读 取数据对象 使用 DELETE FROM DATABASE 语句从簇数 据库中删除 数据簇关于使用开 放式 SQL 语句访问簇 数据库的信 息,参见5簇数据库簇数据库是 ABAP/4 词典中的特 殊数据库 用于存储数 据簇其行 结构被划分 为部分标准 化的开始区 (由多个字 段组成)和 一个用于存 储数据的大 的区域下列主题介 绍建立簇数 据库的规则 ,同时还就 系统定义的 簇数据库 INDX 进行讨论。
