存储深层/嵌套结构

时间:2014-05-02 15:58:30

标签: sap abap

SAP非常明智地禁止您在数据库表中包含深层结构。但是对于一个新项目,我有一个深度嵌套的结构,我想持久存储。该结构包括另外十二个结构,每个结构可能进一步嵌套。该结构基本上是给定业务合作伙伴的数十个标准SAP表中包含的数据的快照。我目前没有预见到构建这个结构的问题,填充数据并将其作为XML发送。

但是,我不知道如何将整个交易保存到数据库中。由于我不能将这个嵌套的混乱转储到单个表中,因此我必须基本上重新创建Z表中的每个基础表关系。由于这似乎太多了,除了繁琐且容易出错之外,我正在寻找另一种存储这些数据的解决方案。

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

1 个答案:

答案 0 :(得分:5)

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

  • 您可以将整个数据结构转换为XML,或者更确切地说是将XML格式化为ABAP数据的XML。它非常简单,只需将CALL TRANSFORMATION与名为id的内置转换一起使用即可。这样做的缺点是XML可能非常详细 - 这很容易将数据集炸毁2-4倍(YMMV)。

  • 您可以使用所谓的data cluster。这将数据存储为二进制格式,也可以选择压缩。这是一个关于执行时间和存储大小的有效过程,但它的缺点是您无法再次使用数据集群机制来读取数据。虽然您可以随时转储一些XML文件以供进一步调查,但数据集群的内部存储格式实际上难以辨认。