Technology Blogs by SAP
Learn how to extend and personalize SAP applications. Follow the SAP technology blog for insights into SAP BTP, ABAP, SAP Analytics Cloud, SAP HANA, and more.
cancel
Showing results for 
Search instead for 
Did you mean: 
Former Member
0 Kudos

有用的链接:https://open.sap.com/courses/2/discussion_topics/249 下载第二周需要的示例代码

第一单元 数据库schema和表


第一节首先介绍了HANA资源库(repository)的好处。因为HANA的开发是逻辑代码与数据库对象紧密结合的,所以一定要有一种不同于传统数据库管理单元的方式来组织HANA开发对象。这就是引入HANA资源库的好处。幻灯片里列出来的,都比较抽象,但是在学习完本单元以后,你就能对其中的一些特性有深刻的认识。比如将HANA数据库对象定义绑定到开发项目中,这样连同代码一起打包进行管理和传输。

1

对于schema,对HANA有所了解的一定不陌生了。这是一个必须存在的对象并且是所有其它对象会包含在schema之下。
那么对于一个项目,我们一般需要一个专属的schema。在HANA开发项目中,我们不必去按照传统HANA建模的方式用SQLScript CREATE SCHEMA来创建。只需要建立一个.hdbschema文件并利用特定的语法,在激活这个文件时系统就自动为我们创建schema了。

2

3

顺便要在这里补充一句。当我们在项目之下建立文件件并且激活以后,会在当初选定的项目package下建立一个sub package。

HANA开发项目里对table的定义与HANA建模略有不同。因为是系统生成的(稍后讲解),系统为我们自动加上了package作为前缀,这样不同的包下面可以有相同的表名存在。其实从HANA的角度,这就是不同的表,因为他们的名字就完全不同。

4

对于HANA表的定义也是通过文件来完成的,只不过后缀变为.hdbtable。在最开始我提供的链接里有本节所需的所有定义语句供大家使用。

5

在我的HANA系统里,最终生成的结果如下,你们看到HANA自动生成了表并且用包作为前缀。

6

第二单元 数据库序列 和视图


本单元继续讲解如何通过文件的方式定义HANA的基本对象,当然这些对象目前为止还没有涉及到HANA特有的,所以只要是接触过数据库的都十分熟悉这些对象。数据库的序列是通过.hdbsequence文件定义的,而视图是通过.hdbview来实现的。对于视图的定义有一些需要说明的。从最开始链接里提供的示例代码可以看到视图定义的SQL语句对引号都进行了转义。因为这些代码要服务器端的JS解析执行,所以在JS的世界里,内容里有引号就需要通过\”进行转义。

7

8

第三单元 权限


权限(安全)在SAP HANA是一个很大的话题。这里只是简单地介绍了HANA开发所特有的。HANA的权限也与其它系统类似,具备角色的概念。而角色里面可以赋予的有SQL权限、分析权限(与BW分析权限类似)、系统权限(维护系统基础操作,比如创建用户或者创建schema)以及包的权限。

9

与数据库对象定义思想一样,HANA开发中角色的定义也是由文件来完成,以便能够一起打包传输,便于维护。不同的是,我们不需要创建.hdbrole文件,而是可以选择创建一个role,只不过本质上是生成了一个.hdbrole文件的模板。这个帮助,其实真的不大。

10

在对角色的定义里,有一点与传统HANA管理中的权限不同,就是引入了application privileges。目前它只能通过.xspriviledges文本文件来维护,没法通过HANA Studio的其它视图可视化维护。我想,应该是HANA Studio的功能没有跟上HANA开发功能的脚步。文本文件维护权限,这体验太差了。

11

关于这个特殊的权限的作用,本节还没有涉及。会在后面看到它的作用。关于HANA的权限问题,它本身的复杂是一方面,而HANA本身对权限做排错的不给力也造成了一定的麻烦。在练习时由于粗心的一个小错误,花费了我近15分钟的时间去排错。因为有些错误只能用nasty来形容,冗长但是模糊。.xsprivileges造成的,我写错了里面包的一个名字。另外一个小bug是,xsprivileges文件我激活后再次check系统就会报错,而文件本身是没有错误的,因为引用它的role的定义都已经成功激活了。这些编程的体验,是需要HANA studio改进的。

12

第四单元 介绍SAP_HANA_EPM_DEMO schema


第五单元 加载CSV文件数据


本节所介绍的功能是HANA应用开发所特有的,而不是告诉大家怎么将CSV文件作为数据源加载到HANA里。这里介绍的功能是将一些数据作为整个HANA开发项目包的一部分,在传输或者激活时,自动将部分数据加载到HANA里。当然这不适合业务数据的加载,而适用于一些元数据,项目配置数据。

13

要实现这个功能,我们需要三个文件。CSV数据文件,模型导入配置文件,数据导入配置文件。

14

其中模型导入配置文件以.hdbtim结尾,它定义的是源文件类型以及目标表。

15

数据导入配置文件以.hdbtid结尾,是将含有数据的源文件与目标表连接起来。这里要注意的是,模型导入配置文件中指定的是源文件类型,而非源文件名。SAP之所以用两个文件实现这样一个简单的功能是为了解耦。.hdbtim可以在某个SAP应用中默认定义,指定了一种导入模型,并且默认加载了自己的.hdbtid文件。而SAP的客户可以自行定义自己的.hdbtid文件,将额外的自己所需的数据加载到目标表中。

值得注意的是,一旦激活这三个文件,目标表中具备数据以后,再更改任意三个文件重新加载数据,也没法更改已经存在于HANA中的数据,也就是说如果新加入的数据与已有数据的主键是重复的,则HANA会略过这些数据。

在实际操作过程中,我一次性激活.hdbtim .hdbtib文件,我的系统(revision 56)会报错,错误指出.hdbtib引用的.hdbtim文件并不存在。可是当你忽略这些错误,.hdbtb文件又是成功激活的,并且数据也成功加载到HANA。因为一次性激活两个文件是视频演示中的方法,所以可能这又是HANA studio或者HANA自己的某个小bug。

第6-9单元 attribute view/Analytic View/Calculation View/Analytical privileges


此部分没有与HANA应用开发相关特别的内容,是对HANA建模的基础介绍。

第二周的内容结束了。基本这周还是在介绍SAP HANA的数据库和建模的一些基本概念。对于对HANA已经有所了解但是想学习XS开发的人来说并不是太难。