从 SAP BW/4HANA 模型生成计算视图
学习目标
在 SAP HANA 模型中消费由 SAP BW/4HANA 生成的计算视图
从 SAP BW/4HANA 对象生成外部 SAP HANA 计算视图
生成外部 SAP HANA 计算视图
在 SAP BW/4HANA 中,你可以为以下 SAP BW/4HANA 对象自动生成 SAP HANA 计算视图:
DataStore 对象(advanced)
CompositeProvider
InfoObject 特征
BW 查询
BW Workspace 的本地 CompositeProvider
生成的计算视图将 SAP BW/4HANA 模型开放给 SAP HANA 的建模环境。
以下是一些用例:
使用原生 SQL 前端,或使用无法消费 BW 查询的客户端来消费 SAP BW/4HANA 数据
完全独立于 SAP BW/4HANA 应用的服务和治理来消费 SAP BW/4HANA 数据
消费 SAP BW/4HANA 数据,并使用原生 SAP HANA 概念(SAP HANA 权限、生命周期管理等)管理访问
利用相比 SAP BW/4HANA 在原生 SAP HANA 中更强大和/或更易实现的 SAP HANA 计算或转换功能
如果属性外部 SAP HANA 视图中的设置已启用,SAP HANA 计算视图的自动生成会在 SAP BW/4HANA 对象激活期间进行。
生成的计算视图直接指向相应 SAP BW/4HANA 对象的相同数据和表。这些表位于 BW 管理的 SAP HANA schema 中。
提示
不支持 SAP HANA 计算视图直接消费 SAP BW/4HANA 拥有的表。更多信息请查看 SAP 注释 1682131:SAP BW tables in SAP HANA Information Views and ABAP CDS Views not supported
需要注意的是,生成的计算视图基于 XS classic。目前没有可用的 HDI 计算视图生成(参见 SAP 注释 2463312)。
尽管为 HANA 计算视图只设置一个环境看起来更整洁,但让 SAP BW/4HANA 的计算视图在 XSA 中生成并没有显著好处,XSC 已经足够。请记住,你绝不应在 SAP HANA 中直接调整生成的计算视图,因为它们是由 SAP BW/4HANA 生成的。你可以使用 SAP HANA Studio 显示生成的计算视图。此外,经过一些配置,你可以在 XSA 建模项目中访问生成的计算视图。例如,XSA 中的计算视图可以消费 XS Classic 中的任何计算视图,无论它是生成的还是手动创建的。
注意
在本课后面,你将了解在 XSA 建模场景中使用 SAP HANA classic 计算视图的前提条件。
生成的 SAP HANA 计算视图在预定义的 SAP HANA 内容包(Content Package)中管理。这些计算视图随相应的 InfoProvider 一起传输,并根据建模属性中的 "External SAP HANA View" 设置,在目标 SAP BW/4HANA 系统的 SAP HANA 数据库中生成。
注意
不要手动更改生成的 SAP HANA 视图,因为外部 SAP HANA 计算视图可能随时被系统覆盖。这意味着任何手动更改都会丢失。不过,你可以创建客户自己的 SAP HANA 计算视图,通过消费这些对象来定义稳定的客户逻辑。
另外还需考虑,不支持在 SAP BW/4HANA CompositeProvider 中直接使用生成的外部 SAP HANA 视图。相反,你必须将原始 SAP BW/4HANA 对象用作 PartProvider(请参阅 SAP 注释 2458572)。
外部 SAP HANA 视图的限制
并非所有 SAP BW/4HANA InfoProvider 属性都能添加到生成的 SAP HANA 计算视图中。以下属性不受支持:
ALPHA 转换和日期转换
显示属性
非累积关键指标仅在查询的 SAP HANA 视图中受支持
聚合设置为 No Aggregation 的关键指标
数据类型为日期或时间且聚合方式为 SUM 的关键指标
有关冷存储(Cold storage)数据限制的信息,请参见 SAP 注释 2032797。
对 InfoObject 的附加限制如下:
它必须是带主数据和文本的特征。
主数据访问必须是标准方式或 SAP HANA View。
未选中 Attribute only 复选框。
InfoObject 不得具有任何与权限相关且主数据访问不是标准方式的导航属性。
复合特征会作为简单 InfoObject 添加;复合属性会丢失,并且没有拼接后的值。
时间相关属性和文本的关键日期通过 SAP HANA 视图的输入参数 keydate 指定。如果在访问时未为该参数显式提供数据,则使用当前日期。该参数的格式为 YYYYMMDD,对应于 ABAP 类型 DATS。
SAP BW 查询的 SAP HANA 视图生成
查询由分析管理器编译为优化的执行计划。这意味着大部分内容在 SAP HANA 中执行,只有一小部分在 SAP BW 应用服务器中执行。在许多情况下,结果集是复杂的且多维的。
然而,在某些情况下,查询结果会以平面视图形式显示,并且可以完全在 SAP HANA 中计算。对于这些查询,可以从 SAP BW 生成 SAP HANA 计算视图。此视图可用于 SQL 等 SAP HANA 原生接口。
由 SAP BW 查询创建的 SAP HANA 计算视图无法与 BICS 等其他查询接口相比。这是因为 SAP HANA 计算视图无法执行通常由 SAP BW 应用服务器执行的任何计算,例如层次结构、零抑制或本地计算。因此,无法保证 SAP HANA 计算视图的结果与在 SAP BW/4HANA 应用服务器上执行该查询的结果完全一致。在此,查询所基于的 InfoProvider 的 SAP HANA 视图的限制同样适用于该查询。如果你在 SAP BW 建模工具中更改查询,关联的 SAP HANA 视图会自动更新。但是,全局元素不会更新。如果更改了全局元素,这些元素只有在查询再次激活后才会在查询中更改。关联的 SAP HANA 视图也会一并更新。
为查询生成外部 SAP HANA 计算视图还有附加限制。以下查询功能会被忽略,但仍可生成外部 HANA View(只是不含这些功能):
层次结构显示设置
特征的默认值
结构
条件
例外
本地计算
显示选项(例如小数位数)
零抑制
附加查询属性(缓存模式、读取模式、近线存储模式)
隐藏的关键指标
显示属性
导航期间的稳定数据
结构
关于非累积关键指标,请参见 SAP 注释 2032830。
以下功能不受支持,并且会妨碍从查询生成外部 SAP HANA 计算视图:
常量选择
单元格定义
异常聚合
注意
该清单并不详尽。请假定任何未包含在受支持 SAP BW 功能清单中的内容均不受支持。如果查询中包含这些功能中的任何一个,则无法生成 SAP HANA 计算视图无法生成。
启动下一个演示,探索为 InfoObject 生成外部 SAP HANA 计算视图:
为 InfoObject 生成外部 SAP HANA 视图
演示:Watch Demo(SAP 官方交互式练习)
生成的 SAP HANA 计算视图的管理与授权
外部 SAP HANA 视图的管理
在 SAP BW/4HANA 中,SAP GUI 事务 RS2HANA_ADMIN 为你提供整个系统中所有带外部 SAP HANA 视图的 SAP BW/4HANA 对象的概览,以及各种管理和检查功能。在定制(Customizing)中,你还可以为生成 SAP HANA 视图的权限进行设置。
检查外部视图
修复外部视图
修复作业日志
一致性检查工具,主要用于权限设置(事务 RS2HANA_CHECK )
定制的常规设置(事务 RS2HANA_VIEW ),例如标准 SAP HANA 包或权限分配。
SAP BW/4HANA Cockpit 中相应的应用数据管理 / 外部 SAP HANA 视图也提供相同的功能:
外部 SAP HANA 视图的权限管理
当在 SAP HANA 计算视图上执行查询时,数据直接从 SAP HANA 请求,完全不会经过 SAP BW ABAP 层。这意味着不会使用 SAP BW/4HANA 的功能,例如缓存和 OLAP 引擎。访问控制概念同样如此:权限不由 SAP BW/4HANA 管理,而是由相应的 SAP HANA 权限管理。
当从 SAP BW/4HANA 生成计算视图时,会自动生成与 SAP BW/4HANA 中的分析权限相对应的分析权限(analytical privileges)。
在生成计算视图之前,你需要定义一些重要设置,它们会影响权限生成的处理方式。
在 SAP HANA 和 SAP BW/4HANA 中,正确设置外部 SAP HANA 视图的生成有几个前提条件。
在 SAP HANA 中,要访问由 SAP BW/4HANA 生成的 SAP HANA 视图,你需要以下权限:
对象权限:对 _SYS_BI 的对象权限 SELECT。
对 REPOSITORY_REST(SYS) 的包权限 EXECUTE。
对存储生成的 SAP HANA 视图的内容包的 REPO.READ。
会话客户端必须与 SAP BW/4HANA 系统客户端一致。如果你通过角色管理权限分配,则这仅对 SAP
用户有效。如果你更倾向于直接分配权限,则对所有应能看到生成视图数据的 SAP HANA 用户都是必需的。
在 SAP BW/4HANA 应用中,从 SAP BW/4HANA 对象生成 SAP HANA 视图并使用其数据的前提条件如下:
必须将 SAP BW/4HANA 应用用户显式分配给 SAP HANA 用户。与 SAP HANA 上的 SAP BW 7.x 不同,此映射必须在 SAP BW/4HANA 的集中用户管理中手动定义。 在用户维护(事务
SU01)中开启 DBMS 选项卡的前提条件如下:在 DBCON 表中使用更改视图Description of Database Connections:概览(事务
DBCO)为数据库用户和数据库类型 HDB 定义数据库连接。在事务
SM30中维护视图 USR_DBMS_SYSTEM,以为 SAP BW 用户维护(事务SU01)增加一个新功能 DBMS,用于指定此分配。 SAP HANA 用户可以通过 RSUSR_DBMS_USERS 报表创建。有关详细信息,请参见 SAP 注释 1927767。必须创建 SAP BW/4HANA 分析权限。为相关 InfoProvider 中所有标记为与权限相关的特征定义它们。它们还必须包含 InfoProvider 的所有技术特征(0TCAVALID、0TCAIPPROV)、关键指标(0TCAKYFNM)和活动(0TCAACTVT)。将这些分析权限分配给 SAP BW/4HANA 用户。
在 SAP BW/4HANA 映像中定义分配类型和用户映射(事务
RS2HANA_VIEW或 SAP BW/4HANA Cockpit 中的应用:数据管理 / 外部 SAP HANA 视图)。
提示
事务
RS2HANA_CHECK会验证所有权限设置是否正确。
在混合建模场景中使用生成的 SAP HANA 计算视图
如前所述,请注意 BW 生成的计算视图部署在 XS Classic 中,而非 XS Advanced (HDI)。因此,默认情况下,使用 Web IDE for SAP HANA 的原生 SAP HANA 建模者无法访问 BW 生成的 SAP HANA 计算视图。原生 SAP HANA 计算视图的运行时对象位于容器拥有的 schema 中,而 BW 生成的计算视图的运行时对象始终位于 SAP 提供的固定 schema _SYS_BIC 中。因此,如果没有额外的定制,它们就在 HANA XSA 开发者容器的可及范围之外。这意味着 HANA 开发者无法在现代 SAP HANA HDI / XSA 计算视图中直接消费这些 BW 生成的对象。对于基于 SAP HANA XS classic 的传统开发,情况并非如此,BW 生成的对象对开发者是立即可访问的。
经过一些调整,可以从 HDI 容器向任何 HANA schema 提供所需访问权限,使你的 SAP HANA 计算视图能够消费整个数据库中的任何对象。这不仅包括 BW 生成的 SAP HANA 计算视图,还包括表、函数以及任何其他数据库对象。
要提供访问权限,需要完成以下一些关键步骤:
创建跨 schema 服务(Cross-schema Service) :这是在 XSA Cockpit 工具中完成的,属于一次性任务,通常由系统管理员负责。所有开发者可以使用同一个跨 schema 服务。在该服务中,你指定一个已经拥有完整权限的用户,可以访问开发者可能需要的任何对象。可以把该用户想象成持有所有房间钥匙的钥匙保管员,任何人都可能想要访问这些上锁的房间。当你通过引用一个描述所需确切访问权限的特殊文件(见下一步)构建项目时,该用户会自动授予你所需的访问权限。
为你的项目需求定义精确的权限 :这通过在你的 XSA 项目中创建一个 .HDBGRANTS 源文件来完成。该文件包含你应有权访问的所有 schema 的清单。要访问 BW 生成的 SAP HANA 计算视图,你应包含 _SYS_BIC schema。可以把该文件想象成列出你的实际项目需要访问的房间,这样在项目构建期间,该文件就被用来告诉那个强大的用户(步骤 1)需要为你的项目授予什么访问权限。但我们还没有指定我们想要访问的确切计算视图,目前只是对 schema 的访问权限(这基本上意味着我们现在可以访问该 schema 中的任何对象)。
定义同义词(Synonyms) ,指向你想要访问的特定运行时对象:在我们的例子中,我们应该创建指向 BW 生成的 SAP HANA 计算视图(_SYS_BIC 中的列视图)的同义词。同义词在你在 SAP Web IDE for SAP HANA 中的项目里创建。没有同义词,你在开发 XSA 计算视图时就无法引用特定对象。例如,你不是直接引用表或另一个计算视图,而是引用一个指向所需对象的同义词。可以把同义词想象成通往所需对象的快捷方式。
尽管你能够开发消费 BW 生成视图(classic XS)的 HDI / XSA 计算视图,但你无法查询该视图,因为你的 XSA 用户没有权限,而且为该视图生成的分析权限也没有分配给 XSA 用户。这必须手动完成。
SAP 提供了一个角色生成器(ZRS2HANA_CREATE_XSA_ROLES),它会收集所有包含生成的分析权限的 BW 生成视图角色,并为所有 BW 生成的视图授予所需的 SELECT 权限。
你按程序界面中列出的四个步骤依次操作。不过,你应该知道仍有一个手动步骤必须完成。那就是调整你 HANA 项目中的 .hdbgrants 文件,使其包含你使用该程序生成的全局角色名称。然后,当你构建 HDB 模块时,访问权限会自动授予你容器的 XSA 用户,从而使你能够从 Web IDE 预览数据。你还需要向每个 XSA 应用最终用户提供该角色。
启动下一个演示,探索在混合建模场景中使用生成的 SAP HANA 视图:
在混合建模场景中使用生成的 SAP HANA 计算
演示:Watch Demo(SAP 官方交互式练习)
本课其余配图









