SAP 电商云登录界面如何增添新的字段
登录界面的 Component selector:cx-update-profile 找到对应的 Component 名称:UpdateProfileComponent: component 只有一个 FormGroup 实例。 service 的 form 什么时候赋的值呢?在 Service class 里复制,没有使用 form builder,而是 手动创建 FormGr
Angular 里使用嵌套 Form 的步骤
我们可以在这个 FormGroup 构造函数的属性里,再增添一个类型为 FormGroup 的实例,形成嵌套的 form: 每一次显式调用 new 创建 FormGroup 和 FormControl 实例显得很繁琐。其实我们可以使用 FormBuilder 通过工厂模式创建。 profileForm = this.fb.group({ firstName: ['
Angular 里使用 FormControl 的步骤
导入 FormControl: import { FormControl } from '@angular/forms'; 在 Component 里创建一个 name 实例,类型为 FormControl: name = new FormControl('Jerry'); 通过构造函数 FormControl 设置初始值。 在 HTM
使用 ABAP 开发的一个基于 Web Socket 的小工具,能提高程序员日常工作效率
程序员区别于其他岗位的一个优势是,我们可以充分利用自己掌握的编程语言,将平日一些琐碎的,重复的日常工作,通过代码来实现自动化,从而省下更多的时间来投入到技术含量更高的工作中,提高工作效率。 本文介绍一个笔者在实际项目工作中 ABAP 这门编程语言实现的一个工作自动化的例子。 客户端轮询 vs Web Socket APIABAP Channel 是 Netweaver 740 发布的一项新的基
SAP UI5 数据类型(data type) 学习笔记
SAPUI5 中的数据类型用作验证用户输入的机制(例如,“hello”不是订单数量的可接受值),并确保数据在 UI 上被正确格式化和显示(例如将 1234567 显示为 1,234,567 需要时)。当与支持双向绑定的数据模型结合使用时——这是使用它们的最佳方式——数据类型确保模型中的数据只有在用户提供有效值时才会更新。 用户输入验证也可以通过在事件处理程序中为每个输入字段编写验证逻辑来完成;可
SAP Fiori 的学习路线指南
以下是我在 SAP 成都研究院工作 15 年根据自己工作中积累的经验,总结出的 Fiori 学习路线指南,纯属个人观点,不代表 SAP 公司。 什么是 SAP Fiori,什么是 SAP UI5,二者的关系如何。Fiori 1.0,2.0 和 3.0 的演进:介绍 SAP Fiori 和 SAP UI5 这两个初学者容易混淆概念的区别和联系,介绍 Fiori 和 UI5 的发展历史,前世今生
Map-Reduce 思想在 ABAP 编程中的一个实际应用案例
ABAP 是一门企业级应用编程语言,其 740 版本于 2013 年发布,增添了许多新的语法和关键字: 其中一个亮点就是新引入的 REDUCE 关键字。这个关键字的作用和在大规模数据集并行计算领域里广泛使用的 Map-Reduce 编程模型中的 Reduce 操作类似,可以按照字面意思理解为归约 。 什么是 Map-Reduce 思想?Map-Reduce 是一种编程模型和相关实现,用于在
多次调用 BAPI 之后,最后一次性 COMMIT WORK,会有什么问题吗?
有朋友问我这个问题: 调用 MIRO 的 BAPI, 调用多次,最后一次性 COMMIT WORK,可以执行成功,但是调用一百次以上,最后再 COMMIT WORK,会有什么问题吗? 我建议先阅读这两篇文章了解一些预备知识: 什么是 SAP BAPISAP ABAP COMMIT WORK 关键字的一些使用要点 假设一个 BAPI A 的伪代码实现如下: * 进行一些计算
SAP ABAP COMMIT WORK 关键字的一些使用要点
ABAP 语句 COMMIT WORK 提交在 SAP LUW 期间完成的更改。它不能与 DB-Commit 混淆。 首先明确什么是 SAP LUW(Logic Unit of Work)? 下文所说的工作流程,工作进程,都是指 SAP ABAP 培训教材里的 Work Process. 关于什么是 ABAP Work Process,请参阅我的文章: 一个 13 年 ABAP 老兵
什么是 SAP BAPI
SAP BAPI, 全称为 Business Application Programming Interface(业务应用程序编程接口),是 SAP 产品中业务对象模型的标准接口。 BAPI 是客户代码和第三方应用程序与 SAP 产品交互的主要方法。 BAPI 封装了 SAP 业务对象模型的内部层,以确保在访问或更改业务对象时正确执行所有业务逻辑、验证和授权检查。 BAPI 的工作原理BAPI
SAP UI5 在 PC 端浏览器和移动设备使用摄像头进行条形码扫描的几种解决方案介绍
本文标题描述的这个需求,从实现思路考虑,可以拆解成两个小步骤来学习: 如何使用 JavaScript 调用本机( PC 端或者移动设备端)的摄像头;如何在弹出的摄像头扫描窗口中,完成条形码的扫描工作。 对于第一个步骤,网络上有太多的解决方案,Jerry 本文只分享自己在项目中用过并测试通过的几种方法。 对于第二个步骤,显然我们不用重复造轮子,可以使用 SAP UI5 控件库里的 sap.
SAP 电商云 Spartacus UI 的自定义 hamburger 菜单
什么是 hamburger menu? 汉堡菜单或汉堡图标是网站和应用程序中通常打开到侧边菜单或导航抽屉中的按钮。 它是由交互设计师 Norm Cox 于 1981 年为 Xerox Star 个人工作站创建的,作为一种简单的方式与用户交流该按钮包含项目列表。 hamburger 菜单的一些优势 Recognizable(可识别) 汉堡菜单无处不在——从应用程序到网站,再到计算机软件
SAP 电商云 Spartacus UI 的 style library 介绍
Spartacus 项目的 angular.json 的 projects 节点下面,并没有和 style 相关的记录: build 里也同样没有: 这个 Storefrontstyles: 这个 storefrontstyles 文件夹下的 package.json 里定义了 hamburgers 的依赖。 style library 名称:@spartacus/styl
关于 SAP 电商云 Spartacus UI package.json 中的 sass 依赖
如下图所示: 可以使用 npm install -g sass 全局安装 Sass,这将提供对 sass 可执行文件的访问。 您还可以使用 npm install —save-dev sass 将其添加到您的项目中。 这提供了可执行文件和库: const sass = require('sass'); const result = sass.compile(scssF
关于 navigator.mediaDevices.getUserMedia 的输入参数说明
本文讲解使用 SAP UI5 barcode scanner 调用本机摄像头时,在 PC 端浏览器测试时,同样是 Cordova API 不可用,进入 else 分支的执行逻辑: 如果 Cordova API 不可用,但是 isUserMediaAccessSupported 仍然返回 true,则仍然可以打开 scan 对话框: /** * Used to detect br
SAP 电商云 Automation Engine 关于 HTTP 请求响应头的一些配置
可配置的 HTTP 响应标头提高了应用程序端点的安全性。 如果没有可配置的响应标头,Spartacus JavaScript 店面就有遭受攻击的风险。 配置响应标头集可消除该漏洞并提高 SAP Commerce Cloud 的整体安全性。 忽略 HTTP 像一头字段的配置,可能会让网站遭受一些受攻击的风险: 点击劫持攻击。 它涉及诱使用户单击覆盖的虚假界面,该界面将输入重定向到其他地方;
关于前端页面测试和抵御 clickjacking attack 的一些方法
点击劫持(clickjacking)是一种欺骗用户的攻击,当他们实际点击另一件事时,他们认为他们正在点击另一件事。 它的另一个名称,用户界面 (UI) 修正,更好地描述了正在发生的事情。 用户以为他们使用的是网页的普通 UI,但实际上有一个隐藏的 UI 在控制; 换句话说,UI 已被修复。 当用户点击他们认为安全的东西时,隐藏的 UI 会执行不同的操作。 由于 HTML 框架 (iframe)
如何使用 SAP UI5 的标准控件结合 Cordova 插件调用手机摄像头进行条形码扫描试读版
本教程之前的这几篇文章,算是围绕着 SAP UI5 和 Cordova 的一个小系列: SAP UI5 应用开发教程之四十八 - 如何在 SAP UI5 应用里开发条形码扫描功能 - 通过这篇文章介绍的步骤开发而成的 SAP UI5 应用,只能在桌面浏览器里正常运行,在用户授权的情况下,打开笔记本电脑的摄像头。 SAP UI5 应用开发教程之四十九 - 如何在桌面电脑端调试运行在手机上的
SAP UI5 barcode 控件的 feature 检查探测机制单步调试 - checkCordovaInIframe
第 170 行 checkCordovaInIframe 是检测 Cordova API 在 iframe 里的可用性,这里可以忽略。 oCordovaScannerAPI 默认为 null. 进入 getFeatureAPI 分支: 这里试图从 cordova.plugins.barcodeScanner 获取 oCordovaScannerAPI.因为我没有安装,所以这个 API
SAP UI5 BarcodeScannerButton 的初始化逻辑 - feature 检测,Cordova API 检测等逻辑
sap.ndc.BarcodeScannerButton:用于启动条码扫描过程的按钮控件(显示条码图标)。 如果本机扫描功能不可用或未授予相机功能,则该按钮要么被隐藏,要么通过打开带有输入字段的对话框来提供后备,可以在其中手动输入条形码。BarcodeScanner 被加载之后,执行 init 方法: // * Feature vector (sap.Settings.isFe