SAP非常明智地禁止在数据库表中包含深层结构。然而,对于一个新项目,我有一个深嵌套的结构,我想持久存储。该结构还包括另外12个结构,其中每个结构都可能被进一步嵌套。该结构基本上是给定业务合作伙伴的数十个标准SAP表中包含的数据的快照。我目前没有预见到构造这个结构、用数据填充它并将其作为XML发送的问题。
然而,我不知道该如何将整个交易保存到数据库中。由于我不能将这些嵌套的混乱转储到单个表中,因此我必须在z表中重新创建每个底层表关系。由于这似乎太多的工作,除了乏味和容易出错之外,我正在寻找存储这些数据的替代解决方案。
我在其他编程语言中遇到过这种情况,我只是将整个对象的数据转储存储为XML、平面文件或任何格式的du/em>。然后,当查询表并重建对象并将其加载到内存中时,才可以加载此数据转储。这是ABAP开发的有效方法吗?是否存在用于(de)构造通用嵌套结构的现有类或函数模块,或者我必须从头开始编写自己的逻辑?还是我错过了另一种选择?
这是一个常见的需求,有几种方法可以实现这一点。最常用的方法有:
-
您可以将整个数据结构转换为XML,或者更确切地说,将ABAP数据序列化为XML格式。这很简单,只要使用
CALL TRANSFORMATION
和内置的名为id
的变换。这样做的缺点是XML可能非常冗长—这很容易使您的数据集膨胀2-4倍(YMMV)。 -
可以使用所谓的数据集群。它以二进制格式存储数据,也可以通过内部未记录的ABAP压缩算法进行压缩。就执行时间和存储大小而言,这是一个有效的过程,但它的缺点是,如果不使用ABAP语句进行解压缩,则无法读取数据。虽然您总是可以转储一些XML文件以供进一步研究,但是数据集群的内部存储格式实际上是难以辨认的。