好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

以簇方式存储数据对象(doc14).doc

15页
  • 卖家[上传人]:m****
  • 文档编号:418396397
  • 上传时间:2023-04-03
  • 文档格式:DOC
  • 文档大小:123.47KB
  • / 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 [FROM ] [FROM ] ... TO MEMORY ID .此语句将列 表中指定的 数据对象存 储为 ABAP/4 内存中的数 据簇如果 忽略选项 FROM , 则将数据对 象 存储到自己 的名称之下 。

      如果使用 该选项,则 将数据对象 存储到 下面 ID 用于标识内 存数据,不 得超过 32 个字符EXPORT 语句总是完 全改写 ID 相同的任何 现有数据簇 的内容对于有表头 行的内表, 只可以存储 表本身,而 不能存储表 头行在 EXPORT 语句中,将 表名解释为 表这是例 外通常情 况下,语句 将表名解释 为表工作区 (参见访问内表 (页 8–4) )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'.在此示例中 ,文本字段 TEXT1 和 TEXT2 存储到程序 SAPMZTS1 的 ABAP/4 内存的 ID “文本”之 下,内表 ITAB 则存储到 ID “表”中。

      2从内存中读 取数据对象要将 ABAP/4 内存中的数 据对象读到 ABAP/4 程序中,请 使用下列语 句:语法IMPORT [TO ] [TO ] ... FROM MEMORY ID .此语句从 ABAP/4 内存的数据 簇中读取列 表中指定的 数据对象 如果忽略选 项 TO , 则将内存中 的数据对象 赋给程序中 的同名数据 对象如果 使用此选项 ,则将内存 中的数据对 象 写入字段 中 ID 用于标识内 存数据,不 得超过 32 个字符不必读取存 储在特定 ID 下的所有对 象相反, 可以从名称 中进行选择 如果内存 中不包含指 定 ID 下的对象, 则将 SY-SUBRC 设置为 4但是, 如果内存中 存在带此 ID 的数据簇, 无论数据对 象 是否也存在 ,SY-SUBRC 之值总是为 0如果簇 中不存在数 据对象 , 则目标字段 保持不变此语句不进 行这种检查 :即内存中 的对象结构 与要写入的 结构是否匹 配因为数 据是按位进 行传送的, 所以不匹配 的结构可能 会引起不一 致。

      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 ].如果不附加 ID , 则此语句删 除整个内存 ,包括此前 用 EXPORT 存储到 ABAP/4 内存中的所 有数据簇 附加 ID 之后,该语 句只删除用 此名称命名 的数据簇因为删除整 个内存会导 致任何系统 例程内存内 容的丢失, 所以只应使 用附加有 ID 的 FREE MEMORY 语句PROGRAM SAPMZTST.DATA: TEXT(10) VALUE '0123456789', IDEN(3) VALUE 'XYZ'.EXPORT TEXT TO MEMORY ID IDEN.TEXT = 'xxxxxxxxxx'.IMPORT TEXT FROM MEMORY ID IDEN.WRITE: / SY-SUBRC, TEXT.FREE MEMORY.TEXT = 'xxxxxxxxxx'.IMPORT TEXT FROM MEMORY ID IDEN.WRITE: / SY-SUBRC, TEXT.此示例的输 出为: 0 0123456789 4 xxxxxxxxxxFREE MEMORY 语句删除数 据簇“XYZ” 。

      因此,在 下一个 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 进行讨论。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.