在Cloud Application Studio里新建一个Code List Data Type: 维护Value和描述信息,以及在ABSL里使用的constant值. 保存之后,上述维护的信息会存储到一个名为.codelist 的文件里.激活之后,这个新建的数据类型就可以用于定义extension field(扩展字段)的类型了. 在下图,我定义了一个新的extension field,类型为前一步创建的code list: 将这个扩展字段暴露到UI上: 最后运行时外观如下: 要获取更多Je…
Stefan Hagen在博文SAP Cloud Application Studio Performance Best Practices里介绍了在C4C里使用Cloud Application Studio进行ABSL编程的一些性能方面的最佳实践. 文章里提纲挈领地给出了一些guideline.这里提供一些具体的例子. 如何批量调用BO action 不好的例子: 第一行和第四行有两个循环,然后在第二次循环里调用一个比较耗时的ServiceRequest BO的item 节点上定义的标准ac…
1. 使用业务角色ANALYTICSPRO登录WebClient UI: 2. 点击新建按钮: 为新建的报表分配一个HANA Live Query: 指定Query的参数: 上图WebClient UI选择的参数都定义在HANA studio里: 给报表添加属性: 添加measure: 之后报表即可在WebClient UI里成功渲染: 并且也能在CRM Fiori的Customer Report应用里看到该report. 如果想获得更多关于上图提到的Fiori应用,请查看我的公众号文章 SAP…
假设我在Cloud Studio里创建了如下一个非常简单的自定义BO: 我想生成一些该BO的实例.以前我采用的做法是给这个自定义BO创建编辑用的UI.然后使用这些UI创建BO实例.这种方式很花费时间. 其实有另一种更简便的做法:不需要任何UI,而是借助C4C Web Service. 启动Service Integration向导,创建一个Web Service: 基于自定义BO创建Create和Read两个Service Operation: Web Service创建完毕之后,在Cloud…
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里配置的. 路径:…
刚刚过去的SAP TechEd上,SAP CTO Juergen Mueller向外界传递了一个重要的信息:身处云时代大环境下的SAP从业者,在SAP云平台上该如何选择适合自己的开发方式? Juergen Mueller用了一棵决策树来向大家介绍,对于拥有不同开发技能水平的SAP从业者,可以按照这棵树,根据自身情况和项目需要来选择不同层次和组合的开发工具以及编程模型. 上图右边的分支表明,如果不想抛弃已经习得的ABAP开发技能,可以选择SAP云平台上的ABAP编程环境:反之,如果青睐nodejs…
C4C UI上UI元素的显示和隐藏可以通过Key User在Adaptation模式里通过编辑一些简单的rule去控制,诸如这种格式: if ( logic expression = true ) then display the UI element else hide the UI element endif 这样就不需要由Partner去做二次开发实现了. 这整套逻辑的工作原理在我的博客How to change UI element visibility dynamically via…
最近Jerry接到一个原型开发的任务,需要在微信里调用ABAP On Premise系统(SAP CRM On-Premise)里的某些函数.具体场景和我之前的公众号文章 Cloud for Customer和微信集成系列教程 描述的场景类似. 区别之处在于Cloud for Customer(C4C)是一个云解决方案,其OData Service/Web Service能够直接被Internet网络上的其他应用消费.而我最近要做的原型开发,需要消费的函数位于部署在Corporate Netwo…
我们可以使用SAP Marketing Cloud提供的Contact create OData API在第三方应用里创建Contact主数据. API地址:/sap/opu/odata/sap/CUAN_CONTACT_SRV/InteractionContacts 示例代码只有100多行: import java.io.IOException; import java.io.UnsupportedEncodingException; import java.net.URI; import o…
原文:Visual Studio 单元测试之六---UI界面测试 UI界面测试其实就是录制操作路径(Mapping),然后按照路径还原操作顺序的一个过程.这个方法对于Winform和Webform都同样适用.下面以winform为例,来介绍如何进行录制. 1.新建一个Coded UI Test 2.然后选择录制. 3.屏幕右下方会出现UIMap. 4.打开一个Winform,使用“查看UI控件属性”这个功能可以查看所选控件的属性. 5.点击红色的开始录制,然后对被测的Winform程序进行一些操…
需求:使用nodejs代码在SAP Cloud for Customer里创建Individual customer实例. 代码: var createAndBind = require('../jerryapp/service/createAccountinC4C.js'); createAndBind("o0KlM1i2_4-zHRmDk-IWGRlA1Cjc"); 上述代码基于微信open IDo0KlM1i2_4-zHRmDk-IWGRlA1Cjc在系统里创建一个Individ…
使用Chrome开发者工具调试CRM WebClient UI里附件上传的功能: 从本地选择一个文件,断点触发: 前端取得用户选中上传的文件名: Jerry.txt 点Attach按钮后,触发ABAP后台的事件处理函数: 从Chrome开发者工具的network标签能观察到,UI向ABAP后台发送了一个http post请求: 后台依次处理所有的form parts: 从对应的form part里取出文件名称和文件类型: 以及实际的文件内容(由于security原因,该form part的内容无…
原文:C#在outlook里创建一封邮件到草稿箱 1.引用Microsoft.Office.Interop.Outlook.dll 2.  实现代码 public static int SendToDraft(List<string> to, List<string> cc, List<string> bcc, string subject, string content, List<string> attachments, ref string error…
--MySQL里创建外键时错误的解决 --------------------------------2014/04/30 在MySQL里创建外键时(Alter table xxx add constraint fk_xxx foreign key),提示错误,但只提示很简单的信息:ERROR 1005 (HY000): Can't create table '.\env_mon\#sql-698_6.frm' (errno: 150).根本起不到解决问题的作用. 要看错误的详细提示,可以使用命…
在IDEA里创建web项目很简单: 1).先创建一个简单的maven项目,这个步骤我就不说了. 2).maven项目创建完后,因为我们需要的是web项目,因此我们要在pom.xml文件里设置packaging为war: <groupId>com.jdd</groupId> <artifactId>test</artifactId> <version>1.0-SNAPSHOT</version> <packaging>war…
在for循环里创建 widget,比如test类 不能使用 test t; 而要使用 test t = new test(): for (i=0;i<=3;i++) { QPushButton* p = new QPushButton(t2); p->setGeometry(i*100,100,100,100); }…
题目补充: 创建一个接口Shape,其中有抽象方法area,类Circle .Rectangle实现area方法计算其面积并返回. 又有Star实现Shape的area方法,其返回值是0,Star类另有一返回值boolean型方法isStar: 在main方法里创建一个Vector,根据随机数的不同向其中加入Shape的不同子类对象(如是1,生成Circle对象: 如是2,生成Rectangle对象:如是3,生成Star对象).然后将Vector中元素依次取出,判断其是否为Star类.如是返回其…
证书: k8s里创建证书(使用证书文件命令创建): kubectl create secret tls scdsc-org-cn --cert=/etc/letsencrypt/live/scdsc.org.cn/fullchain.pem --key=/etc/letsencrypt/live/scdsc.org.cn/privkey.pem -n gymop k8s里创建证书(yaml文件创建): apiVersion: v1 data: tls.crt: (certtag) tls.key…
Jerry之前的文章如何在Kubernetes里创建一个Nginx应用,已经使用kubectl命令行创建了Pod,但是在kubernetes中,Pod的IP地址会随着Pod的重启而变化,因此用Pod的IP地址来访问我们部署的nginx应用不太合适. Kubernetes里推荐的方式是用Service来消费nginx服务. Service为一组Pod提供一个统一的入口,并为它们提供负载均衡 和服务发现支持. 使用如下命令行基于pod创建一个service: kubectl expose deplo…
需要创建的销售订单的明细通过硬编码指定: 比如销售订单的描述为Jerry Test 2019-1-23 16:05PM 执行之后,看到Status Code 201,说明创建成功: 到UI上能看到成功创建的销售订单: 实现代码: package odata; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.net.URI; import org.apache.http.Htt…
首先在Marketing Cloud里找到创建扩展字段的tile入口,搜索关键字extension: 这会进入Fiori应用"Custom fields",能看到系统里所有创建好的extension field.点击+加号按钮新建一个: 维护这个扩展字段的技术信息,比如标签,类型,长度等等. 创建好之后点击按钮Publish,确保字段处于publish状态. 接下来需要为特定的UI enable这个字段的显示.在标签页UIs and Reports里,在对应的UI记录后点击按钮&quo…
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…
完成了基本界面. 本来想自画UI,但是考虑到工作量较大和美观程度有限,以及工具使用对象是比较初级玩家,处于性价比和最初目的,放弃了自绘.…
我们在product overview page里能看到很多的assignment block.但是runtime的时候真正显示出来的内容只是configuration里面看到内容的一个子集. Product category能够assign很多settype和relationship,每个settype和relationship都对应一个UI view. runtime的时候,我们会根据product category找到上面assign的settype和relationship,再把对应的U…
用ABAP Development Tool登录SAP Cloud Platform ABAP编程环境后,对ABAP项目点击右键,选择属性,从而找到该环境的web访问的url: https://325df18f-0b6b-4d85-a127-ee6ad7437a7c.abap.eu10.hana.ondemand.com 登录web界面,实际上是一个Fiori UI,点击tile Maintain employee: 新建一个employee: 维护email地址: 给其维护业务角色: 要获取更…
首先 创建一个新的项目找到app 文件目录下的layout的 activity_main.xml 因为Android Studio 是可视化的,所有操作都可以在图形界面进行. 该res 界面当中  drawable 可以将需要的图片导入该目录当中进行调用 layout的目录是布局界面 values 当中存有可以更改界面的颜色 字符串还有款式的xml文件.当然也可以在可视化界面当中便捷的更改. 如下图所示为可以添加到界面的各种符号,若账号输入框,密码输入框,按钮和各种选择键. 添加辅助线的按钮如下…
我们在使用手机的时候,经常会遇到一个问题:先是卡死,然后跳出该程序无响应,是否关闭的提示(当然有可能是我们手机性能太差=.=)这是因为线程的阻塞引起的,在这里我讲述一下UI线程,一般处理程序会在UI线程中执行耗时操作,这回导致UI线程阻塞,当UI线程阻塞,屏幕会出现卡死,用户体验会变得非常差,当线程阻塞超过5s,android系统可能进行干预,弹出对话框询问是否关闭.那如何解决呢? 解决方案一:创建一个新线程 我在UI视图中创建了一个button和一个textView Button button…
https://github.com/mspnp/azure-guidance https://github.com/mspnp/performance-optimization https://github.com/mspnp/data-pipeline Cloud Design Patterns: Prescriptive Architecture Guidance for Cloud Applications https://msdn.microsoft.com/en-us/library…
Visual Studio开发C++,工程的空间几M,几十M甚至几百M的长,生成的中间文件看的眼花缭乱,占空间不说,特别是备份拷贝代码时无奈的等待,有了这个脚本,好吧,整个世界清静了. @echo off echo ---------------------------------------------------------------- echo * Visual C++ * echo * 清理Visual Studio工程中不需要的文件 * echo * 保存成.bat文件放置在工程目录…
Account Team标签页里点击Add按钮: 这些下拉菜单里的role在哪里配置? 在business configuration工作中心:Implementation projects->Open Activity List: 以Party为关键字进行过滤,就能找到配置点了: 添加一条新记录: 然后就能出现在下拉菜单里了: 要获取更多Jerry的原创文章,请关注公众号"汪子熙":…