Business Objects生成意外的查询

时间:2014-07-10 08:27:44

标签: business-objects

我遇到了BusinessObject Universum的问题以及它生成查询的方式,从而产生了结果。 以下是背景:正在运行的机制已经实施。我试图复制SAME机制只是为了提供一个不同的领域。 以下是数据模型:http://tinypic.com/r/ng524g/8 功能的机制标有蓝色。我尝试实现但运行不正常的机制标有RED颜色。

在业务层,我已经定义了一个具有聚合感知功能的维度。此函数采用第一个 VWF_Party_Collection_A.Collectionstatus_CD 列(在更高级别)。如果用户从合约级别选择属性,则函数将 VWF_Contract_Collection_A.Collectionstatus_CD 列。

问题是当我从VWD_Kunde_A表中获取所有属性并且使用所提到的聚合感知函数(即Collectionstatus_CD)添加维度时,来自BO方的构造查询没有任何意义。这是:

SELECT
D_ATA_MV_FinanceTreasury.VWF_Party_Collection_A.Collectionstatus_CD,
D_ATA_MV_FinanceTreasury.VWD_Kunde_A.Namespace_TXT,
D_ATA_MV_FinanceTreasury.VWD_Kunde_A.Party_KEY,
D_ATA_MV_FinanceTreasury.VWD_Kunde_A.Legacy_ID
FROM
D_ATA_MV_FinanceTreasury.VWD_Party_A 
  LEFT JOIN D_ATA_MV_FinanceTreasury.VWF_Party_Collection_A
ON D_ATA_MV_FinanceTreasury.VWD_Party_A.Party_KEY=D_ATA_MV_FinanceTreasury.VWF_Party_Collection_A.Party_KEY,
D_ATA_MV_FinanceTreasury.VWD_Kunde_A
WHERE
  (
D_ATA_MV_FinanceTreasury.VWD_Party_A.Party_KEY=D_ATA_MV_FinanceTreasury.VWD_Kunde_A.Party_KEY  )
AND  
D_ATA_MV_FinanceTreasury.VWD_Kunde_A.Legacy_ID  =  102241978

请注意'FROM'部分中的奇怪结构(已添加逗号)。另一个奇怪和意想不到的结构是'WHERE'部分:

  ( D_ATA_MV_FinanceTreasury.VWD_Party_A.Party_KEY=D_ATA_MV_FinanceTreasury.VWD_Kunde_A.Party_KEY  )

正在运行的机制是将VWD_Kunde_A与VWF_Contract_Collection_A表连接起来,并产生正确的结果。

现在,我尝试在没有提到的仅包含VWF_Contract_Collection_A.Collectionstatus_CD属性的聚合感知函数的情况下定义维度。当我运行相同的查询时,BO产生CORRECT结果,并生成CORRECT(预期)查询。

这是我期待的查询:

SELECT
D_ATA_MV_FinanceTreasury.VWF_Contract_Collection_A.Collectionstatus_CD,
D_ATA_MV_FinanceTreasury.VWD_Kunde_A.Namespace_TXT,
D_ATA_MV_FinanceTreasury.VWD_Kunde_A.Party_KEY,
D_ATA_MV_FinanceTreasury.VWD_Kunde_A.Legacy_ID
FROM
D_ATA_MV_FinanceTreasury.VWD_Kunde_A LEFT JOIN D_ATA_MV_FinanceTreasury.VWF_Contract_Collection_A ON D_ATA_MV_FinanceTreasury.VWD_Kunde_A.Namespace_TXT = D_ATA_MV_FinanceTreasury.VWF_Contract_Collection_A.Namespace_TXT  AND  D_ATA_MV_FinanceTreasury.VWD_Kunde_A.Party_KEY = D_ATA_MV_FinanceTreasury.VWF_Contract_Collection_A.Party_KEY  AND  D_ATA_MV_FinanceTreasury.VWD_Kunde_A.Legacy_ID = D_ATA_MV_FinanceTreasury.VWF_Contract_Collection_A.Legacy_ID
WHERE
  D_ATA_MV_FinanceTreasury.VWD_Kunde_A.Legacy_ID  =  102241978

此外,我怀疑它可能与上下文有关。但是,我没有找到任何已经运行的机制和我试图复制的机制的上下文。因此,我没有为我要实施的机制实现任何上下文。

此时我无能为力,因为我尝试了所有我知道的事情。我很感激帮助。

谢谢! 甲

更新:似乎aggragate意识功能不起作用......这是如何定义的:

@Aggregate_Aware(D_ATA_MV_FinanceTreasury.VWF_Party_Collection_A.Collectionstatus_CD,D_ATA_MV_FinanceTreasury.VWF_Contract_Collection_A.Collectionstatus_CD)

(我刚刚复制了Kreditklasse的代码并对其进行了调整......这让我更加困惑......)

UPDATE_2:看起来好像aggragate意识不起我的情况,因为我选择了contract_context的所有属性,它仍然跳转到派对上下文。很困惑,因为当我选择Kreditklasse时,相同的机制正在按预期运作......

1 个答案:

答案 0 :(得分:0)

检查聚合导航。

设置聚合意识需要两个步骤(当然,除了正确定义表之间的连接外):

  1. 使用Aggregate_Aware函数
  2. 定义对象
  3. 通过操作>设置表格 - 对象不兼容性设置聚合导航。
  4. 听起来第二部分没有正确配置:确保任何需要第二个表的对象都标记为与第一部分不兼容。