基于HANA视图的InfoObject缺少SID

2020-08-16 19:30发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)你好 我正面临基于HANA视图...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


你好

我正面临基于HANA视图的InfoObjects问题。 这些InfoObject实际上是使用ERP中各种透明表的内容创建的。

问题在于,如果将记录添加到基础透明表中,则需要为相应的记录生成SID。 对于某些InfoObjects,它可以正常工作。 对于其他,事实并非如此。 因此,当新记录出现在InfoObject中时,在/BIC/S 中不会生成任何SID,并且如注释2471784

此注释又引用了注释2189861 。 该注释明智地建议"必须保证与HANA视图的主数据值相对应的SID值"。 这看起来很公平,但是关于如何做到这一点的更多信息却很模糊。

首先,它说:"在这种情况下,虚拟提供程序中所有基于HANA视图的信息对象的提供程序特定属性都不会标记为参照整数(标志'Ref。Integrity(HANA)为空)"。 这非常令人困惑,因为我的BW配置中没有单个"虚拟提供程序"。 此外,建议"如果从复合提供程序中的HANA视图中读取参考数据至输出选项卡上,并确保未为每个InfoObject设置标志'Referential Integrity',则为"。 这更加清楚,并且我确保在我的复合提供程序中没有为任何InfoObject设置此类标志。

但是,针对一些基于HANA视图的信息对象的新创建的记录进行计划的问题仍然存在,而且我不知道如何解决它。

该注释提供了一个选项,可以在每次发生问题时运行RSPLS_CREATE_MISSING_SIDS报告,但这似乎并不是信息对象的有效解决方案,因为每天在基础透明表中添加数十条甚至数百条新记录的信息对象。

最让我困扰的是,我无法理解为什么对于某些基于HANA视图的InfoObject而言,根本不会发生与SID相关的问题,而对于其他问题,则每次都会发生。 "问题"和"非问题" InfoObject的设置看起来几乎相同。

请告知。

谢谢

Valeriy

3条回答
追夢秋陽
2020-08-16 19:42

您好Valeriy

可能存在以不同角色(例如,

1作为BW InfoObject(特征)的基础

2作为BW InfoProvider的基础

基于HANA视图的特征(角色1 )可以在BW InfoProviders中使用(这似乎是您的用例)。 作为BW的某些部分-例如 分析引擎-首选SID格式来处理数据存在的问题:如何在运行时获取SID? 此外,对此问题有"报告"视图(即读取数据)和对此问题有"计划"视图(即数据一致性检查,创建新数据,写入数据)。

阅读:

在读取数据时,也必须读取SID,如果SID表中​​存在SID(参照完整性),这将是最有效的:一个人可以只对SID表(和X,Y使用联接) 导航属性表)。 如果SID不存在,则系统必须在读取数据时扫描主数据值并动态创建SID。

计划:

在计划尽可能多的操作时,还可以更改,创建或删除数据记录。 必须检查所有记录的计划约束(作为特征关系)的一致性; 但是一个非常基本的约束(通常被遗忘)是记录必须包含有效的主数据值,其中包括SID的存在。

基于HANA视图的特征,BW不能完全控制主数据 值和相应的SID。 这会导致您观察到问题。 理想的做法是在更改后可能会导致在基于HANA视图的特性中产生新值的情况下,通过某种"触发"来创建丢失的SID。 在ABAP层上,一种简单的方法可能是"轮询",即安排一个报告,以检查HANA数据库上是否存在可能导致HANA视图特征中出现新值的更改,然后调用该报告RSPLS_CREATE_MISSING_SIDS。

所需的SQL可能会连接HANA统计信息表m_table_statistics和某些表的表m_tables(在HANA视图中使用); 这可能看起来像这样(伪代码):

从m_tables中选择*作为T加入m_table_statistics作为ST
   在T.table_name = ST.table_name上
   (T.table_name <...您的表格...>)和
   (ST.last_modify_time <基于时间戳的标准>)

使用此结果,只有在真正需要的情况下,才有可能运行报告RSPLS_CREATE_MISSING_SIDS。 但是仍然存在一个时间间隔,该机制无法检测到更改。

您可能会说:在创建计划会话时,让计划执行此操作; 但是BW没有关于HANA对象的详细知识,并且这种检查可能非常昂贵; 并且仍然存在在计划会话中在HANA端创建新值的情况。

问候

Gregor

一周热门 更多>