1. 使用业务角色ANALYTICSPRO登录SAP CRM WebClient UI: 点击新建按钮创建一个新的HANA live report: 类型选择SHL: 弹出窗口,维护report的名称,描述信息,和底层使用哪个SAP HANA Live Query: 可以使用F4 help来选择系统里标准的HANA live query: 这篇文章里我使用的是:OpportunityQuery. 2. 这个ID OpportunityQuery是在ABAP后台系统事务码SPRO里配置的. 路径:…
1. 使用业务角色ANALYTICSPRO登录WebClient UI: 2. 点击新建按钮: 为新建的报表分配一个HANA Live Query: 指定Query的参数: 上图WebClient UI选择的参数都定义在HANA studio里: 给报表添加属性: 添加measure: 之后报表即可在WebClient UI里成功渲染: 并且也能在CRM Fiori的Customer Report应用里看到该report. 如果想获得更多关于上图提到的Fiori应用,请查看我的公众号文章 SAP…
使用Chrome开发者工具调试CRM WebClient UI里附件上传的功能: 从本地选择一个文件,断点触发: 前端取得用户选中上传的文件名: Jerry.txt 点Attach按钮后,触发ABAP后台的事件处理函数: 从Chrome开发者工具的network标签能观察到,UI向ABAP后台发送了一个http post请求: 后台依次处理所有的form parts: 从对应的form part里取出文件名称和文件类型: 以及实际的文件内容(由于security原因,该form part的内容无…
随便找一个在CRM WebClient UI里会被频繁调用到的函数,在函数里创建一个隐式增强,打印当前的会话ID. 不关闭浏览器,在浏览器里不断做操作,可以观察到不管做任何操作,每次断点出发后,打印出来的会话ID都相同. 每次触发打印出的会话ID都相同: 00015255FA163EE40FA21ED6A898F0FA67B01B77 要获取更多Jerry的原创技术文章,请关注公众号"汪子熙"或者扫描下面二维码:…
CRM WebClient UI 把Work center的navigation target在client side不可见:在Chrome development tool里看不到,而是点击了Work center之后,在后台ABAP端计算出navigation target. Hybris 这个Catalog的下拉menu里每个item都对应一个url,在html里用 tag实现.这个url在客户端可见. https://localhost:9002/yacceleratorstorefro…
SAP CRM里有个功能可以创建HANA live report,消费HANA Studio里创建的模型. 最后创建好的report长这个样子: 具体创建步骤可以参考我的博客Step by Step to create HANA live report in Webclient UI 这些report肉眼上看去显示在WebClient UI里,而WebClient UI似乎不能这么灵活的显示这些风格特异的图标.这是怎么实现的呢? 红色方框里的UI区域实际上是一个UI5应用: Webclient…
CRM WebClient和Hybris backoffice的UI开发都不需要开发人员手写原生的html代码. CRM WebClient UI 在CRM WebUI workbench里,开发人员需要写下图这些SAP封装的tag: 这些Tag能在事物码SE80里找到: Hybris backoffice UI 比如我通过backoffice左边倒L形的工作中心列表查看优惠券列表,这个列表实际上是一棵树,根节点是Marketing. 上图界面是通过在XML文件里定义Hybris封装的tag来实…
环境:SAP CRM WebClient UI 需求:在WebClient UI里不通过用户手动点击,而是使用JavaScript代码自动触发ABAP后台的代码. 解决方案: 1. 定义一个hidden button, 其onClick事件处理函数(event handler)设置成SAP ABAP后台的event Refresh: 2. 通过document.getElementByID拿到该button的实例,再调用其方法click()触发ABAP backend事件: var button…
Product settype acts as a very important role in CRM WebClient UI architecture. The GenIL layer knows nothing about attributes modeled in settype. Instead, it only knows product BOL model attributes. The API knows nothing about attributes modeled in…
WebClient UI上自带了一个打印按钮,按Ctrl + P后可以生成一个新的页面供打印. 如下图所示.可以看到这个页面里所有的超链接都已经被移除了. 这个页面的生成逻辑如下. 1. 按住ctrl + p之后,会触发WebClient UI框架的按键响应函数thtmlbKeyDown.浏览器传入的事件处理对象里ctrl属性为true,keycode为80(按键p对应的code),意思就是ctrl和p同时按下. 这个响应函数thtmlbKeyDown被注册到整个document对象上,因此您在…
我们在product overview page里能看到很多的assignment block.但是runtime的时候真正显示出来的内容只是configuration里面看到内容的一个子集. Product category能够assign很多settype和relationship,每个settype和relationship都对应一个UI view. runtime的时候,我们会根据product category找到上面assign的settype和relationship,再把对应的U…
我要感谢CRM On Premise, 因为在这个产品上做开发让我得以使用WebClient UI框架.有些朋友觉得这个SAP自己发明的基于HTML+ABAP的MVC框架,和现在流行的三驾马车(Angular, React, Vue)相比显得很笨重,也缺少一些他们认为现代UI框架必不可少的一些功能. 这个看法我个人不是完全认同,除了诸如React的Virtual DOM rendering和三驾马车都支持的双向绑定之外,很多这三个框架都支持的功能,SAP WebClient UI勉强说起来也都支…
WebClient UI 我们在WebClient UI的开发工具里点了Test按钮, 会在浏览器以测试模式打开选中的view.这背后发生了什么事?注意浏览器地址栏的bspwd_cmp_test,这是什么东西?Jerry倾向于把它当作是CRM WebClient UI component在测试模式下的启动器. 当我们以测试模式打开一个CRM WebClient UI component时,这个component的页面实际上是显示在一个iframe内,该iframe在上述提到的bspwd_cmp_…
CRM(WebClient UI) CRM(SAP GUI,事务码PPOMA_CRM) C4C 以列表方式显示: 以图形方式显示: UI模型: /SAP_BYD_APPLICATION_UI/mom/org/COD_OrgUnit_OWL.OWL.uicomponent 明细页面:/SAP_BYD_APPLICATION_UI/mom/org/COD_OrgUnit_TI BO name: OrganisationalUnit 通过递归执行association ChildOrganisatio…
关于如何在 Unity 的 UI 菜单中默认创建出的控件 Raycast Target 属性默认为 false 我们在 Unity 中通过 UI 菜单创建的各种控件,比如 Text, Image 等,它们的 Raycast Target 属性默认都是勾选的,这意味着他们会响应点击等时间,Unity 会将其加入到事件的响应队列,所以 UI 中这种控件数量很多时,是很影响性能的,确定不需要响应时间的都可以将改选项的勾选去掉.但是默认创建的都是全部勾选的,不过想要修改下这里面的细节又不破坏整体的使用习…
1:View中的field对应于model中的attribute. 2:custom controller具有更长的生存时间,能够在view中共享一些数据. 3:window是component的一个interface 4:一个component是一个应用 5:component能重用一些veiw等. 6:view controller 能控制相应view的行为. 如:Navigation, 7:inbound和outbound是一个方法,能够控制当用户进入或离开view时发生什么. 8: co…
创建BOL的步骤就不说了,自己找,学习这个之前,需要自己先找个SAP CRM资料预习一下 T-CODE:BSP_WD_CMPWB 1.创建组件:输入组件名:ZLYTEST03,点击创建按钮,回车,选择包和请求...回车,回车,回车,知道创建成功,进入组件里. 2.加入BOL:点击运行时资源库编辑器,点击修改右键'MODEL',添加自建的或者标准的BOL.保存,F3退出一下,再进入,会带出BOL浏览器按钮. 3.创建视图:点击组件结构浏览器,选择视图,右键,‘创建搜索页面’,选择搜索节点和结果节点…
Below example show: How the mapping relationship between User status and System status maintained in One Order. APP: My Opportunity Transaction type: OPSM First,I create an new Opportunity in WebClientUI, I set the status with E0001( User status). 新建…
在Cloud Application Studio里新建一个Code List Data Type: 维护Value和描述信息,以及在ABSL里使用的constant值. 保存之后,上述维护的信息会存储到一个名为.codelist 的文件里.激活之后,这个新建的数据类型就可以用于定义extension field(扩展字段)的类型了. 在下图,我定义了一个新的extension field,类型为前一步创建的code list: 将这个扩展字段暴露到UI上: 最后运行时外观如下: 要获取更多Je…
我们可以在Chrome development tool的network tab里观察到从前台UI发送到后台的HTTP请求: 更多Chrome Development Tool的使用工具请查看我的博客Chrome Development Tool tips used in my daily work 但是直接查看到的是经过gzip之后的内容.如何查看压缩之前的请求体内容呢? 鼠标放在HttpRequest-dbg.js上, 会显示出调用栈,单击send: 在第34行设个断点: 重新到UI操作,断…
昨天Jerry的文章 纯JavaScript实现的调用设备摄像头并拍照的功能 介绍了纯JavaScript借助WebRTC API来开发支持调用设备的摄像头拍照的web应用.而我同事遇到的实际情况是,需要使用SAP UI5这个前端框架来开发web应用.在有了前一篇文章的知识储备后,在SAP UI5里完成这个功能,可以采取同样的思路. 我们先回忆前一篇文章里提到的技术实现的要点: (1) 在web应用的HTML页面里定义HTML5用于显示视频的原生标签:video (2) 使用WebRTC的API…
摘要:MD5校验和则是其中一种数学算法,通常是使用工具对文件计算得出的一组32 个字符的十六进制字母和数字. 本文分享自华为云社区<TypeScript/JavaScript项目里如何做MD5校验和?>,作者: gentle_zhou. 什么是MD5校验和? MD5,是Message Digest Algorithm 5的缩写,即消息摘要算法版本5. 消息摘要算法通过对所有数据提取指纹信息以实现数据签名.数据完整性校验等功能,由于其不可逆性,有时候会被用做敏感信息的加密.消息摘要算法也被称为哈…
In a similar way to other parts of a game, user interfaces usually go through several iterations until we get the user experience right; it is vital that we can iterate over different ideas as fast as possible. Using a MVC pattern to organize the vie…
有时候,将ActiveReports设计器集成到业务系统中,为用户提供一些自定义的数据表,用户不需要了解如何底层的逻辑关系和后台代码,只需要选择几张关联的数据表,我们会根据用户的选择生成可供用户直接使用的数据集.本文第一部分主要讲解了,如何构造三种报表模板,第二部分主要讲解了对于DataRelation类在动态绑定数据集之间的用法. 首先需要构造LayoutBuilder类,该类主要构造三种类型的报表以及为它们添加数据集字段. 1. 创建RDL 报表 使用PageReport对象,并添加属性 p…
本文转载自:http://songguoliang.iteye.com/blog/1752519 运行eclipse时报如下错误: 在eclipse的配置文件里指定jdk路径,只需在eclipse的配置文件里增加-vm参数即可. 打开eclipse目录下的eclipse.ini配置文件,增加-vm配置,需要注意的是该参数要加在-vmargs之前 eclipse.ini配置文件: -startupplugins/org.eclipse.equinox.launcher_1.3.0.v2012052…
转载自:https://blog.csdn.net/gnail_oug/article/details/51925804:个人做了些小修改. 今天下载了eclipse4.6版本,打开时报Version 1.7.0_45 of the JVM is not suitable for this product. Version:1.8 or greater is required.,提示jdk版本要1.8以上,如下图: 由于不想直接将环境变量配置的jdk1.7改为jdk1.8,所以单独在eclips…
在docker里,快速run一个镜像,很简单的. k8s的世界,与之类似. 但要注意一下,如果镜像本身没有提供command命令,这个容器由于前台输出完成,很快就退出了. 所以,遇到这种镜像,就最好自定义一个简单的命令,如ping localhost. kubectl run netbox --image=harbor.paic.com.cn/3rd_part/ianneub/network-tools:latest --command -- ping localhost 深入URL: 从 Ku…
介绍需求 熟悉并优化公司项目的第五天,领导说能不能把表单验证封装一下,我打开代码一看 由于是后台管理系统,无数个需要验证的输入框,由于截图长度受限,只能展示部分,类似于这种页面还有无数个!代码重复率非常高,难怪需要封装了. 实现思路 1.将代码从页面中抽离,在utils文件夹新建js文件存储 2.新增js代码 let FormValidate = (function () { // eslint-disable-next-line function FormValidate() {} // Fr…
1.效果图:分别为有短信分享                                      无短信分享 -(void)viewDidLoad{ //添加按钮 UIButton *shareButton = [[UIButton alloc] initWithFrame:CGRectMake(100, 100, 100, 50)]; [shareButton setBackgroundColor:[UIColor redColor]]; [shareButton addTarget:s…
在使用http请求server时常常要传递一些参数给server,如IMEI号.平台号.渠道号.客户端的版本号等一些通用信息,像这些参数我们没有必要每次都拼在url后,我们可以统一添加到http头里. 1.HttpClient的设置http头的参数 HttpClient httpclient = new DefaultHttpClient(); httpclient.getParams().setParameter( CoreConnectionPNames.CONNECTION_TIMEOUT…