一套适合SAPUI5初学者的循序渐进的学习教程教程目录SAPUI5本地开发环境搭建SAPUI5应用开发教程1:HelloWorldSAPUI5应用开发教程2:SAPUI5BootstrapBootstrapSAPUI5应用开发教程3:接触第一个SAPUI5ControlSAPUI5应用开发教程4:XMLView初探SAPUI5应用开发教程5:ViewController初探SAPUI5应用开发教程6-理解SAPUI5的模块概念SAPUI5应用开发教程7-JSON模型初探SAPUI5应用开发教程8-多语言支持SAPUI5应用开发教程九-创建第一个ComponentSAPUI5应用开发教程十-SAPUI5的Descriptor是什么应用开发教程十一:SAPUI5容器控制页和面板SAPUI5应用开发教程十二-使用CSS类进一步美化UISAPUI5应用程序开发教程13-如何添加自定义CSS类SAPUI5应用程序开发教程14-如何使用嵌入式视图SAPUI5应用程序开发教程15-对话框和如何使用FragmentsSAPUI5应用程序开发教程16-图标图标UseSAPUI5应用程序开发教程17-AggregationandBindingUsingSAPUI5ApplicationDevelopmentTutorial18inUI5CompositeControls-SAPUI5DataBinding语法中的特殊符号,以及绝对绑定和相对绑定概念详解常用用法讲解SAPUI5应用开发教程21-CustomFormatterofSAPUI5CustomFormatterSAPUI5应用开发教程22-filter过滤器开发与使用SAPUI5应用开发教程23-列表控件SortingSortandGroupingGroupSAPUI5应用开发教程24-如何使用OData数据模型SAPUI5应用开发教程25-使用代理服务器解决SAPUI5应用访问远程OData服务的跨域问题SAPUI5应用开发教程26-OData详解Mock服务器使用服务步骤SAPUI5应用开发教程27-SAPUI5应用单元测试工具QUnit介绍SAPUI5应用开发教程28-OPA,SAPUI5应用集成测试工具SAPUI5应用开发介绍Tutorial29-SAPUI5RoutingandNavigationFunctionIntroductionSAPUI5ApplicationDevelopmentTutorial30-SAPUI5RoutingProcess中的ParameterTransferSAPUI5ApplicationDevelopmentTutorial31-SAPUI5RoutingHistoryandRoutingBackBack(路由回溯和历史)SAPUI5应用开发教程Part32-如何创建自定义SAPUI5控件SAPUI5应用开发教程Part33-SAPUI5应用开发的响应性SAPUI5应用开发教程三十四-SAPUI5应用基于设备类型的页面适配功能(DeviceAdaptation)SAPUI5应用开发教程三十五-如何将本地开发的SAPUI5应用部署到ABAP服务器SAPUI5应用开发教程三十六-使用Chrome开发者工具元素选项卡动态修改CSS类SAPUI5应用开发教程37-使用Chrome开发者工具ConsolepanelforelementreviewSAPUI5应用程序开发教程38-使用Chrome开发者工具查看程序执行出错时的上下文信息SAPUI5应用程序开发教程39-SAPUI5应用程序白屏的一些常见错误及分析方法分享SAPUI5应用开发教程40-Howtomakeacomponent-preload.jsSAPUI5发行版含SAPUI5应用开发教程第41期-Chrome扩展UI5Inspector离线安装使用SAPUI5应用开发教程第42期-SAPUI5自带的诊断打断工具使用介绍SAPUI5应用开发教程第43期-SAPUI5自带的SupportAssistant工具使用介绍SAPUI5应用开发教程第44期-水平对齐不足的原因分析及解决方法LabelandInputcontroltextSAPUI5应用程序开发教程四十五-如何在SAPUI5应用程序中使用jQuery和原生DOMAPISAPUI5应用程序开发教程四十六-使用MessageManager实现开箱即用验证(validation)信息抛出SAPUI5应用开发教程47-如何自定义SAPUI5字符串类型输入字段的验证逻辑SAPUI5应用开发教程48-如何在SAPUI5应用中开发条码扫描功能SAPUI5应用开发教程49-如何实现在桌面电脑上调试手机运行的SAPUI5应用程序SAPUI5应用程序开发教程50-如何使用Cordova将SAPUI5应用程序生成为可安装在Android手机上的混合应用程序SAPUI5应用程序开发教程51-如何使用Chrome调试运行在手机上的SAPUI5Cordova混合应用SAPUI5应用开发教程五十二-如何使用SAPUI5标准控件结合Cordova插件调用手机摄像头获取条码扫描SAPUI5应用开发教程五十三-如何自定义SAPUI5数据类型(DataType)SAPUI5应用开发教程54-如何将本地SAPUI5应用配置到本地FioriLaunchpadSAPUI5应用开发教程55-How使用本地的SAPUI5应用通过Node.jsExpress部署到公网。SAPUI5应用开发教程第56期-SAPUI5树控件(树)的开发SAPUI5应用开发教程第57期-基于OData注解的智能字段使用方法学习SAPUI5应用开发教程五十八-使用工厂方法在运行时动态创建不同类型的列表行项目控件SAPUI5应用程序开发教程五十九-如何在SAPUI5应用程序中显示世界地图SAPUI5应用程序开发教程六-SAPUI5地图控件的一些高级用法SAPUI5应用开发教程六十一-SAPUI5应用中绘制甘特图GanttChartSAPUI5应用开发教程六十二-基于ODataV4SAPUI5的SAPUI5表单控件使用介绍应用开发教程第63期-深入介绍基于ODataV4实现本地MockServerSAPUI5应用开发教程第64期-如何在SAPUI5表格控件中实现过滤(filtering)和排序(sorting)基于ODataV4FunctionalSAPUI5应用程序开发教程六十五-如何实现SAPUI5窗体控件的创建、编辑和保存功能基于ODataV4SAPUI5应用程序开发教程六十六-如何实现删除功能SAP基于ODataV4的UI5表单控件UI5应用开发教程第67期-基于ODataV4的SAPUI5List-Detail(列表-详细信息)布局的实现SAPUI5应用开发教程第68期-SAPUI5时如何显示自定义NOTFoundSAPUI5应用开发教程第69页-如何从SAPUI5NotFound页面跳转回正常应用页面SAPUI5应用开发教程70-如何使用按钮控件触发页面路由跳转SAPUI5应用开发教程七十一-SAPUI5页面的嵌套路由SAPUI5应用开发教程七十二-SAPUI5页面路由的动画效果设置SAPUI5应用开发教程七十三-使用自定义查询为SAPUI5页面路由实现书签功能SAPUI5应用开发教程74-SAPUI5应用使用ODataV4展示Table表单数据的陷阱SAPUI5应用开发教程75-如何实现SAPUI5主从表的联动效果Jerry于2014年加入CRMFiori开发团队SAP成都研究院的博士开始接触SAPUI5,在SAP社区和“王子熙”微信发表了多篇关于SAPUI5工作原理和源码分析的文章公众号Jerry的文章对SAPUI5一无所知的新手,哪些资料比较好入手?之前说过,Jerry也是从一个SAPUI5菜鸟一路走来的。他知道,对于一个只有ABAP开发背景的开发人员来说,要转型到SAPUI5开发领域并不容易。因此,我在业余时间设计了这个适合SAPUI5初学者的学习教程,把开发一个完整的SAPUI5应用程序的过程拆分成几个步骤,力求涵盖每个步骤涉及的所有知识点。这些知识点可能没有我的UI5源码分析系列那么深入,但力求通俗易懂,便于SAPUI5初学者看懂。本教程每一步的源码都存放在我的Github上,以01、02、03等文件夹标识,例如第1步的源码在这里。每一步都在上一步的基础上,增加了几个新的特性。建议零基础或对SAPUI5了解不多的初学者从第一步开始按顺序循序渐进学习,将这些代码下载到本地,配合教程的文字讲解,自己动手加深理解。如果大家对教程的每一步有什么疑问,欢迎在教程对应的步骤文章中评论留言。主从表联动效果也是SAP项目中常见的需求。这一步其实起源于知乎上一位朋友发起的咨询。所谓主从表联动,就是两个表同时显示在应用界面上。第一个表是主表。在主表中选中任意一行后,被选中行项的明细会继续显示在第二个表上,也就是副表。信息。让我们看一个实际的例子。假设我们有一个表格,从左到右的列依次显示每个人的姓氏、名字、年龄和他的朋友信息。由于每个人可能有多个朋友,因此Friends列对于同一行项目可能有多个行。比如上图中,李四有三个朋友,王舞和赵二分别有两个朋友。对于一个行项的一列可能有多个数据的复杂结构,如上图所示,每个行项在表格中显示的高度是不同的。从视觉效果来看,会给用户一种UI风格不一致的感觉。遵循SAPFiori设计指南,避免此UX问题的一种方法是实施主从表。Putthenameandagedisplayinformationinthemastertable,andwhenarowofthemastertableisselected,thedetaileddatacorrespondingtothisrowofdatawillbedisplayedintheslavetable.完成这一步后,我们会得到一个外观如下的SAPUI5应用:在主表中选择一个行项后,该行项所代表的人所拥有的所有好友信息将以奴隶表。不难看出,采用主从表联动后,主表或从表中行项的高度可以保持一致,人友关系的信息展示也更加清晰明了乍看上去。下面是详细的实现步骤。
