大家都知道SAP HANA项目打包成Delivery Unit(缩写为DU)。依照“官方”的开发模式,特别是整个团队仅仅使用一个HANA Instance进行项目开发,因为HANA本身还在不断成长中,会遇到各种奇葩问题导致打包出来的DU在新环境中import 失败。那些失败Error Message trace,对于开发人员基本上没什么帮助。

并且在项目开发过程中,总会有些队友会不按常理出牌,终于导致项目DU无法使用,特别是在測试资源匮乏的情况下,非常多问题不能及时暴露。当你看到满屏幕的错误,你还有信心和耐力分析下去哇?看HANA Trace?你知道怎么设置么?

在这里整理一些常见问题来给大家一些启示。

View(视图)的建立不加depends_on_xx

问题分析:

在使用hdbview时,有些伙伴们习惯把在console中query语句直接黏贴到hdbview中完毕了事。并且这种hdbview在单独Activate时,毫无问题都能够Activate成功。而导出的DU想往新环境中部署就出问题。

在单独创建时,全部引用的table、view都已经存在,Activate肯定成功。并且在开发过程,基本上不会遇到先后关系,你引用的永远是存在的table、view。比方以下的样例我们称它为viewA,那么viewA-> com.sap.test.tables::02_HDB_DEPARTMENT_VIEW。而在DU导入过程中HANA会进行优化处理,对objects进行Activate顺序的先后处理,这样就非常easy发生viewA先与com.sap.test.tables::02_HDB_DEPARTMENT_VIEW创建。DU导入失败,假设整个项目中view都没有加dependence信息,那就满眼的Error,请问怎样下手。并且改动了一处,根本不解决这个问题,看不出效果。非常多人就此放弃分析…

解决方式:

schema="MYSCHEMA";

query="SELECT * FROM \"MYSCHEMA\".\"com.sap.test.tables::02_HDB_DEPARTMENT_VIEW\"";

depends_on_view=["com.sap.test.tables::02_HDB_DEPARTMENT_VIEW"];

创建、改动hdbview必须检查depends_on_view和depends_on_table。能够写个python脚本去检查或跟新这些代码,在每一个伙伴提交代码前都执行一次。或者就依靠CI环境高速反馈问题,拖的时间越久越难分析。

使用Calculation View用call却不用select

问题分析:

创建Calculation View,一般在Activate后会在_SYS_BIC下生成一个package/viewname/proc这样一个procedure。非常多“用心研究”的伙伴发现都发现这个procedure,假设在另外一个Calculation View直接call这个procedure写起代码更简单,而且他自己新创建的这个Calculation View,Activate全然没有问题,开心的不得了,还把这个新发现分享给其它同仁。

结果打包出来的DU重新嗝屁了。问题原因同上,Calculation View没有显示的写出dependency的信息,HANA自身会依据你object的代码分析出来Calculation View A依赖于Calculation View B,前提是你得按游戏规则出牌,你得用select Calculation View B with parameters

解决方式:

vals = SELECT * FROM "_SYS_BIC"."mytest/cv_test_filtergroupid"(placeholder."$$In_Filter_Group_ID$$"=>:In_Filter_Group_ID);

Calculation View的使用必须用Select

the circle dependence(循环引用)问题

问题现象:

在Activate All或者导入DU时,出现循环引用。

在HANA中循环引用分两种

1. Object 自身的循环引用

A->B->C->A,这种循环发生的情况比較少,但不代表没有。

2. Object Type间的循环引用

这个情况发生在procedure和hdbprocedure中,比方procA –> hdbprocB -> procC,这样就会出现循环引用。

解决方式:

dot -Tpdf <file_name> -O

把这些信息可视化,dot是一个开源的免费的可视化工具,然后找到循环引用的地方。

假设是procedure的问题,能够升级到HANA SP8,或者转化为同一种object type。

SAP HANA开发中常见问题- 基于SAP HANA平台的多团队产品研发的更多相关文章

  1. “多团队大规模”开发模式 - 基于SAP HANA平台的多团队产品研发

    应用SAP HANA “官方”开发模式的伙伴们在转到“多团队大规模”开发模式时会遇到各式各样的心理不适应的状况,各种纠结.比如GIT Repository和HANA Repository冲突什么的. ...

  2. SAP HANA 开发模式 - 基于SAP HANA平台的多团队产品研发

    “基本”开发模式 Windows: Unix/Linux: 在基本模式下我们可以通过regi来进行激活我们的object.Regi是一个类git功能的,方便和HANA repository交互的一个命 ...

  3. 基于SAP HANA平台的多团队产品研发

    工欲善其事必先利其器.要提高多团队的开发效率,而且还是在SAP HANA平台上,建议大家还是本着“慢就是快”的原则,不要急功近利,在没有准备好团队开发的架构时就匆忙开始功能的开发.匆忙功能开发就算了, ...

  4. 【ABAP系列】SAP ABAP 开发中的SMARTFORMS 参数

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP 开发中的SMA ...

  5. iOS开发中常见问题集锦

    在iOS开发中,会出现各种各样的问题.今天,就把这些常见的问题以及各位大牛的解决方案汇总下,方便以后查阅: 常见错误: 1. linker command failed with exit code ...

  6. MyBatis 项目开发中是基于 XML 还是注解?

    只要你对 MyBatis 有所认识和了解,想必知道 MyBatis 有两种 SQL 语句映射模式,一种是基于注解,一种是基于XML. 基于 XML <mapper namespace=" ...

  7. drf开发中常见问题

    开发常见问题及解决 问题: 一.本地系统不能重现的bug 二.api接口出错不能及时的发现或难找到错误栈 三.api文档管理问题 四.大量的url配置造成url配置越来越多难以维护 五.接口不及时去更 ...

  8. Android开发中常见问题分析及解决

    最近公司有新的业务需求,需要开发一款APP,因为我开发过Android APP(我想告诉他们,那是4年前的事了,嘤嘤嘤),就把开发任务交给我了,当然也不是我一个人啦,让我组开发小组,说白了,就是让我来 ...

  9. Ionic开发中常见问题和解决方案记录

    1npm按装包失败 更换源:npm config set registry https://registry.npm.taobao.org 或者使用cnpm sudo npm install -g c ...

随机推荐

  1. AndroidUI组件之ListView小技巧

    android:fadingEdge="none"//出去黑影  android:listSelector="@android:color/transparent&quo ...

  2. cocos2d-x V3.0 呼叫加速度计 Acceleration

    今天克服了一个问题,我觉得非常酷 哈哈. 今天得到解决cocos2d-x 3.0 呼叫重力加速器问题,上网查了很多资料 发现是不够,不解决这个问题,我不知道如果我使用3.0 这一问题的版本号,但是,这 ...

  3. win10无法新建文件夹怎么办 win10右键新建菜单设置方法

    有朋友安装了win10系统后发现右键菜单中没有新建项,而平时使用新建 - 文件夹项的机率很高.如何才能恢复桌面右键菜单中的新建项呢? 右键点击桌面空白处,在右键菜单中发现没有新建项: 桌面右键菜单没有 ...

  4. mac_Mac环境下怎样编写HTML代码?

    在Mac环境下,使用默认的文本编辑器编写的HTML的源代码, 使用不同的浏览器打开后,依旧还是显示源代码 推荐使用UltraEdit,问题就迎刃而解了

  5. [转载] C++11新特性

    C++11标准发布已有一段时间了, 维基百科上有对C++11新标准的变化和C++11新特性介绍的文章. 我是一名C++程序员,非常想了解一下C++11. 英文版的维基百科看起来非常费劲,而中文版维基百 ...

  6. EL字符串表达式和常用功能用途拦截

    <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> ${wj ...

  7. 几款开源ESB总线的比较(转)

    现有的开源ESB总线中,自从2003年第一个开源总线Mule出现后,现在已经是百花争鸣的景象了.现在我就对现有的各种开源ESB总线依据性能.可扩展性.资料文档完整程度以及整合难易程度等方面展开. CX ...

  8. 调用CachedRowSetImpl类时,为什么会出现这样的错误

    Access restriction: The type CachedRowSetImpl is not accessible due to restriction on required libra ...

  9. 解决Virtual Box 安装Mac OS X当出现“hfs: summary table not allowed on FS with block size of 2048”问题

    解决Virtual Box 安装Mac OS X当出现"hfs: summary table not allowed on FS with block size of 2048"问 ...

  10. 初步STL集装箱Vector

    vector 特点: 1.可变长的动态数组 2.使用时包括头文件 #include <vector> 3.支持随机訪问迭代器 • 依据下标随机訪问某个元素时间为常数 • 在尾部加入速度非常 ...