3

SAP 相当明智地禁止您在数据库表中包含深层结构。然而,对于一个新项目,我有一个我想要持久存储的深层嵌套结构。这个结构包括另外十几个结构,每个结构都可能进一步嵌套。这种结构基本上是给定业务合作伙伴的数十个标准 SAP 表中包含的数据的快照。我目前没有预见到构建这个结构、用数据填充它并以 XML 的方式发送它的问题。

但是,我不知道应该如何将整个交易保存到数据库中。由于我不能将这种嵌套的混乱转储到单个表中,因此我必须基本上重新创建 Z 表中的每个基础表关系。由于这看起来工作量太大,除了乏味和容易出错之外,我正在寻找一种替代解决方案来存储这些数据。

我在其他编程语言中遇到过这种情况,我只需将整个对象的数据转储存储为 XML、平面文件或任何格式du jour。然后,当查询表并重建对象并将其加载到内存中时,可以只加载此数据转储。这是 ABAP 开发的有效方法吗?是否有用于(反)构造通用嵌套结构的现有类或函数模块,还是我必须从头开始编写自己的逻辑?或者有没有我想念的替代方案?

4

1 回答 1

6

这是一个常见的要求,有几种方法可以实现这一点。最常用的方法有这些:

  • 您可以将整个数据结构转换为 XML,或者更确切地说是asXML,它是以 XML 格式序列化的 ABAP 数据。这相当简单,只需CALL TRANSFORMATION与名为id. 这样做的缺点是 XML 可能非常冗长 - 这很容易将您的数据集炸毁 2-4 倍(YMMV)。

  • 您可以使用所谓的数据集群。这以二进制格式存储数据,也可以选择通过内部未记录的 ABAP 压缩算法进行压缩。这是一个关于执行时间和存储大小的有效过程,但它的缺点是如果不使用 ABAP 语句进行解压缩,则无法读取数据。虽然您总是可以转储一些 XML 文件以供进一步调查,但数据集群的内部存储格式几乎难以辨认。

于 2014-05-02T21:05:22.657 回答