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