基于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条回答
追夢秋陽
1楼-- · 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

一只江湖小虾
2楼-- · 2020-08-16 19:40

Hi Gregor,

谢谢您的解释。有一件事仍然困扰着我。 实际上,我描述的问题同时发生在DEV和QUA系统中,并且这些系统已经运行了一段时间。 但是,这个问题无处不在,而且相对较新。

让我更具体一点:这是BPC优化的解决方案,我们广泛使用了标准内容InfoObject,/ERP/GL_ACCT。 它基于FI主数据,并且随着我的同事调整会计科目表而经常且定期添加此数据。 反过来,我通过在各种计划方案中包括这些新主数据来使用它们。 直到某一时刻它工作得很好为止-在FI端添加了新帐户,在BPC中计划了新数据,使用该新帐户进行了优化,保存了计划缓冲区,一切工作正常。 然后发生了什么事,当我尝试保存计划数据时,我开始收到这些错误消息。

简而言之,它现在可以按照您的解释完全起作用,但是以前它确实可以以其他方式起作用。 有什么方法可以用来解决此问题? 我的意思是-某些控制数据一致性检查的全局参数已更改,是因为应用了一些注释还是手动进行了? 还是有些定制仅属于我的信息提供者? 保存计划数据时,我能以某种方式消除或绕过SID一致性检查吗?

最诚挚的问候,

Valeriy

d56caomao
3楼-- · 2020-08-16 20:04

嗨Valeriy,

我不知道我所描述的逻辑有任何变化,即在一致性检查和SID存在方面。 要解释为什么观察到"新"效果不是那么容易,而是取决于数据流,那么在运行时实际发生什么:

-有时在发布的数据中可能存在没有SID的新主数据值,然后可能 发生这样的情况:读取数据记录时创建了SID,然后在更改或保存包含这些SID或CHAVL(特征值)的新数据记录时进行SID一致性检查没有问题

-,但是在计划功能或查询中 可以使用不具有现有SID的新主数据值来创建新记录,然后系统应检测到丢失的SID; 何时发生这种情况取决于数据流

还可能发生某些计划步骤仍在ABAP中运行的情况,其中可能会在运行时创建SID。 根据PAK的性质,包括SID在内的所有值都必须存在于数据库级别,否则,您可能会发现各种数据不一致问题,包括错误或丢失的数据。 这就是为什么系统在PAK中使用SID存在检查,无法禁用该检查的原因。

PAK默认情况下也使用一种"惰性"方法,即HANA计划引擎只会得到一个 整体上例如的请求列表 PAK复制功能的实现。 默认情况下,HANA规划引擎仅收集这些操作,没有其他立即发生的情况。 在某个时间点(一种"刷新"),所有实际处理都发生在HANA级别上,HANA可以自由地优化所有这些已配置的操作。 通常在将数据写回到计划缓冲区或"保存"时发生刷新。 这些操作中的一些可能包含SID存在检查(其他许多检查包括NULL检查等),因此在刷新此类操作队列时会检测到错误。

注释1694205可能有助于分析影响

问候,

Gregor

一周热门 更多>