点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
我在由HANA支持的SAP BW中工作。 您可以在AMDP(ABAP托管数据库过程)中使用SQL转换数据。
我尝试并未能编写可以执行以下操作的脚本-
1)比较2个表中具有相同结构的每一列
2)确定每条记录和每一列在两个表之间的列值是否不同
3)列出每个记录和列的差异
4)程序应该是通用的,即,如果表结构发生更改,我将不必更改代码。 该代码应该能够确定表结构。
我确实考虑过使用"光标"。 没用 不知道这是因为游标在AMDP中不起作用还是因为它们不能使用内部表。
示例
表1
Col1 Col2 Col3
A01 1 2
A02 3 4
表2
Col1 Col2 Col3
A01 1 2
A02 3 5
结果
Col1 Col2 Col3 Col4
(ID)(颜色名称)(值1)(值2)
A02 Col3 4 5
sub>
哇,非常具有挑战性的要求(尤其是"通用")...
通常,我会在AMDP中尝试下一个(这不是解决方案,而是方向):
1。 每个表中的所有非键值都连接起来(类似这样)
为了通用,我们需要知道表中有哪些列,以便我们可以尝试使用" SYS"。" COLUMNS"
2。 联接表并比较连接的列以标识不同的行(使用大小写/时间)
3。 最后,如果您需要知道哪一列存在差异,请尝试使用" |"解析值 并比较
这似乎是非常复杂的解决方案(如果有可能的话)。
如果成功(请以任何方式),请分享...
BR,
这是" 使SQL成为动态类型的语言" ...
我看到了解决此问题的不同方法以及轻松解决一些较小问题的方法,但是在此之前,如果您可以在这里解释用例,那就太好了。
嗨,拉斯,
用例:
数据记录已上载到SAP Business Warehouse系统。
业务部门可以在进一步处理之前检查并根据需要纠正记录。 这些手动更改的记录保存在影子表中。 稍后,它们将覆盖原始记录中的值。
不幸的是,用于进行这些手动更改的ABAP程序未标记已修改的字段。进行了比较,以便可以将报告发送到数据创建者。 他们必须在数据源中进行相同的更正。 否则,我们将在下个月收到相同的错误。
更改记录的数量实际上很小,与每月发送的几千万条记录相比,数量级为1000。 比较是针对8个配对表(总共16个)和每月10个数据传递(国家)。
我不太确定"为每对表生成实际的比较例程"是什么意思。 现在,我们实现了一个简单的解决方案,其中我们为每个字段明确编写了一个比较代码。 对于每个成对的表,这是分别完成的。 这不是我们真正想要的,例如 如果表结构更改,则必须修改代码。 在ABAP中,有些事情比较容易。
我的意思是,您可以编写一个程序,该程序根据表结构为您创建"简单显式比较"的代码。
如果表在某个时间点发生更改,您只需要运行此生成器程序来更新比较。
鉴于其他信息,我觉得您已经找到了物有所值的最佳解决方案。 当然,用于任意表的通用记录比较和报告实用程序确实有用,但是构建该通用解决方案所需的工作可能会大大超过其收益。
您好,Andrey,
非常感谢您的解决方案。 在我的特定情况下,我已经知道哪些记录不同。 我需要标识具有不同内容的字段。 解析确实看起来很复杂。 我们当前的解决方案很简单,但不是通用的。 我只是为每个字段写一个比较。 不幸的是,这意味着如果基础表结构发生更改,我必须调整编码。
顺便说一句,ABAP中可能有通用解决方案。 回想起来,我可能应该选择该路径,因为记录的数量非常少(1000条记录)。 没有性能问题。
一周热门 更多>