第一章 通过OData暴露和消费数据的基础架构
这章的内容很简单。在开始真正开始开发之前,回顾了一下第一章所提到过的传统软件开发架构和使用XS架构的区别。值得记下来的是ICM是整个架构的一部分。SAP internet communication manager(ICM)http://help.sap.com/saphelp_nw73/helpdata/en/48/039d48c0070c84e10000000a42189c/content.htm?frameset=/en/48/7f28a10fa44cdbe10000000a42189d/frameset.htm 存在于整个Netweaver架构中很久了,在整个平台不叫netweaver而成为web AS的时候就存在了。它是应用服务器与外部HTTP请求交互的一个接口。比如我们熟知的webdynpro for ABAP,就是通过ABAP -> ICF -> ICM这样的层层配置转换实现的。当然ICM也是Netweaver JAVA的一部分,并且SAP自己的http负载均衡实现web disptatcher也是基于ICM的。
ICM之下是XS引擎,它与index server交互。index server是整个HANA的核心,其它的HANA服务基本都负责类似统计信息,节点的管理之类的任务,而真正的内存内计算是通过index server实现的(当然,熟悉TREX/BWA的一定对这个名字不陌生)。目前数据在XS引擎和index server之间还需要做传递,会损失一部分性能,但是由于一切都在同一个OS内进行,这种数据的传递也是高效的。
第二章 SAPUI5
这一章的内容其实很多很复杂,因为这涉及到开发HANA XS应用的展现层,而现在所有的应用都前所未有地重视UI UX,包括SAP。但是我本人并不想花太多精力在这上面。我的关注点是HANA。HANA本身已经在2年内发展的太快,有太多新的内容产生,而UI开发并不是我的长处,写JS/AJAX的经历那几乎要回到很多年以前。如果有机会参与到HANA XS应用开发项目中,还是将这些交给更专业的web前端攻城狮吧。:)
SAPUI5,以前的开发代号叫凤凰,是专门针对现在的应用趋势开发的最新的UI框架:移动、HTML5、UX 你可以在这了解到大部分信息,如果你想专注于SAPUI5开发 http://scn.sap.com/community/developer-center/front-end
SAP以前有一个自己的JS框架,完全自己开发的,叫做unified rendering light speed http://help.sap.com/saphelp_nw70ehp1/helpdata/en/74/0beccf62a7425ab9e1b2077fa1bc6e/content.htm。之所以叫做unified rendering是因为在HTML5 MOBILITY这些还没有充斥这个世界的时候,SAP将UR LS作为统一的JS框架被所有跟WEB有关的产品使用。比如ITS WEBGUI、BW Web analyzer、BSP等,虽然UR的产生是源于webdynpro。但是有时候IT领域变化太快,进化不如革命,我相信这是又一个SAP JS框架产生的原因。但是,好在我们以前不必了解UR,没人基于UR开发应用,我们基于使用UR的应用,比如webdynpro。而SAPUI5是完全提供给SAP开发者的,不仅供SAP内部使用。
另外,SAP近年来终于开始拥抱开源社区。无论是前端产品的eclipse化,还是SAPUI5都能看到这种趋势。SAPUI5的核心是JQuery,除此以外还融合了:
OData http://www.odata.org/
LESS http://lesscss.org/
D3.js http://d3js.org/
ARIA http://www.w3.org/WAI/intro/aria
真是一个大融合方案 http://scn.sap.com/docs/DOC-31625 。从我本人的观点,我很高兴看到这样的改变。因为无论自己labs的研发团队多强大也没法在各个领域都是第一,开源社区的智慧是无穷的。
SAPGUI5使用的时候可以选择渲染的目标是desktop还是mobile。这基于你的应用需求和选择。
在所有HANA SPS05版本开始,就内置了SAPUI5框架,我们可以通过访问hostname:port/sap/ui5/1/sdk/index.html来访问内置的文档,包括developer guide和和政示例代码。
最后,SAPUI5的开发环境是基于eclipse的。所以我们可以在一个开发工具里开发HANA模型,XS应用,ABAP和SAPUI5等。在后面的章节会有详细介绍。
第三章 使用SAPUI5创建UI
本章内容并没有包含SAPUI5的安装部分。所以首先我们安装SAPUI5的eclipse插件。SAPUI5可以从http://scn.sap.com/community/developer-center/front-end 下载到。而安装文档可以从SAP NOTE1747308找到。因为我是安装在HANA Studio里,所以我要安装SAPUI5插件依赖的一些其他插件包。这些可以从安装文档的prerequsite一节找到。不过在我的安装中遇到了一些麻烦,因为我使用的HANA Studio rev55而且我又安装了abap development插件,所以有很多冲突。如果想安装一个真正集成化的开发环境,这是一个问题。目前我还没有找到任何文档,类似PAM那种,提示不同SAP插件之间的版本兼容性。 最后我使用了SAP的update site,在线安装了最新的build。
插件安装好了以后,就多了一个创建选项:SAPUI5 application development 按照向导创建成功以后,会默认创建以下对象
WebContent文件夹,这下面放置要开发的js文件
index.html 引导文件,这里面初始化了要加载的SAPUI5库文件。
SAPUI5的viewer和controller js文件。SAPUI5是一个MVC的框架,所以熟悉MVC的应该不陌生这些js的概念。viewer里面编写创建可视化组件的逻辑,也就是跟展示相关的。controller里是对view视图响应的一些事件处理函数。而因为SAPUI5是一个前端框架,所以模型一般是一个代理对象,连接后端的数据源,比如netweaver gateway或者HANA。
项目创建成功后,首先我们要更改引导文件index.html,因为SAPUI5可以用在很多场合,比如HANA或者netweaver,SAPUI5并没法判断客户到底想基于什么后端开发,而不同的后端SAPUI5 js库文件的位置是不同的。修改script标签的src,指向HANA SAPUI5 js库文件的位置 <script src=”/sap/ui5/1/resources/sap-ui-core.js”
viewe文件源代码,js攻城狮们研究去吧
sap.ui.jsview(”sapui5.HelloWorld”, {
getControllerName : function() {
return “sapui5.HelloWorld”;
},
createContent : function(oController) {
var myButton = new sap.ui.commons.Button(”btn”);
myButton.setText(”Hello World”);
myButton.attachPress(function(){$(”#btn”).fadeOut();});
return myButton;
}
});
之后共享这个SAPUI5,如我们在之前创建HANA开发项目一样。只不过我们可以指定一个package,而这个package可以是之前创建的HANA开发项目的一个文件夹。我在这里最开始指向了一个空的package,结果没法运行SAPUI5。还记得我们在创建HANA项目时创建的.xsapp文件么,它告诉HANA这是个XS应用。所以没有了它,HANA不知道这是XS应用,自然也就不会运行在XS引擎上。所以我将package改为指向HANA项目的ui文件夹,index.html可以正常运行了!
第四章 OData
OData http://www.odata.org/ 感兴趣的同学可以自己在官网了解更多。这是与webservice相比更轻量级的通讯协议。SAP的Neweaver Gateway http://scn.sap.com/community/netweaver-gateway就是SAP以OData形式暴露后端业务数据的一个组件。SAPUI5提供的是方便的数据绑定功能,也就是将前端展示组件绑定到后端暴露的OData服务上。基于OData的开发流程如下,在接下来的几章,就会按照这样的顺序实现SAPUI5+HANA Odata的开发。
第六章 创建一个简单地OData服务
SAP HANA SPS05有很多新功能,而其中一个重要的功能就是能够将HANA数据以OData的形式暴露。怎么做?我想如果大家可能都猜到了,通过.xsodata文本文件就可以暴露一个OData服务。
service namespace “workshop.services” {
“SAP_HANA_EPM_DEMO”.”sap.hana.democontent.epm.data::businessPartner”
as “BusinessPartners”;
}
同样,我想未来SAP HANA Studio应该提供对这些功能的更好支持,而不是用文本文件的形式让开发者编写。
在激活xsodata文件后就可以从URL访问HANA的数据了,比如: http://……/services/businessPartners.xsodata/BusinessPartners/?$format=json
第七章 创建复杂的OData服务
上一章的利用OData暴露的数据是简单的一张表,但是实际应用开发中数据模型要复杂得多。关于如何定义OData service,大家可以参考HANA开发者手册http://help.sap.com/hana_platform#section5,我就不在这里赘述了。
第八章 从用户界面调用OData服务
我们准备创建一个表格控件,绑定后端HANA的一个OData服务器,展示数据。
首先修改html文件,引入table控件库
<script src=”/sap/ui5/1/resources/sap-ui-core.js”
id=”sap-ui-bootstrap”
data-sap-ui-libs=”sap.ui.commons,sap.ui.table”
data-sap-ui-theme=”sap_goldreflection”>
然后是构建是在view里构建整个table。因为只是演示,所以所有代码都写在了view里。
createContent : function(oController) { //Insert oData Model Here var oModel = new sap.ui.model.odata.ODataModel(”../../../services/businessPartners.xsodata/”, false); //To-Do: Place Code Here var arrayHeaders = new Array(); var oControl; oTable = new sap.ui.table.Table(”test”,{tableId: “tableID”, visibleRowCount: 10}); oTable.setTitle(”Business Partners”); //Table Column Definitions oControl = new sap.ui.commons.TextField().bindProperty(”value”,”PartnerId”); oTable.addColumn(new sap.ui.table.Column({label:new sap.ui.commons.Label({text:”Partner ID”}), template: oControl, sortProperty: “PartnerId”, filterProperty: “PartnerId”, width: “125px” })); oControl = new sap.ui.commons.TextField().bindProperty(”value”,”EmailAddress”); oTable.addColumn(new sap.ui.table.Column({label:new sap.ui.commons.Label({text:”Email Address”}), template: oControl, sortProperty: “EmailAddress”, filterProperty: “EmailAddress”, width: “125px” })); oControl = new sap.ui.commons.TextField().bindProperty(”value”,”PhoneNumber”); oTable.addColumn(new sap.ui.table.Column({label:new sap.ui.commons.Label({text:”Phone Number”}), template: oControl, width: “125px” })); oControl = new sap.ui.commons.TextField().bindProperty(”value”,”FaxNumber”); oTable.addColumn(new sap.ui.table.Column({label:new sap.ui.commons.Label({text:”Fax Number”}), template: oControl, width: “125px” })); oControl = new sap.ui.commons.TextField().bindProperty(”value”,”LegalForm”); oTable.addColumn(new sap.ui.table.Column({label:new sap.ui.commons.Label({text:”Legal Form”}), template: oControl, sortProperty: “LegalForm”, filterProperty: “LegalForm”, width: “125px” })); oControl = new sap.ui.commons.TextField().bindProperty(”value”,”Currency”); oTable.addColumn(new sap.ui.table.Column({label:new sap.ui.commons.Label({text:”Currency”}), template: oControl, width: “125px” })); oControl = new sap.ui.commons.Link ().bindProperty(”text”,”WebAddress”); oControl.bindProperty(”href”,”WebAddress”); oControl.setTarget(”_blank”); oTable.addColumn(new sap.ui.table.Column({label:new sap.ui.commons.Label({text:”Web Address” }), template: oControl, width: “125px” })); oTable.setModel(oModel); //Create Sorter and Bind to the Business Partner Entity //To-Do: Place Code Here var sort1 = new sap.ui.model.Sorter(”PartnerId”); oTable.bindRows(”/BusinessPartners”,sort1); var iNumberOfRows = oTable.getBinding(”rows”).iLength; oTable.setTitle(”Business Partners” + ” (” + iNumberOfRows + “)” ); return oTable; }
我将相对重要的地方加粗,其它部分即便不查阅SAPUI5的文档也很容易理解。我们绑定的是同一个项目里的OData service资源,SAPUI5的表格控件会自动将数据绑定。最终的显示结果为
WISH LIST:
又到了提意见的时候了。对于VIEW的构建,目前的开发过程还比较原始,没有所见即所得的或者说声明式的编程方式,不过这是SAP正在开发的一个重要功能。除此以外,很多地方也需要改进,比如说模型的绑定,创建模型,手动输入URL参数,对我来说依然过于原始。可以开发出来一种类似OData Service浏览器的东西供开发者选择绑定对象,是本地的还是远端的OData Service然后自动生成绑定代码。
本周的内容结束了。主要介绍的是SAP最新的前端开发框架SAPUI5。这不是我的兴趣所在,而对于前端攻城狮来说,学习它应该是piece of cake。下一周,服务器端的javascript才是HANA XS的特色。一起加油!还有两周课程就结束了!
相关推荐
ERP软件:SAP二次开发_SAP HANA集成开发.docx ERP软件:SAP二次开发_SAPWebDynpro开发.docx ERP软件:SAP二次开发_SAP二次开发中的数据管理.docx ERP软件:SAP二次开发_SAP二次开发最佳实践与案例分析.docx ERP软件...
- 用户设置调整:SAP HANA Cockpit允许你调整用户设置,如语言、主题和通知设置,以适应个人偏好。 - 使用“我的视图”:你可以创建和保存自己的视图,方便快速访问常用的功能或数据。 通过以上内容,SAP HANA...
S/4HANA On-Premise版本是一个基于SAP HANA内存数据库的ERP业务套件,允许企业在私有云或公有云上部署,提供全面的功能和高度的定制性。这种部署方式适合大型企业,它们通常有复杂的业务流程和较高的定制需求,同时...
- **多层架构**:SAP HANA采用的多层架构,包括应用程序服务器层、计算层和持久存储层。 #### 2. 高可用性配置 - **系统复制**:了解如何通过系统复制实现节点之间的数据同步,确保高可用性。 - **热备份节点**:...
5. **安装组件**:SAP HANA Studio包含多个组件,如开发工具、模型工具、数据库连接器等。安装过程中,根据你的需求选择要安装的组件。 6. **连接HANA实例**:安装完成后,需要配置连接到你的SAP HANA数据库实例。...
SAP HANA Studio是SAP公司为开发和管理基于SAP HANA数据库的应用程序而设计的一款集成开发环境(IDE)。这个“SAP-HANA-STUDIO-2.3.37”压缩包文件包含了该版本的SAP HANA Studio安装程序,用于在用户的计算机上部署...
这是一本介绍SAP PPDS组件功能的文档,主要介绍S4 HANA或SCM中关于高级计划管理的相关功能
4. SAP HANA 基于内存创新技术:SAP HANA基于内存创新技术,可以实时处理大量数据,具有高性能和实时分析能力。 5. 华为RH2288H V2服务器、E9000刀片服务器、RH5885H V3服务器和RH8100 V3服务器认证版本SAP HANA...
《SAP HANA 管理指南》是针对SAP HANA平台的详细操作手册,旨在帮助管理员有效地管理和维护SAP HANA数据库系统。本文档适用于SAP HANA Platform 2.0 SPS 04版本,由SAP SE或其关联公司在2019年10月31日发布,所有...
1. **SAP HANA**:SAP HANA(High-Performance Analytic Appliance)是一款基于列存储的内存数据库系统,它将数据存储、处理和分析功能集中在内存中,从而提供极高的数据处理速度。 2. **HANA Studio**:作为SAP ...
String url = "jdbc:sap://your-hana-server:30015/?databaseName=YOURDB"; String user = "your-username"; String password = "your-password"; try { Class.forName("com.sap.db.jdbc.Driver"); ...
SAP HANA ODBC DRIVER(HANA客户端2.0-2.7.21-windows-x64)是一款专为Windows 64位操作系统设计的数据库连接驱动程序,它允许应用程序通过Open Database Connectivity (ODBC)标准与SAP HANA数据库进行通信。...
主要内容包括:SAPHANA的各个特性;SAPHANAStudio;属性视图;分析视图;图形化计算视图;用SQLScript创建计算视图;SAPHANA系统的授权机制;SAPHANA的层级;如何将SAPHANA数据模型部署到3个不同的工具中;如何使用...
根据给定文件的信息,我们可以提炼出关于"SAP S/4HANA 销售中的业务流程"的相关知识点。以下是对这份文档的关键内容进行的详细解读: ### SAP S/4HANA 销售中的业务流程 #### 教程概述 - **教程版本**:12 - **...
SAP HANA HA100 - SAP HANA Introduction(Col99).pdf
Thishandbookisintendedtocomplementtheinstructor-ledpresentationofthis course,andserveasasourceofreference. Itisnotsuitableforself-study
SAP_HANA_Modeling_Guide_en
SAP HANA Studio是一款专为SAP HANA数据库设计的集成开发环境(IDE),它提供了全方位的工具和服务,便于开发者、管理员以及数据分析师对HANA系统进行管理和开发。这款工具在X64平台上运行,其Version 2.3.37确保了...
SAP HANA HA300 - SAP HANA Implementation and Modelling(Col99).pdf
SAP BW/4HANA Content Add-On 是一个基于 SAP HANA 的商业智能解决方案,旨在帮助企业更好地管理其财务和控制流程。该解决方案提供了一系列的内容和工具,旨在帮助企业快速建立财务报表、预测、分析和规划等功能。 ...