关于sap:基于-Kyma-的企业级云原生应用的扩展案例分享

什么是 Kyma?其官网的定义是,Kyma 是一个开源的云原生利用开发平台和运行时,底层基于 Kubernetes,借助一系列包含 Istio, NATS, Serverless 和 Prometheus 在内的其余优良开源我的项目和组件,可能开发、运行和操作云原生应用程序,反对对传统的 On-Premises(本地部署)应用程序和云原生利用基于事件驱动模式的松耦合扩大。 本文分为两局部,别离给大家介绍应用 Kyma 对本地部署的传统利用和企业级云原生利用进行扩大的案例。 应用 Kyma 扩大本地部署的 WordPress 利用WordPress 是一个基于 PHP 的开源内容管理系统,很多敌人喜爱应用 WordPress 搭建本人的集体博客网站。 构想这样一个场景:某程序员是一个社交媒体达人,喜爱将本人的见闻经验,同步到 Twitter,Facebook,Youtube,微信等多个社交媒体上。手动登录一个个媒体平台而后逐个更新状态,无疑是一件费时费力的事件。 还好咱们是程序员,能够充分发挥本人的入手能力。 假如咱们本人的 WordPress 网站能够同 Kyma 连贯,每当 WordPress 有新的动静(比方一篇博客)公布时,会给 Kyma 发送一个 post.published 事件。Kyma 接管到该事件后,触发注册在该事件上的监听函数,逐个调用社交媒体平台的 API,创立对应的动静即可。 咱们本地部署的 WordPress,表演的就是下图右边 Business Solution 代表的角色。 装置 Kyma for WordPress 的插件之后,咱们可能在 WordPress Settings 标签页里,看到一个新的 Kyma Connector Settings 页面,保护 Kyma 实例的 url,登录用户名和明码等信息。 在上图 Kyma Connection 字段里保护的 url,会被 Kyma Application Connector 解析,并在 WordPress 和 Kyma 间建设相互信赖的连贯。 ...

February 21, 2022 · 4 min · jiezi

关于sap:什么是-SAP-C4HANA-Foundation

任何企业都面临着施行新商业模式的挑战。 这样的挑战须要软件解决方案来反对。 这些解决方案必须是可扩大(scalable)、无风险(risk-free)、疾速的和具备老本效益(cost-efficient). 然而,施行通常无奈达到所有这些指标。 很多时候,它们是旨在打消问题的疾速补丁(quick patch),例如施行新技术。 开发人员和系统管理员都在致力将新技术集成到曾经应用的解决方案中,没有额定的精力解决外围问题。 SAP C/4HANA 旨在做到这一点:解决外围问题。 SAP C/4HANA Foundation 是一个轻量级但功能强大的技术层,它为 SAP C/4HANA 注入了敏捷性(agility)、开放性(openness)和可扩展性,使您可能轻松设计和交付杰出的客户体验。 对于有权应用 C/4HANA Foundation 的客户而言,所有这些都不会产生额定费用。 借助 SAP C/4HANA Foundation,您能够: 疾速施行新的商业模式提供引人入胜(engaging) 的客户体验放弃较低的经营老本SAP C/4HANA Foundation 是一个编排层(orchestration layer),旨在创立独特的客户体验,使客户可能集中管理复杂性,同时容许他们定制和倒退他们的业务。 SAP 在提供蕴含端到端客户体验和跨套件协调能力的解决方案方面具备独特的劣势。 目前,SAP C/4HANA Foundation 包含 SAP C/4HANA cockpit,客户能够在其中跟踪其所有权力、配置的云列表,包含其状态和进一步的治理链接。随之而来的是对整个 C/4HANA 套件的对立拜访,为所有 C/4HANA 套件客户的所有平台组件提供了一个身份。 SAP Cloud Platform Extension Factory 基于开源我的项目 Kyma,协调跨 SAP C/4HANA 的集成和定制,并提供晦涩的集成。它还通过内部化定制和扩大来进步产品稳定性和可降级性,并通过凋谢规范、与技术无关(technology agnostic)的解决方案、基于事件的经济高效的扩大机制和可重用服务来进步敏捷性。

February 21, 2022 · 1 min · jiezi

关于sap:Kyma-Application-Connectivity-特性介绍

Kyma 的 Application Connectivity 负责解决下列畛域的问题: 简化和爱护内部零碎和 Kyma 之间的连贯注册内部事件和 API 并简化 API 应用通过事件机制提供与部署在 Kyma 中的服务和性能的异步通信治理对外部零碎的平安拜访提供监控和跟踪性能,便于运维人员治理依据理论的利用场景,Application Connectivity 以下两种模式之一工作: 传统模式(默认) - 应用应用程序注册表和连接器服务等组件Compass 模式 - 应用 Runtime Agent 并与 Compass 集成应用程序连接器 (AC) 是一个自定义的外部构建的 Kyma 组件,容许 Kyma 连贯内部解决方案。无论要集成本地零碎还是云零碎,集成过程都不会扭转,这能够防止任何与配置或网络相干的问题。 应用 AC 连贯到 Kyma 的内部解决方案,在 Kyma 建模流程里的实体被形容为一个应用程序。连贯的解决方案和应用程序之间始终存在一对一的关系,这有助于确保最高级别的安全性和分离性。这意味着实践上来说,必须在集群中创立 N 个独自的应用程序, 以连贯 N 个不同的内部解决方案, 并在 Kyma 中应用它们的 API 和事件目录。 应用程序连接器由 Istio Ingress Gateway 验证的客户端证书爱护。根 CA 证书由 Application Connector Certs Setup 作业生成并存储为 Kubernetes Secret。默认状况下,服务器密钥和证书是主动生成的,但能够在装置过程中提供自定义服务器证书和密钥。 利用连接器: 管理应用程序的生命周期。建设平安连贯并生成连贯的内部解决方案应用的客户端证书。注册连贯的内部解决方案的 API 和事件目录。将事件从连贯的内部解决方案传递到 Eventing。从 Kyma 发送到连贯的内部解决方案注册的内部 API 的代理调用。所有 AC 组件都独立扩大,容许对其进行调整以适应应用 Kyma 构建的施行的需要。 ...

February 20, 2022 · 1 min · jiezi

关于sap:云原生应用程序运行时-Kyma-的主要特性介绍

Kyma 是一个利用程序运行时,提供了一种在 Kubernetes 的云原生世界中连贯、扩大和自定义应用程序的灵便且简略的办法。 Kyma 开箱即用,提供各种性能,例如: 以经济高效和可扩大的形式运行轻量级性能的无服务器开发平台提供端点以注册内部应用程序的事件和 API 的零碎连贯事件提供音讯通道以接管事件、丰盛事件并应用函数或服务触发业务流用于服务到服务通信和代理的服务网格服务治理平安的 API 裸露集群内可观测性由直观 UI 反对的 CLIKyma 建设在当先的云原生开源我的项目之上,例如 Istio、NATS、Serverless 和 Prometheus。 Kyma 开发的性能是将它们粘合在一起的独特“粘合剂”,因而开发人员能够轻松直观地连贯和扩大应用程序。 通过 Kyma 创立的扩大和自定义与被扩大的外围应用程序拆散,这会带来下列一些劣势: Kyma 蕴含的次要组件: API exposureKyma 中的 API exposure 基于 API Gateway 组件,旨在提供一组性能,容许开发人员以简略的形式公开、爱护和治理他们的 API。 API 网关的次要元素是 API 网关控制器,它在 Kyma 中公开服务。 要使您的服务在 Kyma 集群之外可拜访,请应用 Kyma API 网关控制器公开它,该控制器侦听遵循 apirules.gateway.kyma-project.io 自定义资源定义 (CRD) 的自定义资源 (CR) 对象。 创立无效的 CR 会触发 API Gateway Controller 以创立 Istio 虚构服务。 或者,您能够指定 CR 的规定属性以应用 Oathkeeper 拜访规定爱护公开的服务。 ...

February 20, 2022 · 1 min · jiezi

关于sap:SAP-移动开发技术综述

作为寰球最卓越的企业管理软件提供商之一,SAP 的解决方案涵盖了从 PC 端到挪动设施等多个平台。笔者在 SAP 成都研究院工作了 15 年,对企业管理软件畛域内的挪动开发也有所涉猎。本文将我过来工作中对于挪动开发中积攒的一些教训和大家交换,请社区内挪动开发的专家们不吝赐教。 本文通过以下三局部,分享笔者在 SAP 经验过的挪动利用开发的我的项目教训: (1) 基于 Java 的 Android 原生挪动利用开发(2) 基于 UI5 + Cordova 的混合挪动利用开发(3) 基于 SAP BTP 平台 Mobile Service 的挪动利用开发 挪动操作系统里的最夺目的两颗明星,iOS 和 Android,于 2007 年先后诞生。SAP 随后也推出了一系列基于 iOS 和 Android 平台的原生挪动利用。以 2011年笔者所在的 CRM 开发团队,负责开发的名为 SAP Customer Briefing 的一款 Android 原生利用为例,该利用能帮忙使用者,高效疾速地浏览利用连贯远端的 CRM 零碎里存储的客户主数据,显示每个客户的 Company Profile, 历史业务数据,Key People,销售机会,社交媒体相干信息等维度的数据。 CRM 零碎里的客户主数据信息,通过 OData 裸露给 Android 原生利用生产。OData 是一种形容如何创立和拜访 Restful 服务的 OASIS 规范,咱们采取 ABAP 这门编程语言来实现供 Customer Briefing 利用生产的 OData 服务,具体源代码位于 CRM 零碎名为 CRM_ODATA 开发包内。 ...

February 20, 2022 · 4 min · jiezi

关于sap:什么是-SAP-SUP-Sybase-Unwired-Platform

Sybase SUP 是一个挪动企业应用程序平台 (Mobile Enterprise Application Platform, 简称 MEAP)。这是一种用于治理挪动应用程序的中间件。次要性能是在 SAP 和挪动设施之间存储和传递数据。 为此,它会缓存 SAP 数据的子集,并在 SAP 和挪动设施之间同步该数据。 它还包含用于为(无限)数量的平台创立应用程序的开发工具。 Sybase SUP 提供了另一种办法来创立通过 Web Service 间接与 SAP 对话的挪动应用程序(不应用任何中间件产品)。 它是如何工作的? SUP 应用 BAPI(remote-enabled function modules)与 SAP 集成。 在 SUP 中,BAPI 定义用于创立称为挪动业务对象(Mobile Business Object, 简称为 MBO) 的对象。这些与事实世界的对象(例如客户或销售订单)松散地关联。这些对象具备属性(与 BAPI 的参数相干)和操作(与 BAPI 的操作相干,即它的作用)。 乏味的是,您能够筛选您感兴趣的 BAPI 参数,这使得非 Abappers 比尝试破译 BAPI 定义更容易(以视觉形式)了解 MBO。 数据存储在与 MBO 相干的缓存数据库(Cache Database, 简称为 CDB)中的 SUP 中。 挪动应用程序能够针对这些对象获取和设置数据——或者,对于某些应用程序,您能够将它们设置为间接读取到企业信息服务器(即 SAP)。 因而,在大多数状况下,须要在 SAP 和 SUP 之间以及 SUP 和挪动设施之间进行同步。 ...

February 20, 2022 · 1 min · jiezi

关于sap:SAP-UI5-应用开发教程之三十五-如何把本地开发的-SAP-UI5-应用部署到-ABAP-服务器上试读版

一套适宜 SAP UI5 初学者循序渐进的学习教程教程目录SAP UI5 本地开发环境的搭建SAP UI5 利用开发教程之一:Hello WorldSAP UI5 利用开发教程之二:SAP UI5 的疏导过程 BootstrapSAP UI5 利用开发教程之三:开始接触第一个 SAP UI5 控件SAP UI5 利用开发教程之四:XML 视图初探SAP UI5 利用开发教程之五:视图控制器初探SAP UI5 利用开发教程之六 - 理解 SAP UI5 的模块(Module)概念SAP UI5 利用开发教程之七 - JSON 模型初探SAP UI5 利用开发教程之八 - 多语言的反对SAP UI5 利用开发教程之九 - 创立第一个 ComponentSAP UI5 利用开发教程之十 - 什么是 SAP UI5 利用的描述符 DescriptorSAP UI5 利用开发教程之十一 :SAP UI5 容器类控件 Page 和 PanelSAP UI5 利用开发教程之十二 - 应用 CSS 类对 UI 进行进一步丑化SAP UI5 利用开发教程之十三 - 如何增加自定义 CSS 类SAP UI5 利用开发教程之十四 - 嵌入视图的应用形式SAP UI5 利用开发教程之十五 - 对话框和 Fragments 的应用形式SAP UI5 利用开发教程之十六 - 图标 icon 的应用SAP UI5 利用开发教程之十七 - 聚合绑定在 UI5 复合控件中的应用SAP UI5 利用开发教程之十八 - SAP UI5 数据绑定语法里的特殊符号,以及相对绑定和绝对绑定概念详解SAP UI5 利用开发教程之十九 - SAP UI5 数据类型和简单的数据绑定SAP UI5 利用开发教程之二十 - SAP UI5 的表达式绑定用法解说SAP UI5 利用开发教程之二十一 - SAP UI5 的自定义格局器 Custom FormatterSAP UI5 利用开发教程之二十二 - 过滤器 filter 的开发和应用SAP UI5 利用开发教程之二十三 - 列表控件的排序 Sort 和分组 GroupSAP UI5 利用开发教程之二十四 - 如何应用 OData 数据模型SAP UI5 利用开发教程之二十五 - 应用代理服务器解决 SAP UI5 利用拜访远端 OData 服务的跨域问题SAP UI5 利用开发教程之二十六 - OData 服务配合 Mock 服务器的应用步骤详解SAP UI5 利用开发教程之二十七 - SAP UI5 利用的单元测试工具 QUnit 介绍SAP UI5 利用开发教程之二十八 - SAP UI5 利用的集成测试工具 OPA 介绍SAP UI5 利用开发教程之二十九 - SAP UI5 的路由和导航性能介绍SAP UI5 利用开发教程之三十 - SAP UI5 的路由过程中进行参数传递SAP UI5 利用开发教程之三十一 - SAP UI5 的路由历史和路由回退(Routing back and history)SAP UI5 利用开发教程之三十二 - 如何创立一个自定义 SAP UI5 控件SAP UI5 利用开发教程之三十三 - SAP UI5 利用的响应式布局个性(Responsiveness)SAP UI5 利用开发教程之三十四 - SAP UI5 利用基于设施类型的页面适配性能(Device Adaptation)SAP UI5 利用开发教程之三十五 - 如何把本地开发的 SAP UI5 利用部署到 ABAP 服务器上阐明Jerry 从 2014 年退出 SAP成都研究院 CRM Fiori 开发团队之后开始接触 SAP UI5,已经在 SAP 社区和“汪子熙”微信公众号上发表过多篇对于 SAP UI5 工作原理和源码解析的文章。 ...

February 20, 2022 · 2 min · jiezi

关于sap:本地开发的-SAP-UI5-应用部署到-ABAP-服务器执行出错的问题分析

我应用 SAP UI5 Tools 的 CLI 工具,运行命令 npm run deploy 将 Visual Studio Code 里开发的 SAP UI5 利用,部署到 ABAP 服务器后,胜利生成了 url: https://er9.sap:44300/sap/bc/... 然而浏览器打不开: 谬误音讯:ICF Node NOT found! 登录后盾执行事物码 sicf,的确没有在门路 ui5_ui5 上面发现 zjerrypureui5 这个节点。 上面的 url 是我之前这篇文章本地开发好的 SAP Fiori Elements 利用,如何部署到 ABAP 服务器上?胜利部署到 ER9 零碎后生成的 url: https://er9:44300/sap/bc/bsp/... 一些常见的谬误HTTP Status 504 - An internal application error occurred如果应用程序蕴含一个相当大的文件,并且 HTML5 dispatcher(位于从 SAP Web IDE 到 SAP 零碎的 route 上)在尝试 dispatch 时呈现超时,则可能会产生这种状况。 ...

February 20, 2022 · 1 min · jiezi

关于sap:使用-SAP-Fiori-Tools-部署-SAP-UI5-应用到-ABAP-服务器时遇到的各种错误和解决办法

谬误1(node:28340) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'customMiddleware' of undefinedat handleABAP (C:\Code\UI5\Walkthrough\35\node_modules\@sap\ux-ui5-tooling\dist\cli\cmd\add-deploy-config.js:113:29) 谬误起因:应用的 Fiori tools CLI 版本过低所致。 "@sap/ux-ui5-tooling": "1.0.10" https://www.npmjs.com/package... 解决办法:应用最新的 1.4.7 版本: 谬误音讯2Error: Cannot find proxy middleware config in [C:\Code\UI5\Walkthrough\35\ui5.yaml]at f (C:\app\node-v12.18.3-win-x64\node_modules\@sap\generator-fiori\generators\deployment-generator\abap\index.js:2:616172)at Object.r.handleErrorMessage (C:\app\node-v12.18.3-win-x64\node_modules\@sap\generator-fiori\generators\deployment-generator\abap\index.js:2:616358) 谬误起因:ui5.yaml 文件内容不全。 至多应该蕴含 fiori-tools-proxy 区域。 参考一个格局正确的 ui5.yaml: specVersion: '1.0'metadata: name: 'project1'type: applicationui5Theme: sap_fiori_3server: customMiddleware: - name: fiori-tools-proxy afterMiddleware: compression configuration: ignoreCertError: false # If set to true, certificate errors will be ignored. E.g. self-signed certificates will be accepted backend: - path: /sap/opu/odata url: http://localhost ui5: path: - /resources - /test-resources url: https://ui5.sap.com version: # The UI5 version, for instance, 1.78.1. Empty means latest version - name: fiori-tools-appreload afterMiddleware: compression configuration: port: 35729 path: webapp谬误音讯3info builder:custom deploy-to-abap Create Archiveinfo builder:custom deploy-to-abap Starting Deployment.on project1 � (11/11) Running task deploy-to-abap...WARN builder:custom deploy-to-abap Connecting without any credentials, deployment may fail if authorization is requiredERR! builder:custom deploy-to-abap Deployment Failed.tion project1 � (11/11) Running task deploy-to-abap...ERR! builder:custom deploy-to-abap getaddrinfo ENOTFOUND aa起因是 ui5-deploy.yaml 文件中 deploy-to-abap 这个自定义 task 的 target, 即远端 ABAP 零碎的 url 保护不正确。 ...

February 20, 2022 · 2 min · jiezi

关于sap:SAP-UI5-Tools-运行了-fiori-add-deployconfig-命令之后工程文件发生了哪些变化

我应用这篇文章 应用 generator-easy-ui5 疾速创立 SAP UI5 利用的工程构造 介绍的工具,创立了一个 SAP UI5 利用,而后运行了 SAP UI5 Tools 提供的命令 fiori add deploy-config: 之后 SAP UI5 工程里有两个文件主动被该命令批改了: package.jsonui5-deploy.yamlpackage.json 文件的变动执行命令之前:"deploy": "fiori verify" 执行命令之后:"deploy": "ui5 build preload --clean-dest --config ui5-deploy.yaml --include-task=generateManifestBundle generateCachebusterInfo && rimraf archive.zip", 也就是说,fiori deploy 实现的步骤,蕴含 build,生成 ManifestBundle 和 CachebusterInfo,以及删除 archive.zip 这几个阶段。 ui5-deploy.yaml 的变动就是蕴含了咱们在运行 fiori add deploy-config 命令之后,在 deploy 向导里保护的信息。 能够独自执行 npm run build 命令: 这个 build 命令执行之后,在 dist 文件夹内,生成了三个新文件: ...

February 20, 2022 · 1 min · jiezi

关于sap:SAP-UI5-Tools-使用简介

咱们能够应用如下命令行装置 SAP UI5 Tools: npm install --global @ui5/cli进入一个空的文件夹,执行命令行 ui5 init 报错: Initialization not possible: Missing package.json file 而后用命令行 npm init 生成一个 package.json: 而后从新执行 ui5 init: 呈现新的谬误音讯: Could not detect project type: Could not find 'webapp' or 'src' / 'test' folders.Applications should only have a 'webapp' folder. 那么我就手动创立一个 webapp 文件夹。 之后 init 执行胜利,主动创立了一个 ui5.yaml 文件: 内容如下: 依照我这篇文章 应用 generator-easy-ui5 疾速创立 SAP UI5 利用的工程构造 介绍的工具,创立一个 SAP UI5 利用所需的根本文件层级构造。 ...

February 20, 2022 · 1 min · jiezi

关于sap:SAP-UI5-框架是如何执行-batch-请求的单步调试

req.get('content-type') 失常的 batch 操作,response 的 content-type 不应该返回 html 类型: 正确的 batch response,Content-Type 值应该是 multipart/mixed; boundary=batchresponse_前面跟一个 guid success handler 即下图的 fnSuccess, 被包裹在 wraHandler 里。 content-type 不同的 response,对应有不同的 handler 来解决。 httpClient.request 如果执行出错,会进入到 catch 分支,谬误音讯: invalid MIME part type 应用分号将 multipart/mixed 和 boundary 的具体值分隔开。 每种类型都有对应的 handler,由对应的 handler 调用 read 办法执行 response 的解析操作。 解析 batch 操作的响应: 在出错状况下,从 Chrome 开发者工具 network 标签页里下载 batch 响应到本地,和不出错的场景比拟,格局上没有任何差别: 问题出在 batch response 的 header 里的 Content-Type 字段。 ...

February 20, 2022 · 1 min · jiezi

关于sap:SAP-UI5-和-OpenUI5-的区别和联系

开源我的项目 OpenUI5 提供了大部分根本框架性能。 SAPUI5 通过在不同的 license 下提供额定的库来加强这一点。 OpenUI5 在 Apache 2.0 许可下提供。 UI5 Tooling 中应用的 SAPUI5 包是依据 SAP 开发人员许可协定的条款提供的。 请留神,应用 OpenUI5 框架的我的项目不能依赖于应用 SAPUI5 框架的我的项目。 然而,SAPUI5 我的项目能够依赖于 OpenUI5 我的项目。 OpenUI5 是开源的,收费应用,在 Apache 2.0 许可下公布。 因为咱们还应用了许多开源库,因而能够从世界各地开发人员的教训和常识中受害。 另一方面,SAPUI5 集成在以下产品中: SAP HANASAP 业务技术平台SAP NetWeaver 7.4 或更高版本以及 ABAP 平台 1809 或更高版本(蕴含在 UI 技术 (SAP_UI) 组件中)SAP NetWeaver Application Server 7.3x 的用户界面插件理解 SAP UI5 和 Open UI5 各自提供了哪些库的最简略办法是,查看每个演示套件的 API 参考。 不难发现,SAPUI5 中的库列表要长得多……这绝不意味着 OpenUI5 提供的范畴(scope) 比 SAP UI5 小。 ...

February 20, 2022 · 1 min · jiezi

关于sap:SAP-UI5-Tools-里配置文件-ui5localyaml-的配置要点

ui5.yaml 文件里的文件门路必须用符号 / 即 forward slash 符号。 framework 类型能够抉择 SAPUI5 或者 OpenUI5: 上图打印的信息: Using SAPUI5 version: 1.98.0因为咱们把版本号 1.98.0 定义在 ui5-local.yaml 文件的 framework 区域的 version 字段里。 然而运行时,咱们会看到这个版本号被另一个优先级更高的设置所笼罩:即 webapp 文件夹中的 manifest.json 中的 minUI5Version:1.66.0: SAP UI5 运行时依赖的库列表,列举在 framework 区域的 libraries 字段里: 运行时会主动装置: Installing missing package @sapui5/distribution-metadata...info normalizer:ui5Framework:npm:Installer Installing missing package @sapui5/sap.suite.ui.generic.template...info normalizer:ui5Framework:npm:Installer Installing missing package @sapui5/sap.ui.generic.app...info normalizer:ui5Framework:npm:Installer Installing missing package @sapui5/sap.ui.comp...info normalizer:ui5Framework:npm:Installer Installing missing package @sapui5/sap.ushell...info normalizer:ui5Framework:npm:Installer Installing missing package @openui5/sap.f...info normalizer:ui5Framework:npm:Installer Installing missing package @openui5/sap.ui.core...info normalizer:ui5Framework:npm:Installer Installing missing package @openui5/sap.m...info normalizer:ui5Framework:npm:Installer Installing missing package @openui5/sap.ui.table...info normalizer:ui5Framework:npm:Installer Installing missing package @sapui5/sap.fe.placeholder... ...

February 20, 2022 · 2 min · jiezi

关于sap:使用-generatoreasyui5-快速创建-SAP-UI5-应用的工程结构

generator-easy-ui5 的 Github 仓库地址: https://github.com/SAP/genera... 该工具是为了简化 SAP UI5 利用创立而设计的。 应用上面的命令行装置这个工具: npm install -g yo generator-easy-ui5 装置结束后,执行命令行 yo: 如果看到上图的输入,阐明 generator 装置胜利了。 抉择 Easy Ui5,回车。 报错:unexpected token '.' 应该抉择 @sap/fiori, 而后显示一个创立向导,逐个回复向导的问题,按回车键进入下一向导项。 主动生成的文件列表如下: 确保最初看到 Application generated successfully 的音讯: 来看看 generator-easy-ui5 都帮忙咱们主动生成了哪些文件。 package.json 里的 devDependencies 和 dependencies: "devDependencies": { "@ui5/cli": "^2.11.1", "@ui5/fs": "^2.0.6", "@ui5/logger": "^2.0.1", "@sap/ux-ui5-tooling": "1", "rimraf": "3.0.2" }, "ui5": { "dependencies": [ "@sap/ux-ui5-tooling" ] }script 区域有很多 fiori 命令行,来自 @sap/ux-ui5-tooling: ...

February 20, 2022 · 1 min · jiezi

关于sap:SAP-Fiori-Tools-和对应的-CLI-Command-Line-Interface

帮忙文档地址:https://help.sap.com/viewer/p... SAP Fiori 工具提供了许多性能来进步应用 SAP Fiori Elements 或者 SAPUI5 自由式办法开发 SAP Fiori 应用程序的效率。 SAP Fiori 工具与 SAP Fiori Elements 一起缩小了开发工夫、保护老本,并利用了元数据驱动的 UI 的劣势。 SAP Fiori 工具包含以下扩大: 用于初始创立应用程序的向导。用于查看数据模型的服务建模器。用于保护正文的 XML 和基于表单的编辑器(仅限 SAP Fiori Elements)应用程序页面构造和配置 SAPUI5 灵活性设置的能力(仅限 SAP Fiori Elements)用于施行性能的疏导式开发(仅限 SAP Fiori Elements)如果采纳 Visual Studio Code 作为 SAP UI5 开发工具,咱们能够通过装置一个名为 SAP Fiori Tools -Extension Pack 的扩大,来装置 SAP Fiori Tools: 更具体的采纳 Visual Studio Code 来搭建 SAP UI5 的本地开发环境的步骤,请参考我的文章:SAP UI5 本地开发环境的搭建 这个工具还有一个命令行接口,Command Line Interface 缩写为 CLI. ...

February 20, 2022 · 1 min · jiezi

关于sap:什么是-SAP-UI5-的-Hybrid-Web-Containers

咱们能够将挪动利用程序开发为蕴含原生应用程序包装器(例如 PhoneGap),和用于在用户界面上显示内容的 HTML 查看器的混合应用程序(Hybrid Web Container)。 混合利用的劣势在于能够在利用商店中公布它们。此外,通过将利用程序代码和 SAP UI5 库文件嵌入到混合容器中,用户只需装置一次文件,无需每次启动应用程序时下载。 然而库的大小变得很重要,因为每个用户都必须安装文件,而在 Web 应用程序中,库部署在服务器上,用户只须要在运行时下载库的所需局部。 要在混合应用程序中蕴含须要的资源,能够应用动态挪动运行时包 openui5-runtime-mobile*.zip。该包不蕴含在 SAP UI5 中,而是蕴含在开源版本 OpenUI5中。 这些包的库大小相当小,因为最有可能不须要的内容已被删除,例如测试页面。一个 package 蕴含所有 JavaScript 文件的调试版本以及优化和最小化的版本。因而,能够将包用于生产用处以及调试目标。要在应用程序包装器(例如 PhoneGap)中应用此包,请将包解压缩到利用程序开发我的项目的相应资源地位。而后,应用程序包装器构建蕴含文件并使其在运行时可用。 为了管制文件构建出的包文件尺寸,它只蕴含最有可能应用的控件库,而不是所有控件库。依据混合应用程序的不同,可能须要通过从运行时的相应文件夹复制库来增加库,或者删除库以减小包大小,从而缩小用户的装置大小。 该文件蕴含以下管制库: sap.fsap.msap.tntsap.ui.coresap.ui.layoutsap.ui.suitesap.ui.unifiedsap.uxap蕴含或不蕴含哪些库的决定可能不存在相对主观的规范。它仅基于教训法令,并且无论如何都须要对许多应用程序进行调整。 此外,挪动/混合包不包含通常不须要的某些类型的文件。每个客户理论的利用场合都可能会有所不同,因而须要依据特定利用的要求增加相应的文件。原本 SAP UI5 利用里设计出的 library-preload.js,蕴含了该 library 里的所有控件。采纳这种文件来加载库,能够缩小 HTTP 申请数量。 然而 SAP UI5 的 Hybrid Web Containers 不再须要 library-preload.js 文件,因为在混合应用程序的执行环境里是从本地加载库文件,没有任何的 HTTP 提早。SAPUI5 默认会尝试拜访它们,因而您可能会在日志文件或开发人员工具中看到加载这些文件的尝试失败。然而,这些谬误音讯并没有什么影响,您能够通过申明不存在此类文件并在 SAPUI5 疏导脚本标记中设置以下配置来打消它们: data-sap-ui-preload=""package 尺寸的优化只管动态包足够小,能够蕴含在混合应用程序中,但依然能够通过删除其余文件来进一步减小大小并优化特定应用程序的内容。以下列表提供了一些示例: 如果不须要相应的管制库,您能够删除所有库文件夹。例如,在 OpenUI5 版本中能够删除 suite 和 unified 文件夹。在每个/resources/sap/ ... /themes文件夹中,能够删除所有主题文件夹,但正在应用的主题文件夹除外。device ready event混合 Web 容器须要一些工夫进行初始化。在此期间,AJAX 申请的发送被阻止,这意味着一旦发送 AJAX 申请,JavaScript 代码就会进行,代码执行也会进行。这会导致 UI 处于 freeze 状态。 ...

February 20, 2022 · 1 min · jiezi

关于sap:SAP-UI5-应用开发教程之三十四-SAP-UI5-应用基于设备类型的页面适配功能Device-Adaptation

一套适宜 SAP UI5 初学者循序渐进的学习教程教程目录SAP UI5 本地开发环境的搭建SAP UI5 利用开发教程之一:Hello WorldSAP UI5 利用开发教程之二:SAP UI5 的疏导过程 BootstrapSAP UI5 利用开发教程之三:开始接触第一个 SAP UI5 控件SAP UI5 利用开发教程之四:XML 视图初探SAP UI5 利用开发教程之五:视图控制器初探SAP UI5 利用开发教程之六 - 理解 SAP UI5 的模块(Module)概念SAP UI5 利用开发教程之七 - JSON 模型初探SAP UI5 利用开发教程之八 - 多语言的反对SAP UI5 利用开发教程之九 - 创立第一个 ComponentSAP UI5 利用开发教程之十 - 什么是 SAP UI5 利用的描述符 DescriptorSAP UI5 利用开发教程之十一 :SAP UI5 容器类控件 Page 和 PanelSAP UI5 利用开发教程之十二 - 应用 CSS 类对 UI 进行进一步丑化SAP UI5 利用开发教程之十三 - 如何增加自定义 CSS 类SAP UI5 利用开发教程之十四 - 嵌入视图的应用形式SAP UI5 利用开发教程之十五 - 对话框和 Fragments 的应用形式SAP UI5 利用开发教程之十六 - 图标 icon 的应用SAP UI5 利用开发教程之十七 - 聚合绑定在 UI5 复合控件中的应用SAP UI5 利用开发教程之十八 - SAP UI5 数据绑定语法里的特殊符号,以及相对绑定和绝对绑定概念详解SAP UI5 利用开发教程之十九 - SAP UI5 数据类型和简单的数据绑定SAP UI5 利用开发教程之二十 - SAP UI5 的表达式绑定用法解说SAP UI5 利用开发教程之二十一 - SAP UI5 的自定义格局器 Custom FormatterSAP UI5 利用开发教程之二十二 - 过滤器 filter 的开发和应用SAP UI5 利用开发教程之二十三 - 列表控件的排序 Sort 和分组 GroupSAP UI5 利用开发教程之二十四 - 如何应用 OData 数据模型SAP UI5 利用开发教程之二十五 - 应用代理服务器解决 SAP UI5 利用拜访远端 OData 服务的跨域问题SAP UI5 利用开发教程之二十六 - OData 服务配合 Mock 服务器的应用步骤详解SAP UI5 利用开发教程之二十七 - SAP UI5 利用的单元测试工具 QUnit 介绍SAP UI5 利用开发教程之二十八 - SAP UI5 利用的集成测试工具 OPA 介绍SAP UI5 利用开发教程之二十九 - SAP UI5 的路由和导航性能介绍SAP UI5 利用开发教程之三十 - SAP UI5 的路由过程中进行参数传递SAP UI5 利用开发教程之三十一 - SAP UI5 的路由历史和路由回退(Routing back and history)SAP UI5 利用开发教程之三十二 - 如何创立一个自定义 SAP UI5 控件SAP UI5 利用开发教程之三十三 - SAP UI5 利用的响应式布局个性(Responsiveness)SAP UI5 利用开发教程之三十四 - SAP UI5 利用基于设施类型的页面适配性能(Device Adaptation)阐明Jerry 从 2014 年退出 SAP成都研究院 CRM Fiori 开发团队之后开始接触 SAP UI5,已经在 SAP 社区和“汪子熙”微信公众号上发表过多篇对于 SAP UI5 工作原理和源码解析的文章。 ...

February 20, 2022 · 2 min · jiezi

关于sap:SAP-UI5-设备类型检测-Device-API-的工作原理

为什么 SAP UI5 利用初始化时,要调用 SAP UI5 设施检测 API,即 sap.ui.Device 来检测运行以后 SAP UI5 利用的设施类型? 能够查看我这篇文章:SAP UI5 利用开发教程之三十四 - SAP UI5 利用基于设施类型的页面适配性能(Device Adaptation)。 本文介绍该设施检测 API 自身的工作原理。 Device API 所在的 Device.js 文件被加载后,立刻执行 setOS 办法: 从 OS 构造变量能够看出,SAP UI5 反对下列几种操作系统的检测: AndroidiOSLinuxmacWindows 咱们通过浏览器的 userAgent 来判断操作系统类型:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36 应用正则表达式匹配,如果发现有 Android 字符串,则阐明以后的 SAP UI5 利用,运行在 Android 挪动设施上。 如果没有检测到,进入 getDesktopOS 分支。 我用的是 Windows10 操作系统,platform 字段值为 Win32: ...

February 20, 2022 · 1 min · jiezi

关于sap:SAP-UI5-应用开发教程之三十三-SAP-UI5-应用的响应式布局特性Responsiveness试读版

一套适宜 SAP UI5 初学者循序渐进的学习教程教程目录SAP UI5 本地开发环境的搭建SAP UI5 利用开发教程之一:Hello WorldSAP UI5 利用开发教程之二:SAP UI5 的疏导过程 BootstrapSAP UI5 利用开发教程之三:开始接触第一个 SAP UI5 控件SAP UI5 利用开发教程之四:XML 视图初探SAP UI5 利用开发教程之五:视图控制器初探SAP UI5 利用开发教程之六 - 理解 SAP UI5 的模块(Module)概念SAP UI5 利用开发教程之七 - JSON 模型初探SAP UI5 利用开发教程之八 - 多语言的反对SAP UI5 利用开发教程之九 - 创立第一个 ComponentSAP UI5 利用开发教程之十 - 什么是 SAP UI5 利用的描述符 DescriptorSAP UI5 利用开发教程之十一 :SAP UI5 容器类控件 Page 和 PanelSAP UI5 利用开发教程之十二 - 应用 CSS 类对 UI 进行进一步丑化SAP UI5 利用开发教程之十三 - 如何增加自定义 CSS 类SAP UI5 利用开发教程之十四 - 嵌入视图的应用形式SAP UI5 利用开发教程之十五 - 对话框和 Fragments 的应用形式SAP UI5 利用开发教程之十六 - 图标 icon 的应用SAP UI5 利用开发教程之十七 - 聚合绑定在 UI5 复合控件中的应用SAP UI5 利用开发教程之十八 - SAP UI5 数据绑定语法里的特殊符号,以及相对绑定和绝对绑定概念详解SAP UI5 利用开发教程之十九 - SAP UI5 数据类型和简单的数据绑定SAP UI5 利用开发教程之二十 - SAP UI5 的表达式绑定用法解说SAP UI5 利用开发教程之二十一 - SAP UI5 的自定义格局器 Custom FormatterSAP UI5 利用开发教程之二十二 - 过滤器 filter 的开发和应用SAP UI5 利用开发教程之二十三 - 列表控件的排序 Sort 和分组 GroupSAP UI5 利用开发教程之二十四 - 如何应用 OData 数据模型SAP UI5 利用开发教程之二十五 - 应用代理服务器解决 SAP UI5 利用拜访远端 OData 服务的跨域问题SAP UI5 利用开发教程之二十六 - OData 服务配合 Mock 服务器的应用步骤详解SAP UI5 利用开发教程之二十七 - SAP UI5 利用的单元测试工具 QUnit 介绍SAP UI5 利用开发教程之二十八 - SAP UI5 利用的集成测试工具 OPA 介绍SAP UI5 利用开发教程之二十九 - SAP UI5 的路由和导航性能介绍SAP UI5 利用开发教程之三十 - SAP UI5 的路由过程中进行参数传递SAP UI5 利用开发教程之三十一 - SAP UI5 的路由历史和路由回退(Routing back and history)SAP UI5 利用开发教程之三十二 - 如何创立一个自定义 SAP UI5 控件[SAP UI5 利用开发教程之三十三 - SAP UI5 利用的响应式布局个性(Responsiveness)]()阐明Jerry 从 2014 年退出 SAP成都研究院 CRM Fiori 开发团队之后开始接触 SAP UI5,已经在 SAP 社区和“汪子熙”微信公众号上发表过多篇对于 SAP UI5 工作原理和源码解析的文章。 ...

February 20, 2022 · 2 min · jiezi

关于sap:SAP-UI5-应用开发教程之三十二-如何创建一个自定义-SAP-UI5-控件

一套适宜 SAP UI5 初学者循序渐进的学习教程教程目录SAP UI5 本地开发环境的搭建SAP UI5 利用开发教程之一:Hello WorldSAP UI5 利用开发教程之二:SAP UI5 的疏导过程 BootstrapSAP UI5 利用开发教程之三:开始接触第一个 SAP UI5 控件SAP UI5 利用开发教程之四:XML 视图初探SAP UI5 利用开发教程之五:视图控制器初探SAP UI5 利用开发教程之六 - 理解 SAP UI5 的模块(Module)概念SAP UI5 利用开发教程之七 - JSON 模型初探SAP UI5 利用开发教程之八 - 多语言的反对SAP UI5 利用开发教程之九 - 创立第一个 ComponentSAP UI5 利用开发教程之十 - 什么是 SAP UI5 利用的描述符 DescriptorSAP UI5 利用开发教程之十一 :SAP UI5 容器类控件 Page 和 PanelSAP UI5 利用开发教程之十二 - 应用 CSS 类对 UI 进行进一步丑化SAP UI5 利用开发教程之十三 - 如何增加自定义 CSS 类SAP UI5 利用开发教程之十四 - 嵌入视图的应用形式SAP UI5 利用开发教程之十五 - 对话框和 Fragments 的应用形式SAP UI5 利用开发教程之十六 - 图标 icon 的应用SAP UI5 利用开发教程之十七 - 聚合绑定在 UI5 复合控件中的应用SAP UI5 利用开发教程之十八 - SAP UI5 数据绑定语法里的特殊符号,以及相对绑定和绝对绑定概念详解SAP UI5 利用开发教程之十九 - SAP UI5 数据类型和简单的数据绑定SAP UI5 利用开发教程之二十 - SAP UI5 的表达式绑定用法解说SAP UI5 利用开发教程之二十一 - SAP UI5 的自定义格局器 Custom FormatterSAP UI5 利用开发教程之二十二 - 过滤器 filter 的开发和应用SAP UI5 利用开发教程之二十三 - 列表控件的排序 Sort 和分组 GroupSAP UI5 利用开发教程之二十四 - 如何应用 OData 数据模型SAP UI5 利用开发教程之二十五 - 应用代理服务器解决 SAP UI5 利用拜访远端 OData 服务的跨域问题SAP UI5 利用开发教程之二十六 - OData 服务配合 Mock 服务器的应用步骤详解SAP UI5 利用开发教程之二十七 - SAP UI5 利用的单元测试工具 QUnit 介绍SAP UI5 利用开发教程之二十八 - SAP UI5 利用的集成测试工具 OPA 介绍SAP UI5 利用开发教程之二十九 - SAP UI5 的路由和导航性能介绍SAP UI5 利用开发教程之三十 - SAP UI5 的路由过程中进行参数传递SAP UI5 利用开发教程之三十一 - SAP UI5 的路由历史和路由回退(Routing back and history)SAP UI5 利用开发教程之三十二 - 如何创立一个自定义 SAP UI5 控件阐明Jerry 从 2014 年退出 SAP成都研究院 CRM Fiori 开发团队之后开始接触 SAP UI5,已经在 SAP 社区和“汪子熙”微信公众号上发表过多篇对于 SAP UI5 工作原理和源码解析的文章。 ...

February 20, 2022 · 2 min · jiezi

关于sap:SAP-UI5-的路由历史和路由回退Routing-back-and-history试读版

一套适宜 SAP UI5 初学者循序渐进的学习教程教程目录SAP UI5 本地开发环境的搭建SAP UI5 利用开发教程之一:Hello WorldSAP UI5 利用开发教程之二:SAP UI5 的疏导过程 BootstrapSAP UI5 利用开发教程之三:开始接触第一个 SAP UI5 控件SAP UI5 利用开发教程之四:XML 视图初探SAP UI5 利用开发教程之五:视图控制器初探SAP UI5 利用开发教程之六 - 理解 SAP UI5 的模块(Module)概念SAP UI5 利用开发教程之七 - JSON 模型初探SAP UI5 利用开发教程之八 - 多语言的反对SAP UI5 利用开发教程之九 - 创立第一个 ComponentSAP UI5 利用开发教程之十 - 什么是 SAP UI5 利用的描述符 DescriptorSAP UI5 利用开发教程之十一 :SAP UI5 容器类控件 Page 和 PanelSAP UI5 利用开发教程之十二 - 应用 CSS 类对 UI 进行进一步丑化SAP UI5 利用开发教程之十三 - 如何增加自定义 CSS 类SAP UI5 利用开发教程之十四 - 嵌入视图的应用形式SAP UI5 利用开发教程之十五 - 对话框和 Fragments 的应用形式SAP UI5 利用开发教程之十六 - 图标 icon 的应用SAP UI5 利用开发教程之十七 - 聚合绑定在 UI5 复合控件中的应用SAP UI5 利用开发教程之十八 - SAP UI5 数据绑定语法里的特殊符号,以及相对绑定和绝对绑定概念详解SAP UI5 利用开发教程之十九 - SAP UI5 数据类型和简单的数据绑定SAP UI5 利用开发教程之二十 - SAP UI5 的表达式绑定用法解说SAP UI5 利用开发教程之二十一 - SAP UI5 的自定义格局器 Custom FormatterSAP UI5 利用开发教程之二十二 - 过滤器 filter 的开发和应用SAP UI5 利用开发教程之二十三 - 列表控件的排序 Sort 和分组 GroupSAP UI5 利用开发教程之二十四 - 如何应用 OData 数据模型SAP UI5 利用开发教程之二十五 - 应用代理服务器解决 SAP UI5 利用拜访远端 OData 服务的跨域问题SAP UI5 利用开发教程之二十六 - OData 服务配合 Mock 服务器的应用步骤详解SAP UI5 利用开发教程之二十七 - SAP UI5 利用的单元测试工具 QUnit 介绍SAP UI5 利用开发教程之二十八 - SAP UI5 利用的集成测试工具 OPA 介绍SAP UI5 利用开发教程之二十九 - SAP UI5 的路由和导航性能介绍SAP UI5 利用开发教程之三十 - SAP UI5 的路由过程中进行参数传递SAP UI5 利用开发教程之三十一 - SAP UI5 的路由历史和路由回退(Routing back and history)阐明Jerry 从 2014 年退出 SAP成都研究院 CRM Fiori 开发团队之后开始接触 SAP UI5,已经在 SAP 社区和“汪子熙”微信公众号上发表过多篇对于 SAP UI5 工作原理和源码解析的文章。 ...

February 20, 2022 · 2 min · jiezi

关于sap:SAP-UI5-应用开发教程之三十-SAP-UI5-的路由过程中进行参数传递

一套适宜 SAP UI5 初学者循序渐进的学习教程教程目录SAP UI5 本地开发环境的搭建SAP UI5 利用开发教程之一:Hello WorldSAP UI5 利用开发教程之二:SAP UI5 的疏导过程 BootstrapSAP UI5 利用开发教程之三:开始接触第一个 SAP UI5 控件SAP UI5 利用开发教程之四:XML 视图初探SAP UI5 利用开发教程之五:视图控制器初探SAP UI5 利用开发教程之六 - 理解 SAP UI5 的模块(Module)概念SAP UI5 利用开发教程之七 - JSON 模型初探SAP UI5 利用开发教程之八 - 多语言的反对SAP UI5 利用开发教程之九 - 创立第一个 ComponentSAP UI5 利用开发教程之十 - 什么是 SAP UI5 利用的描述符 DescriptorSAP UI5 利用开发教程之十一 :SAP UI5 容器类控件 Page 和 PanelSAP UI5 利用开发教程之十二 - 应用 CSS 类对 UI 进行进一步丑化SAP UI5 利用开发教程之十三 - 如何增加自定义 CSS 类SAP UI5 利用开发教程之十四 - 嵌入视图的应用形式SAP UI5 利用开发教程之十五 - 对话框和 Fragments 的应用形式SAP UI5 利用开发教程之十六 - 图标 icon 的应用SAP UI5 利用开发教程之十七 - 聚合绑定在 UI5 复合控件中的应用SAP UI5 利用开发教程之十八 - SAP UI5 数据绑定语法里的特殊符号,以及相对绑定和绝对绑定概念详解SAP UI5 利用开发教程之十九 - SAP UI5 数据类型和简单的数据绑定SAP UI5 利用开发教程之二十 - SAP UI5 的表达式绑定用法解说SAP UI5 利用开发教程之二十一 - SAP UI5 的自定义格局器 Custom FormatterSAP UI5 利用开发教程之二十二 - 过滤器 filter 的开发和应用SAP UI5 利用开发教程之二十三 - 列表控件的排序 Sort 和分组 GroupSAP UI5 利用开发教程之二十四 - 如何应用 OData 数据模型SAP UI5 利用开发教程之二十五 - 应用代理服务器解决 SAP UI5 利用拜访远端 OData 服务的跨域问题SAP UI5 利用开发教程之二十六 - OData 服务配合 Mock 服务器的应用步骤详解SAP UI5 利用开发教程之二十七 - SAP UI5 利用的单元测试工具 QUnit 介绍SAP UI5 利用开发教程之二十八 - SAP UI5 利用的集成测试工具 OPA 介绍SAP UI5 利用开发教程之二十九 - SAP UI5 的路由和导航性能介绍SAP UI5 利用开发教程之三十 - SAP UI5 的路由过程中进行参数传递阐明Jerry 从 2014 年退出 SAP成都研究院 CRM Fiori 开发团队之后开始接触 SAP UI5,已经在 SAP 社区和“汪子熙”微信公众号上发表过多篇对于 SAP UI5 工作原理和源码解析的文章。 ...

February 20, 2022 · 2 min · jiezi

关于sap:SAP-UI5-应用开发教程之二十九-SAP-UI5-的路由和导航功能介绍试读版

一套适宜 SAP UI5 初学者循序渐进的学习教程教程目录SAP UI5 本地开发环境的搭建SAP UI5 利用开发教程之一:Hello WorldSAP UI5 利用开发教程之二:SAP UI5 的疏导过程 BootstrapSAP UI5 利用开发教程之三:开始接触第一个 SAP UI5 控件SAP UI5 利用开发教程之四:XML 视图初探SAP UI5 利用开发教程之五:视图控制器初探SAP UI5 利用开发教程之六 - 理解 SAP UI5 的模块(Module)概念SAP UI5 利用开发教程之七 - JSON 模型初探SAP UI5 利用开发教程之八 - 多语言的反对SAP UI5 利用开发教程之九 - 创立第一个 ComponentSAP UI5 利用开发教程之十 - 什么是 SAP UI5 利用的描述符 DescriptorSAP UI5 利用开发教程之十一 :SAP UI5 容器类控件 Page 和 PanelSAP UI5 利用开发教程之十二 - 应用 CSS 类对 UI 进行进一步丑化SAP UI5 利用开发教程之十三 - 如何增加自定义 CSS 类SAP UI5 利用开发教程之十四 - 嵌入视图的应用形式SAP UI5 利用开发教程之十五 - 对话框和 Fragments 的应用形式SAP UI5 利用开发教程之十六 - 图标 icon 的应用SAP UI5 利用开发教程之十七 - 聚合绑定在 UI5 复合控件中的应用SAP UI5 利用开发教程之十八 - SAP UI5 数据绑定语法里的特殊符号,以及相对绑定和绝对绑定概念详解SAP UI5 利用开发教程之十九 - SAP UI5 数据类型和简单的数据绑定SAP UI5 利用开发教程之二十 - SAP UI5 的表达式绑定用法解说SAP UI5 利用开发教程之二十一 - SAP UI5 的自定义格局器 Custom FormatterSAP UI5 利用开发教程之二十二 - 过滤器 filter 的开发和应用SAP UI5 利用开发教程之二十三 - 列表控件的排序 Sort 和分组 GroupSAP UI5 利用开发教程之二十四 - 如何应用 OData 数据模型SAP UI5 利用开发教程之二十五 - 应用代理服务器解决 SAP UI5 利用拜访远端 OData 服务的跨域问题SAP UI5 利用开发教程之二十六 - OData 服务配合 Mock 服务器的应用步骤详解SAP UI5 利用开发教程之二十七 - SAP UI5 利用的单元测试工具 QUnit 介绍SAP UI5 利用开发教程之二十八 - SAP UI5 利用的集成测试工具 OPA 介绍SAP UI5 利用开发教程之二十九 - SAP UI5 的路由和导航性能介绍阐明Jerry 从 2014 年退出 SAP成都研究院 CRM Fiori 开发团队之后开始接触 SAP UI5,已经在 SAP 社区和“汪子熙”微信公众号上发表过多篇对于 SAP UI5 工作原理和源码解析的文章。 ...

February 20, 2022 · 2 min · jiezi

关于sap:SAP-UI5-初学者教程之二十六-OData-服务配合-Mock-服务器的使用步骤详解试读版

一套适宜 SAP UI5 初学者循序渐进的学习教程教程目录SAP UI5 本地开发环境的搭建SAP UI5 初学者教程之一:Hello WorldSAP UI5 初学者教程之二:SAP UI5 的疏导过程 BootstrapSAP UI5 初学者教程之三:开始接触第一个 SAP UI5 控件SAP UI5 初学者教程之四:XML 视图初探SAP UI5 初学者教程之五:视图控制器初探SAP UI5 初学者教程之六 - 理解 SAP UI5 的模块(Module)概念SAP UI5 初学者教程之七 - JSON 模型初探SAP UI5 初学者教程之八 - 多语言的反对SAP UI5 初学者教程之九 - 创立第一个 ComponentSAP UI5 初学者教程之十 - 什么是 SAP UI5 利用的描述符 DescriptorSAP UI5 初学者教程之十一 :SAP UI5 容器类控件 Page 和 PanelSAP UI5 初学者教程之十二 - 应用 CSS 类对 UI 进行进一步丑化SAP UI5 初学者教程之十三 - 如何增加自定义 CSS 类SAP UI5 初学者教程之十四 - 嵌入视图的应用形式SAP UI5 初学者教程之十五 - 对话框和 Fragments 的应用形式SAP UI5 初学者教程之十六 - 图标 icon 的应用SAP UI5 初学者教程之十七 - 聚合绑定在 UI5 复合控件中的应用SAP UI5 初学者教程之十八 - SAP UI5 数据绑定语法里的特殊符号,以及相对绑定和绝对绑定概念详解SAP UI5 初学者教程之十九 - SAP UI5 数据类型和简单的数据绑定SAP UI5 初学者教程之二十 - SAP UI5 的表达式绑定用法解说SAP UI5 初学者教程之二十一 - SAP UI5 的自定义格局器 Custom FormatterSAP UI5 初学者教程之二十二 - 过滤器 filter 的开发和应用SAP UI5 初学者教程之二十三 - 列表控件的排序 Sort 和分组 GroupSAP UI5 初学者教程之二十四 - 如何应用 OData 数据模型SAP UI5 初学者教程之二十五 - 应用代理服务器解决 SAP UI5 利用拜访远端 OData 服务的跨域问题SAP UI5 初学者教程之二十六 - OData 服务配合 Mock 服务器的应用步骤详解阐明Jerry 从 2014 年退出 SAP成都研究院 CRM Fiori 开发团队之后开始接触 SAP UI5,已经在 SAP 社区和“汪子熙”微信公众号上发表过多篇对于 SAP UI5 工作原理和源码解析的文章。 ...

February 20, 2022 · 2 min · jiezi

关于sap:2007年1月11日~2022年1月11日我在-SAP-成都研究院这15年

明天对于绝大多数人来说是一个一般的日子,然而对于我来说很有留念意义。因为 15 年前的明天,我入职 SAP 成都研究院,始终工作至今。 我入职时的职位是 developer, 也就是通常所说的开发人员。15 年过来了,我的身份没有产生任何变动,我在 SAP 成都研究院没有尝试过其余诸如架构师或者开发经理之类的职位。尽管我往年曾经年满 40,真正成为了一个"大龄程序员",但我依然和刚毕业的年轻人一样,持续从事着一线编程开发和 SAP 产品交付工作。 本文没有任何鸡汤成分,只是简略的把我在 SAP 成都研究院 15 年的工作经验分享进去,心愿对同样打算在开发畛域长期奋斗的敌人们有所启发。 我在 SAP 成都研究院的开发生涯,依照工夫程序和顺次待过的开发团队,能够分成上面几个阶段。 2007~2009:SAP BYD, Form 开发2009~2010:SAP BYD, BO/Field Extension 开发2010~2012:SAP Solution Development2012~2014:SAP CRM 开发2014~2016:SAP CRM Fiori 开发2016~2018:SAP CRM Addon 开发2017 ~2018:SAP C4C 客户 Support2018~2020:SAP 成都研究院数字翻新空间2020~当初:SAP 电商云 Spartacus UI 开发早在 1994 年读初中时,我就开始在学校左近的电脑游戏厅玩电脑游戏了,那时候的电脑游戏厅还不能称之为网吧,因为连局域网都没有。高考填志愿时,我认为 “电子科技大学” = “电子游戏大学”,所以天经地义地报考了这所大学,并拿到了计算机专业的硕士学位。事实上,我在大学这几年(2000 年~2007 年),正好赶上了国内外电脑游戏倒退的黄金期间,我也的确玩到了很多经典的传世神作。在寝室同室友联机星际争霸,和在战网上玩暗黑破坏神的美妙岁月,是我人生一段宝贵的回顾。 对于我的这段大学时光,参考这些文章: 没有电脑没有手机没有网络没有恋情——留念我的电子科技大学九里堤校区大一生存一个工作 13 年的 SAP 开发人员的回顾:电子科技大学 2000 级新生退学指南2007 年研究生毕业找工作,在过后的大环境下,计算机专业大学生待业的抉择除了出国和考公务员之外,排名第三的就是进外企。2007 年压根还没有 BAT 之说,我也和我教研室的其余师兄师姐一样,一门心思想进外企。起初我就抉择了 SAP 成都研究院。 ...

February 15, 2022 · 3 min · jiezi

关于sap:SAP-UI5-货币金额显示的格式化逻辑

先看一些理论的例子: var oFormat = NumberFormat.getCurrencyInstance({"currencyCode": false, "customCurrencies": {"BTC": {"symbol": "\u0243","decimals": 3}} });oFormat.format(123.4567, "BTC"); // "Ƀ 123.457"下面的例子,定义了一个名为 BTC 的自定义货币符号,同时用 decimals 指定小数点后的数位,以及货币符号的 unicode 编码值。 运行后果如下: 另一个例子: var oFormat = NumberFormat.getCurrencyInstance({ "currencyCode": false, "customCurrencies": { "MyDollar": { "isoCode": "USD", "decimals": 3 }, "Bitcoin": { "decimals": 2 } } });// symbol looked up from global configurationoFormat.format(123.4567, "MyDollar"); // "$123.457"// no symbol available, custom currency key is renderedoFormat.format(777.888, "Bitcoin"); // "Bitcoin 777.89"咱们来单步调试查看 format 函数的执行原理。 ...

February 15, 2022 · 2 min · jiezi

关于sap:什么是-SAP-UI5-的-Element-binding

元素绑定(element binding)容许咱们将元素绑定到模型数据中的特定对象,这将创立绑定上下文(binding context)并容许控件及其所有子项中的绝对绑定。 这在 master-detail 场景中特地有用。 假如咱们有以下 JSON 数据: { "company" : { "name" : "Acme Inc." "street": "23 Franklin St." "city" : "Claremont” "state" : "New Hampshire” "zip” : "03301" "revenue": "1833990" }}element binding 的语法: <mvc:View controllerName="sap.ui.sample.App" xmlns="sap.m" xmlns:mvc="sap.ui.core.mvc"> <Input id="companyInput" binding="{/company}" value="{name}" tooltip="The name of the company is '{name}'"/> </mvc:View>其中这段代码实际上定义了绑定上下文: binding="{/company}"这样 value 属性能够间接绑定到 json 模型 company 中的相对路径字段比方 name 下来。 如果不采纳 element binding,咱们须要应用绝对路径作为绑定门路,即应用符号 / 结尾的绝对路径语法: <mvc:View controllerName="sap.ui.sample.App" xmlns="sap.m" xmlns:mvc="sap.ui.core.mvc"> <Input id="companyInput" value="{/company/name}" tooltip="The name of the company is '{/company/name}'}"/> </mvc:View>JavaScript 代码实现 element binding: ...

February 15, 2022 · 2 min · jiezi

关于sap:SAP-HANAS4HANA-和-SAP-BTP-的辨析

这是知乎上一个敌人向我征询的问题。 SAP HANA,SAP S/4HANA,和 SAP BTP,这几个名词,对于刚接触 SAP 的敌人来说的确容易混同。 光是 SAP HANA,就有好几款名称相似但定位有所差别的产品。对于它们之间的具体辨析,参考我之前写过的文章:SAP 几款容易令初学者混同的 HANA 解决方案。 SAP S/4HANA,是 SAP 于 2015 年 2 月推出了的旗舰级产品,表演了企业数字化外围(Digital Core)的角色。作为 SAP 第四代 ERP 产品,S/4HANA 运行于基于内存计算的 SAP HANA 数据库上,除了保留第三代 ERP 产品 R/3 的性能并在此基础上做了加强,使得传统的 OLTP 事务处理和 OLAP 报表解决能在同一零碎之内执行。 驰名的征询公司 Gartner 早在 2014 年就提出了双模 IT(Bimodel) 概念,这个概念贯彻到 SAP 用户的应用场景里,即一方面将 SAP S/4HANA 作为企业数字化外围,以撑持企业外围业务稳固牢靠运作;另一方面,通过一个高效的云平台所架构的数字化翻新平台,借助包含人工智能、区块链、大数据分析等前沿科技,对 S/4HANA 这个数字化外围进行 Side-by-Side 扩大,帮忙客户实现疾速的产品/服务乃至商业模式的翻新。 也就是说,作为承载企业外围业务的 S/4HANA,强调的和关注点是业务运行的稳定性和可靠性。而另一方面,并非传统 ERP 畛域善于或者涉猎的新畛域,比方区块链,机器学习等问题,基于其进行的继续翻新,采取的是通过摸索、试验,疾速迭代和试错,来驾驭其不确定性。 这些翻新即所谓的 Side-by-Side 扩大,意思是扩大自身的应用程序,并未部署到 SAP S/4HANA 所在的同一服务器,而是位于一个云平台上,这个云平台就是 SAP Business Technology Platform,简称 SAP BTP. ...

February 15, 2022 · 1 min · jiezi

关于sap:SAP-Spartacus-express-checkout-设计

所谓 express checkout(疾速结账),是一种超疾速结账表格,通常为回头客设计,可缩小表单字段以确保更快的结账流程。运输、计费和付款信息在站点的一个蕴含区域中提交,从而为客户提供简略和高效的服务。疾速结帐容许用户跳过所有步骤,并在单击“转到结帐”后立刻看到评论摘要页面。 Angular Page Guard 将检查用户是否至多有 1 个送货地址和 1 种付款形式 - 如果有更多,它将抉择默认值。 设置好地址后,会抉择以后配置的默认投递形式。 如果所有都胜利了,用户应该被重定向到评论摘要。 否则,他将实现结帐步骤。 在评论摘要步骤中,用户将看到事后设置的数据,也有可能更新步骤。 如何启用该性能由 2 个新的可选属性管制: express 标记位:在默认运输形式和付款形式可用时容许疾速结帐。数组 defaultDeliveryMode:i.a. 的默认交付模式。 用于疾速结帐。 按个别偏好(例如 DeliveryModePreferences.LEAST_EXPENSIVE)或特定交付代码的程序设置偏好。checkout?: { //... express?: boolean; defaultDeliveryMode?: Array<DeliveryModePreferences | string>; };Spartacus 反对下列几种交货模式的偏好设置: enum DeliveryModePreferences { FREE = 'FREE', LEAST_EXPENSIVE = 'LEAST_EXPENSIVE', // but not free MOST_EXPENSIVE = 'MOST_EXPENSIVE',}默认的配置: checkout: { //... express: false, defaultDeliveryMode: [DeliveryModePreferences.FREE], };客户能够应用上面的代码让本人的配置失效: provideConfig({ //... checkout: { //... express: true, defaultDeliveryMode: ['sample-code'], },});express checkout 的实现代码: ...

February 15, 2022 · 1 min · jiezi

关于sap:SAP-电商云-Spartacus-UI-的交货模式-Delivery-Mode-设计

本文探讨 Spartacus UI checkout 流程时,下图高亮的两种交货模式,Delivery Mode 的数据起源: 从组件的模板文件里能看出,这些 radio input 的数据,来自 Observable 对象 supportedDeliveryModes$: 后者通过服务类 checkoutDeliveryService 的 getSupportedDeliveryModes 取得。 对应的 HTTP 申请为: https://localhost:9002/occ/v2... supportedDeliveryModes$ 一旦 subscribe,就会触发其 pipe 办法里传入的一系列 Operators: 此时 delivery modes 还是空的: 如果为空,filter 执行结束后就完结了。稍后 delivery modes 从后盾读取结束之后: 最初,通过了 filter 和 distinctUntilChanged 的 delivery modes,被模板的 async 所解析: 而后再看 getSelectedDeliveryMode: 第一次触发的时候,deliveryMode 为 null. 第二次触发: pipe 具备管道性能,把多个操作符连接起来: 下一步咱们须要弄清楚的是,这个 premium-gross 是如何默认被选中的? 它的值来自 withLatestFrom 另一个 Observable 的奉献:this.checkoutDeliveryService.getSelectedDeliveryMode: ...

February 15, 2022 · 1 min · jiezi

关于sap:什么是-SAP-Commerce-Cloud-的-catalog

hybris 的目录实际上是业务元素的汇合。因而,Catalog 能够看作是商品的容器,这些产品在 SAP Commerce Cloud 里是可销售的实体(产品),最终用户能够针对这些实体进行交易。 目录不仅限于我的项目列表,还包含基于这些我的项目不同的排列形式。举个例子,如果你去美食餐厅,你能够参考他们的菜单(这实际上是一个通用目录,即所谓的 Generalized catalog)。你会留神到,不同的餐厅尽管提供雷同的食物,但菜单中的我的项目(产品)排列形式不同 - 有时名称不同,有时在不同的局部(类别)下。这其实就与 SAP Commerce Cloud 的产品目录十分类似。 当初,以餐厅为例,同样,两家餐厅可能提供雷同的食物,但会有不同的气氛。这意味着餐厅的主题、服务员的制服、徽标等都有所不同。这相似于 SAP Commerce Cloud 的内容目录。 因而,总结上述解释,SAP Commerce Cloud 有两个目录: (1) 负责产品层次结构的产品目录(2) 另一个负责网站布局(或电子气氛)的内容目录。 SAP Commerce Cloud Catalog 有两个版本 - 离线(分阶段)和在线。 一旦工作中的我的项目(产品或内容)适宜上线,业务用户在分阶段版本上工作并将其推送(到)在线。 咱们通过一个称为同步的过程来做到这一点。 此过程从暂存版本中筛选我的项目,查看一些规定(这表明我的项目已筹备好上线),并创立(或更新,如果已创立)以 Online 作为版本的我的项目正本。 Hybris 零碎理解只有在线须要上线,筛选商品,并将其展现在网站(店面)上。 更多Jerry的原创文章,尽在:"汪子熙":

February 14, 2022 · 1 min · jiezi

关于sap:如何在浏览器里开发并运行-SAP-UI5-应用

除了 SAP 公司官网反对的 WebIDE,SAP Business Application Studio 这些运行在浏览器端的开发工具,能够进行 SAP UI5 的开发之外,咱们还能够应用 StackBlitz 这款在线 web 利用的开发工具,来开发 SAP UI5 利用。 我这里做了一个例子,大家能够通过这个链接 拜访。 咱们关上这个页面,察看到的屏幕能够分成四个区域,上面逐个介绍。 用过 Visual Studio Code 这款编辑器的敌人们不难发现,这其实就是 Visual Studio Code 的浏览器版本。 (1) 显示一个文件树结构,蕴含了该 SAP UI5 工程的所有资源文件,蕴含 xml 视图实现和控制器实现(JavaScript 代码)。Jerry 提供的这个例子,SAP UI5 利用采取了 ui5 cli 这个开源的构建工具来构建和启动,而 ui5 cli 基于 Node.js,因而上图还能察看到 ui5 cli 的配置文件 ui5.yaml 和 Node.js 我的项目所需的 package.json 文件。 (2) StackBlitz 在线开发环境里编辑文件的次要区域。 (3) StackBlitz 的终端控制台,咱们能够在此处执行各种命令行。(4) SAP UI5 利用一旦启动后,渲染的页面会呈现在这个区域。 目前上图区域 4 显示的是 botting webcontainer. 在浏览器编辑环境的上下文里,Web Container 技术可能让 Node.js 利用在浏览器环境里以原生形式运行。 ...

January 14, 2022 · 1 min · jiezi

关于sap:SAP-UI5-初学者教程之十七-聚合绑定在-UI5-复合控件中的使用试读版

一套适宜 SAP UI5 初学者循序渐进的学习教程教程目录SAP UI5 本地开发环境的搭建SAP UI5 初学者教程之一:Hello WorldSAP UI5 初学者教程之二:SAP UI5 的疏导过程 BootstrapSAP UI5 初学者教程之三:开始接触第一个 SAP UI5 控件SAP UI5 初学者教程之四:XML 视图初探SAP UI5 初学者教程之五:视图控制器初探SAP UI5 初学者教程之六 - 理解 SAP UI5 的模块(Module)概念SAP UI5 初学者教程之七 - JSON 模型初探SAP UI5 初学者教程之八 - 多语言的反对SAP UI5 初学者教程之九 - 创立第一个 ComponentSAP UI5 初学者教程之十 - 什么是 SAP UI5 利用的描述符 DescriptorSAP UI5 初学者教程之十一 :SAP UI5 容器类控件 Page 和 PanelSAP UI5 初学者教程之十二 - 应用 CSS 类对 UI 进行进一步丑化SAP UI5 初学者教程之十三 - 如何增加自定义 CSS 类SAP UI5 初学者教程之十四 - 嵌入视图的应用形式SAP UI5 初学者教程之十五 - 对话框和 Fragments 的应用形式SAP UI5 初学者教程之十六 - 图标 icon 的应用阐明Jerry 从 2014 年退出 SAP成都研究院 CRM Fiori 开发团队之后开始接触 SAP UI5,已经在 SAP 社区和“汪子熙”微信公众号上发表过多篇对于 SAP UI5 工作原理和源码解析的文章。 ...

January 12, 2022 · 1 min · jiezi

关于sap:SAP-UI5-初学者教程之十六-图标-icon-的使用

一套适宜 SAP UI5 初学者循序渐进的学习教程教程目录SAP UI5 本地开发环境的搭建SAP UI5 初学者教程之一:Hello WorldSAP UI5 初学者教程之二:SAP UI5 的疏导过程 BootstrapSAP UI5 初学者教程之三:开始接触第一个 SAP UI5 控件SAP UI5 初学者教程之四:XML 视图初探SAP UI5 初学者教程之五:视图控制器初探SAP UI5 初学者教程之六 - 理解 SAP UI5 的模块(Module)概念SAP UI5 初学者教程之七 - JSON 模型初探SAP UI5 初学者教程之八 - 多语言的反对SAP UI5 初学者教程之九 - 创立第一个 ComponentSAP UI5 初学者教程之十 - 什么是 SAP UI5 利用的描述符 DescriptorSAP UI5 初学者教程之十一 :SAP UI5 容器类控件 Page 和 PanelSAP UI5 初学者教程之十二 - 应用 CSS 类对 UI 进行进一步丑化SAP UI5 初学者教程之十三 - 如何增加自定义 CSS 类SAP UI5 初学者教程之十四 - 嵌入视图的应用形式SAP UI5 初学者教程之十五 - 对话框和 Fragments 的应用形式阐明Jerry 从 2014 年退出 SAP成都研究院 CRM Fiori 开发团队之后开始接触 SAP UI5,已经在 SAP 社区和“汪子熙”微信公众号上发表过多篇对于 SAP UI5 工作原理和源码解析的文章。 ...

January 12, 2022 · 1 min · jiezi

关于sap:什么是-SAP-HANA-XS-JavaScript

SAP HANA XS Javascript (简称 XSJS) 是一种编程模型,应用程序开发人员能够应用它来创立原生 SAP HANA 应用程序,按需向 UI 客户端裸露数据。 应用程序开发人员定义了用于裸露数据以响应通过 HTTP 申请来获取数据的客户端业务逻辑。 应用 XSJS 编程模型,咱们能够: 应用 XS JavaScript 创立应用程序创立可重用的 XS JavaScript 库利用 XS JavaScript 应用程序编程接口 (API)调试 XS JavaScript跟踪 XS JavaScript 应用程序构建数据模型是开发可拜访 SAP HANA 数据库的应用程序的整个过程的第一步。当您创立了底层数据持久性模型后,应用程序开发人员能够构建应用程序服务,通过所谓的“数据端点(data endpoint)”将数据模型的选定元素公开给客户端应用程序。客户端应用程序将 UI 控件(例如按钮或图表和图形)绑定到应用程序服务,这些应用程序服务顺次检索和显示申请的数据。 在开始应用 XS JavaScript 定义代表业务逻辑的应用程序之前,您须要确保满足以下先决条件: 您必须有权拜访 SAP HANA 零碎。您必须曾经创立了一个开发工作区(workspace)和一个我的项目。您必须为 XS JavaScript 工件共享一个我的项目,以便能够将新创建的文件提交到存储库(并与之同步)。在 SAP HANA 中,原生应用程序应用集成的 SAP HANA XS 平台提供的技术和服务。 术语“原生应用程序”是指在 SAP HANA 扩大应用程序服务 (SAP HANA XS) 提供的设计时环境中开发应用程序,并应用下图所示的集成 SAP HANA XS 平台的场景。 ...

January 12, 2022 · 1 min · jiezi

关于sap:SAP-UI5-初学者教程之十五-对话框和-Fragments-的使用方式

一套适宜 SAP UI5 初学者循序渐进的学习教程教程目录SAP UI5 本地开发环境的搭建SAP UI5 初学者教程之一:Hello WorldSAP UI5 初学者教程之二:SAP UI5 的疏导过程 BootstrapSAP UI5 初学者教程之三:开始接触第一个 SAP UI5 控件SAP UI5 初学者教程之四:XML 视图初探SAP UI5 初学者教程之五:视图控制器初探SAP UI5 初学者教程之六 - 理解 SAP UI5 的模块(Module)概念SAP UI5 初学者教程之七 - JSON 模型初探SAP UI5 初学者教程之八 - 多语言的反对SAP UI5 初学者教程之九 - 创立第一个 ComponentSAP UI5 初学者教程之十 - 什么是 SAP UI5 利用的描述符 DescriptorSAP UI5 初学者教程之十一 :SAP UI5 容器类控件 Page 和 PanelSAP UI5 初学者教程之十二 - 应用 CSS 类对 UI 进行进一步丑化SAP UI5 初学者教程之十三 - 如何增加自定义 CSS 类SAP UI5 初学者教程之十四 - 嵌入视图的应用形式阐明Jerry 从 2014 年退出 SAP成都研究院 CRM Fiori 开发团队之后开始接触 SAP UI5,已经在 SAP 社区和“汪子熙”微信公众号上发表过多篇对于 SAP UI5 工作原理和源码解析的文章。 ...

January 12, 2022 · 1 min · jiezi

关于sap:SAP-UI5-初学者教程之十四-嵌入视图的使用方式试读版

一套适宜 SAP UI5 初学者循序渐进的学习教程教程目录SAP UI5 本地开发环境的搭建SAP UI5 初学者教程之一:Hello WorldSAP UI5 初学者教程之二:SAP UI5 的疏导过程 BootstrapSAP UI5 初学者教程之三:开始接触第一个 SAP UI5 控件SAP UI5 初学者教程之四:XML 视图初探SAP UI5 初学者教程之五:视图控制器初探SAP UI5 初学者教程之六 - 理解 SAP UI5 的模块(Module)概念SAP UI5 初学者教程之七 - JSON 模型初探SAP UI5 初学者教程之八 - 多语言的反对阐明Jerry 从 2014 年退出 SAP成都研究院 CRM Fiori 开发团队之后开始接触 SAP UI5,已经在 SAP 社区和“汪子熙”微信公众号上发表过多篇对于 SAP UI5 工作原理和源码解析的文章。 在 Jerry 这篇文章 对 SAP UI5 无所不知的老手,从哪些资料开始学习比拟好? 已经提到,Jerry 也是从 SAP UI5 菜鸟一路走过去,深知只有 ABAP 开发背景的开发者,向 SAP UI5 开发畛域转型的不易,因而我在业余时间设计了这份适宜 SAP UI5 初学者的学习教程,把开发一个残缺的 SAP UI5 利用的流程,拆分成若干个步骤,力求每个步骤里,把波及到的知识点都涵盖到。这些知识点可能不像我的 UI5 源码剖析系列文章那么深刻,但力求浅显易懂,便于 SAP UI5 初学者了解。 ...

January 12, 2022 · 1 min · jiezi

关于sap:合集Jerry-Wang-2018~2021-四年期间的-SAP-技术文章合集

这是 Jerry 2021 年的第 75 篇文章,也是汪子熙公众号总共第 352 篇原创文章。 大家好,我是 Jerry Wang,从 2007 年起在 SAP 成都研究院工作至今。我是一名全栈开发工程师。 我在 SAP 成都研究院已经在多支 SAP 产品研发团队工作过,接触过的 SAP 产品有: SAP Business ByDesignSAP CRMSAP Cloud for CustomerCustomer Management for SAP S/4HANASAP Commerce Cloud(Hybris)SAP Spartacus在 SAP 成都研究院数字翻新空间工作时,我做过很多原型开发和概念验证,接触过的 SAP 产品有: SAP Marketing CloudSAP Field Service Management(Coresystem)SAP Customer Data Cloud(Gigya)SAP S/4HANASAP Business Technology Platform(SAP Cloud Platform)SAP Analytics Cloud我理解一些 Docker 和 Kubernetes 的基础知识,用过 AWS 和 Azure. 我在 SAP 工作应用的编程语言是 ABAP,Java,JavaScript,TypeScript. 我应用 ABAP,ABAP Webdynpro 和 WebClient UI 进行全栈开发。 ...

January 9, 2022 · 8 min · jiezi

关于sap:SAP-电商云-Spartacus-UI-的响应式-UI-实现细节

在文件 projects\storefrontlib\layout\config\default-layout.config.ts 里,定义了各个屏幕尺寸所对应的 breakpoint: export const defaultLayoutConfig: LayoutConfig = { breakpoints: { xs: 576, sm: 768, md: 992, lg: 1200, xl: { min: 1200, }, },}; 留神这个 breakpoint 和编程语言里的断点没有关系。 breakpoint.service.ts 的 getBreakpoint 办法,提供了依据以后屏幕宽度返回最合适的 breakpoint: 以这个 id 为 trigger 的按钮为例,它是齐全 css 驱动的: 这个按钮的 css: btn btn-action btn-block dialog-trigger该按钮在 lg 这个 breakpoint 状况下,会被设置为 display:none: 而 Spartacus 利用代码怎么晓得以后的屏幕尺寸对应的 break point 呢? 答案是咱们本人实现的 breakpoint.service.ts. 首先定义枚举类型 BREAKPOINT: export enum BREAKPOINT { xs = 'xs', sm = 'sm', md = 'md', lg = 'lg', xl = 'xl',}而后依据以后代码的运行环境进行计算: ...

January 9, 2022 · 1 min · jiezi

关于sap:SAP-Spartacus-develop-branch-的服务器端渲染启动方式

(1) yarn build:libs 这个命令行是实现本地 library 的构建。须要将近10分钟。 (2) 这个命令是实现 shell app 的构建。 yarn build --prod命令行里呈现的 40.76 来自 .env-cmdrc 文件: 须要将近3分钟。 (3) 应用如下命令进行服务器端 shell 利用的构建: yarn build:ssr 须要将近1分钟。(4) 以服务器端模式启动 Spartacus 服务器: yarn serve:ssr如果看到上面的提醒音讯,阐明启动胜利了: 如果 Node.js 服务器后盾察看到这种音讯:SSR rendering exceeded timeout 3000, 阐明默认的 3000 毫秒工夫不足以实现首页的服务器段渲染: 此时批改 ng-express-engine-decorator.ts 里 tineout,而后从新执行 yarn:build:setup, yarn build --prod 和 yarn build:ssr. 改成一个非凡的值比方 19821039, 不便未来查找。 最初在 dist 文件夹的 main.js 外面可能搜寻到这个非凡值。 怎么还是 3000? ...

January 9, 2022 · 1 min · jiezi

关于sap:关于-HANA-CE-Function

本文内容来自 SAP 社区博客:Calculation Engine (CE) Functions – Rest in Peace CE Function,即 Calculation Engine,是 HANA SPS02 中引入的一种机制,它容许间接拜访 HANA 列存储。它们容许极其准确地管制如何精准投影、计算和聚合列。 事实上,它们是原始 HANA 列存储如何建模向量函数的间接示意。 CE Function 执行的效率如何? 它们齐全绕过了 SQL 优化器,意味着您想要执行的任何操作都在列存储中运行,并且您始终能够取得 HANA 的全副性能。CE 函数总是在列引擎中运行,并且如果您返回适度的后果集,则能取得很高的执行效率。它们实际上无效地编译成一种称为 L 的语言,它是 HANA 的两头语言,与 C++ 十分类似。 不过 CE Function 的编写也比传统的 SQL 要麻烦一些。 您必须指定每一列,当存储过程的取数逻辑越来越简单时,这往往意味着大量的复制和粘贴以及代码的激活。编辑器不会给你太多帮忙,错误信息也很简洁。简而言之,您必须是一名业余的 SQL 程序员,并且对 HANA 列存储具备肯定的实操教训,能力纯熟应用 CE 函数编写良好的 SQLScript。 而后,2012年时,随同着 HANA SPS04 的“Project Orange” 这个我的项目的停顿,HANA 数据库曾经足够成熟,能够用于 SAP BW,但 BW 从未应用过 CE 性能。相同,BW 团队有本人的专有形式来应用 HANA。 这很快被证实是 BW 中的一个限度,导致一个新的概念诞生了:Calculation Scenario. 当初,当您在 BW 7.4 中编译 BW 对象时,会创立一个 HANA 视图,该视图能够通过 BW 的 OLAP 引擎拜访,也能够间接被 HANA 数据库拜访。两者是能够调换的,然而 CE 性能对于 BW 的需要来说限度太多了。 ...

January 8, 2022 · 1 min · jiezi

关于sap:SAP-电商云-Spartacus-UI-CI-e2ecypresssh-脚本文件分析

(1) yarn install(2) 进到 storefrontapp-e2e-cypress 目录再次 yarn install(3) yarn build:libs 脚本命令: cypress run --config-file cypress.ci.json --record --key $CYPRESS_KEY --tag "2011,b2c,all,parallel" --parallel --group B2C --ci-build-id $TRAVIS_BUILD_ID --spec "cypress/integration/!(vendor|b2b|ssr)/*/.e2e-spec.ts"record option 代表视频记录,这个语法在官网文档 能够找到。 export 命令自身不须要应用 $ 符号,然而在脚本文件里应用变量时,须要加上 $ 符号。 Bash export 命令帮忙咱们导出环境变量,以便它们在所有子过程、shell 和命令中可用。 此外,export 命令和其余相干命令的不同命令行选项提供了跨不同 shell 和 bash 脚本定义、导出和应用 bash 变量的各种办法。 对于 bash 里特殊符号 $ 的用法,参考这个链接。 yarn e2e:run:ci"${SUITE}"bash 里圆括号的语法 这里的 SUITE 是 script 里自定义的变量。 SUITE 值可能为下列 e2e:run:ci 冒号后的值,比方 ssr,b2b 等等。 ...

January 8, 2022 · 2 min · jiezi

关于sap:SAP-电商云-Spartacus-UI-CI-脚本分析

剖析入口,关上这个 build:有一个 build id 能查看到 Travis 上这个 build 有很多 job 组成: 咱们查看其中名叫 E2E regression tests for B2B 的 job: 这个 job 定义在 .travis.yml 文件的 jobs 区域里: 咱们在 travis 上点击这个 job 的超链接,关上 job 明细页面: https://app.travis-ci.com/git... 往下就能查看这个 job 的执行日志了: 咱们逐行剖析。 发现 client 和 server 都应用了 docker engine 的社区版。 用命令行下载 Chrome,克隆 Spartacus 代码库: Setting environment variables from repository settings$ export ARTIFACTS_BUCKET=[secure]$ export ARTIFACTS_KEY=[secure]$ export ARTIFACTS_SECRET=[secure]$ export CYPRESS_KEY=[secure]$ export SONAR_TOKEN=[secure]$ export SPA_ENV=[secure]$ export CYPRESS_CONFIG=cypress.ci.json$ export LHCI_GITHUB_APP_TOKEN=[secure]这些标注了[secure] 的都是保护在 Github 代码仓库上的隐衷数据,只有指定权限的 admin 能力查看。 ...

January 8, 2022 · 1 min · jiezi

关于sap:一个-SAP-成都研究院开发工程师的2021年度总结既没有厚积也未能薄发

本文参加了 SegmentFault 思否征文「2021 总结」,欢送正在浏览的你也退出。今年年初的时候,我收到了从 CSDN 社区寄出的这本台历:了不起的程序员 2021。 明天,这本厚厚的台历差不多曾经快翻到封底了。2021 年的一天天就随着这一页页被翻去的台历而逝去了。又到了年底做年度总结的时候了。 这也是我间断第五年的年度总结。前四年的总结记录,在这四篇文章里: Jerry 的 2017, 编程与游泳一个 SAP 开发人员的 2018 年终总结一个 SAP 开发人员的 2019 年终总结一个 SAP 成都研究院开发工程师的 2020 年度总结:未知生,焉知死往年我度过了人生三字头最初一个生日,明年我就将年满 40,正式迈入“中高龄程序员”的行列中。 对于到了这个年龄段还在一线进行编码工作的软件开发工程师来说,最可悲的就是对技术丢失了激情,躲在依附过来积攒的教训和技术栈修筑成的护城河里吃老本。 对于这个年龄段的软件开发工程师来说,最可怕的就是本人毫无外围竞争力,所做的工作可能轻易被一个更年老的从业者所代替。 往年是 Jerry 退出 SAP 电商云 Spartacus UI 开发团队后度过的第一个残缺的赛季。 我所在的 Scrum 团队里的开发人员来自寰球各地,有和我一样的 SAP 员工,有已经的自由职业者(freelancer),也有第三方公司差遣过去的 C User. 我已经花了一些工夫,把和我一起共事的这些战友们在 Linkedin (领英)上的个人简历和工作经验都逐个细读了一遍,发现这些共事们在前端开发畛域都领有相当丰盛的从业教训。 比方我的这位共事,因为原来的名字太长,大家都亲切地称他为 Kris: https://dev.to/krisplatis Kris 在圣诞假期家里做饼干的时候,都还想着 Angular,Vue 和 React,的确配得上他集体网站上给本人打下的 "Javascript Enthusiast" 的标签。 尽管 Jerry 和这些共事至今还素未谋面,每天仅仅靠电话和 Slack 沟通,但从他们身上还是学到了很多常识,感到这一年没有虚度。 ...

December 31, 2021 · 1 min · jiezi

关于sap:体验-Orbeon-form-PE-版本提供的-JavaScript-Embedding-API

链接:https://www.orbeon.com/download 在理论我的项目中,如果须要应用到某些高级性能,比方 The Form Runner JavaScript Embedding API,须要应用 Professional Edition 即 PE 版本。 点击 Free trial license: 失去 license xml 文件: 将该文件放到上面的文件夹内: C:\app\tomcat-9.0.56\webapps\orbeon\WEB-INF\resources\config启动 tomcat,就能看到这个 license 信息了: 如果您应用的是 JavaScript 嵌入 API,则您的应用程序可能不是基于 Java 的。 这意味着 Orbeon Forms 和您的应用程序可能运行在不同的服务器或不同的端口上。 所有浏览器申请,无论是针对应用嵌入 API 的应用程序页面,还是针对 Orbeon Forms 资源,都须要发送到雷同的服务器和端口。 您有责任设置该服务器,以便将对 Orbeon Forms 的申请转发到 Orbeon Forms 服务器,如下图所示。 具体如何操作取决于您应用的服务器端技术。 例如: 如果您应用的是 Apache HTTP Server,则能够应用 mod_rewrite 模块来实现。如果您应用的是 Microsoft IIS,则能够应用 IIS 管理器通过创立反向代理规定来配置它。 Requests to forward您能够依据门路(通常为 /orbeon)辨认对 Orbeon 表单的申请。 ...

December 19, 2021 · 1 min · jiezi

关于sap:什么是-SAP-Commerce-yForms

yForms 使保险提供商、金融服务提供商以及每个销售简单产品或服务的组织可能创立高度定制的 Web 表单,这些表单能够增加到店面以领导客户实现购买过程。能够通过基于 Web 的表单构建器 UI 轻松创立和治理表单。 yForms 是一种灵便且功能强大的 Web 表单解决方案,与SAP Commerce 严密集成。 yForms 模块提供了一系列性能来创立高度自定义的 Web 表单,例如,您能够创立具备简单验证和依赖项的表单并将它们合并到店面中。 次要特点上面列出了 yForms 模块的次要性能: 基于 Web 的表单生成器集成到后盾治理驾驶舱创立具备简单验证和依赖项的表单表单域的验证规定和值的预计算谬误、正告和警报音讯的标准基于客户答复的动静表格将数据链接到客户购物车和用户帐户yForms 模块使销售简单产品或服务的组织可能创立高度定制的 Web 表单。该模块是通过集成 Orbeon Forms Professional Edition 构建的,只有在您的机器上胜利装置 Orbeon 模块后能力应用。 先决条件在装置和应用 yForms 性能之前装置 Orbeon。SAP Commerce附带 Orbeon(版本 2018.2.3)的限时许可证。能够从软件核心下载无限度的生产许可证,https://launchpad.support.sap... 网站上公布的信息。空的到期Orbeon 生产许可证中的元素显示许可证不会过期。对于演示许可证, 到期元素显示许可证无效之前的日期。 demo 页面:https://electronics.local:900... 在 Backoffice 创立新的 form: 填写 application id 和 form id: 配置文件中的Application Identifier必须与Backoffice 中创立的 yForm的Application Identifier雷同。 <properties xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:oxf="http://www.orbeon.com/oxf/processors"> <!-- buttons for insurance forms --> <property as="xs:string" name="oxf.fr.detail.buttons.{Application_Identifier}.*" value="save-final "/> <!-- Event-Form is going to have autosave --> <property as="xs:integer" name="oxf.fr.detail.autosave-delay.{Application_Identifier}.contact" value="5000"/> <!-- forms and data for yforms are stored in hybris --> <property as="xs:string" name="oxf.fr.persistence.provider.{Application_Identifier}.*.form" value="hybris"/> <property as="xs:string" name="oxf.fr.persistence.provider.{Application_Identifier}.*.data" value="hybris"/> <!-- general CSS for every form in insurance--> <property as="xs:string" name="oxf.fr.css.custom.uri.{Application_Identifier}.contact" value="/forms/yforms/contact/style.css"/> <property as="xs:string" name="oxf.xforms.format.input.date" value="[D01]-[M01]-[Y]"/></properties>输出 form title 和形容信息: ...

December 19, 2021 · 1 min · jiezi

关于sap:用-ABAP-调用-OCR-接口实现出租车发票扫描

百度 AI 提供了一个出租车发票扫描接口: https://ai.baidu.com/ai-doc/O... 反对辨认全国各大城市出租车票的 16 个关键字段,包含发票号码、代码、车号、日期、总金额、燃油附加费、叫车服务费、省、市、单价、里程、上车工夫、下车工夫等。 咱们首先在 postman 里调用该接口。 url:https://aip.baidubce.com/rest...[这里传入 Access Token] 依照接口文档的阐明,content-type 设置为 application/x-www-form-urlencoded: 在 body 里,类型抉择为 x-www-form-urlencoded: 指定参数的 key 为 image,value 为发票图片二进制数据对应的 base 64 编码的 url encode 值。 下图是一个例子。点击 Send 按钮,会收到下图所示的响应数据,该发票里的要害信息被 API 胜利解析。 这里咱们须要留神一点,在 postman 里,咱们指定参数 image 的值,是没有通过 url encode 的图片 base64 encode 的值,即下图图例 A。 而 postman 在发送该 HTTP 申请时,会主动把该base 64 的值做一次 url encode 解决,比方 base64 里的符号 "/", 被解决成了 %2F. 见上图 B 的图例。 ...

December 19, 2021 · 2 min · jiezi

关于sap:ABAP-Platform-2020-发布的一些新功能

SAP FIORI FES 有哪些新性能?SAP S/4HANA 2020 公布了一个新的 SAP FIORIFES 2020 addon,这个新版本蕴含新的 SAP Frontend Server 7.55。 正如预期的那样,与以前的版本相比,新的 SAP FIORI FES 2020 包含许多新的翻新和劣势。我只想强调其中一些在我看来对根底管理员来说十分乏味的内容: 应用 SAP S/4HANA 2020 或更高版本控制 Fiori Launchpad layout 的新空间和页面技术。用于治理自定义启动板内容的新 Launchpad 应用程序管理器工具SAP Cloud Platform 启动板服务的内容联结FLP ABAP 作为在 SCP 上运行的 UI5 Fiori 应用程序的集成平台与之前的 FES 版本一样,SAP FIORI FES 2020 for SAP S/4HANA addon 包含运行 Fiori 应用程序所需的 2 个常用软件组件: SAP_UI 7.55 – SAP 用户界面技术 7.55 这蕴含其余 UI 组件、SAPUI5 库 (1.78) 和 SAP Fiori 启动板。将始终反对到下一个 SAPUI5 长期保护版本公布。 ...

December 19, 2021 · 2 min · jiezi

关于sap:SAP-产品线中写法很接近容易混淆的几个名称

别离是 XI,PI 和 BI. https://answers.sap.com/quest... XI全称是 SAP Exchange Infrastructure (SAP XI)。 XI 使您可能施行跨零碎流程。它使您可能将来自不同供应商(非 SAP 和 SAP)的不同版本并应用不同编程语言(Java、ABAP 等)实现的零碎相互连接。 SAP Exchange Infrastructure 基于凋谢架构,应用凋谢规范(特地是来自 XML 和 Java 环境的规范)并提供在异构和简单零碎环境中必不可少的服务: 音讯、转换和跨组件集成过程的建模和设计用于治理合作流程和音讯流的配置选项用于音讯和过程治理的运行零碎用于集成异构零碎组件的适配器引擎用于监控音讯流和过程的地方监控SAP XI 反对公司外部场景和跨公司场景。 PISAP Process Integration (SAP PI) 以前称为 SAP Exchange Infrastructure (SAP XI),是一个集成平台,可为所有零碎提供单点集成。这是 SAP 提供的弱小中间件,可在企业边界内外的 SAP 和非 SAP 应用程序之间提供无缝的端到端集成。 XI 和 PI 实际上指的是同一个产品。基本上没有真正的区别。这只是对于雷同产品的营销名称。 SAP PI 或 XI 是基于 SAP NetWeaver 的企业应用集成 (EAI) 技术。 EAI 软件使不同的零碎可能互相通信。这涵盖同一组织内的零碎或内部各方的零碎。这种类型的软件被称为集成代理,因为它们是在连贯、格局和协定方面具备不同要求的实体之间的中介。它为所有接口提供公共存储库。 XI/PI 的外围组件是 SAP 集成服务器,它促成了跨外部和内部联网计算机系统的不同操作系统和应用程序之间的交互。 SAP XI/PI 的历史SAP 与 WebMethods 公司(2009 年被 Software AG 收买)单干并推出了 SAP Business Connector(称为 SAP BC)。这产生在 2000 年左右。SAP BC 是 webMethods Integration Server 的品牌版本,作为 SAP R/3 的中间件解决方案。 2002 年退出的团队被拆分,两家公司持续独立开发他们的产品线。 SAP 公布了 SAP BC 4.7 版。大概在同一时间,领有 SAP BC 教训的 SAP 开始应用本人的名为 Message Broker 的集成/中间件产品。这起初更名为 SAP Exchange Infrastructure (XI)。起初(大概在 2006 年)在 SAP NetWeaver 中,名称从 XI 3.0 更改为 SAP Process Infrastructure (PI 7.0)。 ...

December 19, 2021 · 1 min · jiezi

关于sap:SAP-Cloud-Application-Programming-编程模型CAP的设计准则

在SAP的云应用程序编程模型(CAP)是一个框架,语言,库和工具,为构建企业级的服务和利用。它疏导开发人员沿着通过验证的最佳实际和大量现成的解决方案来应答重复性工作的“黄金之路” 。 基于 CAP 的我的项目受害于对业务畛域的次要关注。咱们没有深入研究过于技术性的话题,而是专一于在疾速变动的云技术世界中减速开发和爱护投资。 CAP 框架交融了通过验证和宽泛采纳的开源和 SAP 技术,如下图所示。 在开源技术之上,CAP次要减少了: 外围数据服务 (CDS)作为咱们用于域模型和服务定义的通用建模语言。用于 Node.js 和 Java 的服务 SDK 和运行时,提供用于实现和应用服务的库以及主动为许多申请提供服务的通用提供程序实现。在当今的数字化转型时代,跟上疾速变动的云技术和平台世界是一项重大挑战。CAP 通过更高级别的概念和 API防止了这种锁定,它们在很大水平上形象了低级平台性能和协定。这尤其实用于以下状况: 特定于平台的部署办法和技术特定于平台的身份提供者和身份验证策略SaaS 解决方案和租户隔离中租户的启用/停用同步协定,如REST、OData或GraphQL异步通道和代理,如SAP Event Mesh、MQ或Kafka不同的数据库技术,包含SQL和NoSQL这些形象使咱们可能疾速适应新兴技术或平台,而不会影响利用程序代码,从而爱护您的投资。 CAP is Open and Opinionated → Zero Lock-inCAP 始终遵循如下的设计准则: (1) 从低级平台性能和协定中形象进去并防止锁定到低级平台性能和协定的高级概念和 API. 然而,所有形象都遵循玻璃盒模式,容许在须要时不受限制地拜访较低级别的事物。 (2) 最佳实际为许多重复性工作提供了开箱即用的通用解决方案,然而你总是能够在自定义处理程序中以你的形式解决事件,例如决定是采纳CQRS还是事件源......而 CAP 只是试图让乏味的工作解脱你的形式。 (3) 对 SAP Fiori和SAP HANA 的开箱即用反对,同时还能够通过提供新的数据库集成来抉择其余 UI 技术,例如Vue.js或数据库。 (4) SAP Business Application Studio和Visual Studio Code或Eclipse 中提供的专用工具反对。然而CAP 不依赖于这些工具。CAP 中的所有内容都能够应用@sap/cds-dkCLI 和您抉择的任何编辑器或 IDE 来实现。 专一畛域,由CDS提供反对CAP次要关注畛域,通过捕获畛域常识和用意而不是命令式编码——也就是说,是什么,而不是如何——从而促成: 开发人员和领域专家在领域建模方面的密切合作。最佳实际和重复性工作的开箱即用施行。与平台无关的办法可防止锁定,从而爱护投资。下图阐明了 CDS 模型的广泛应用,它推动了通用运行时,如 CAP 服务运行时或数据库。 ...

December 19, 2021 · 1 min · jiezi

关于sap:SAP-电商云-Spartacus-UI-的-checkout-场景中的串行请求设计分析

Current Checkout DesignWhen we toggle delivery method via radio input, once clicked, there’re three sequential HTTP request sent to backend:当咱们点击 shipping method 时, 会有三个串行的 HTTP 申请发送往后台。 这个串行申请的行为,从 Chrome 开发者工具时序图里清晰可见。 Request1: HTTP PUT to set delivery modeurl: https://20.83.184.244:9002/oc... 这个 HTTP put 申请用于批改订单的交货模式。 this request is triggered in delivery-mode.component.ts, method changeMode. 模式批改的触发,从 service 类的 setDeliveryMode 开始。 The call will be delegated to service class below: Request2: HTTP get to load [Multi Cart] Multi Cart Datahttps://20.83.184.244:9002/oc...,potentialProductPromotions,appliedProductPromotions,potentialOrderPromotions,appliedOrderPromotions,entries(totalPrice(formattedValue),product(images(FULL),stock(FULL)),basePrice(formattedValue,value),updateable),totalPrice(formattedValue),totalItems,totalPriceWithTax(formattedValue),totalDiscounts(value,formattedValue),subTotal(formattedValue),deliveryItemsQuantity,deliveryCost(formattedValue),totalTax(formattedValue,%20value),pickupItemsQuantity,net,appliedVouchers,productDiscounts(formattedValue),user,saveTime,name,description&lang=en&curr=USD ...

December 19, 2021 · 4 min · jiezi

关于sap:SAP-ABAP-平台新的编程模型

ABAP 编程语言的演变在过来 40 多年中开发的所有 SAP 性能中,大部分都是用 ABAP 编写的。ABAP 编程语言是咱们的旗舰语言,并且曾经证实它是开发业务应用程序的通过验证的弱小平台。 多年来,SAP 对 ABAP 编程语言进行了更新和现代化,咱们能够辨别 3 个次要里程碑: 经典 ABAP 编程语言(最高至 Netweaver ABAP 7.50)SAP FIORI 的 ABAP 编程模型(从 Netweaver ABAP 7.50 开始)RESTful ABAP 编程模型(自 ABAP 平台 1909 起可用) 家喻户晓,咱们的许多 SAP 客户仍在应用可用于基于 SAP Netweaver 7.40 及更低版本的 SAP 产品的经典 ABAP 编程模型运行和开发 SAP 软件。 随着 ABAP 版本 7.4,SAP 开始为 SAP HANA 内存数据库(代码下推)优化 ABAP 平台,但其中许多应用程序依然基于经典的 Dynpro、Web Dynpro ABAP、Floorplan Manager 和 WebClient UI 框架。 SAP Fiori的ABAP 编程模型 随 SAP Netweaver 7.50 一起公布,提供了一种标准化的形式来高效地开发古代 SAP HANA 优化的基于 Web 的应用程序。 ...

December 13, 2021 · 2 min · jiezi

关于sap:SAP-电商云-Spartacus-UI-有状态-的-url-和-title-属性的赋值代码

有状态的 URLSpartacus 为店面的每一部分提供了一个带有状态地址的 URL。这使用户能够更轻松地浏览店面,还容许网络爬虫对每个页面进行索引。因而,能够通过社交媒体、机器人和搜寻索引共享更多页面。 一个例子: 为了为所有内容提供有状态的 URL,Spartacus 容许深层链接来寻址任何页面。URL 路由配置还能够思考多站点上下文,以便能够启动和缓存店面非凡变体的有状态 URL。 可配置的 URL您能够应用 pageLabel 字段(位于 CMS 后端中)的配置内容页面的 URL 。这些页面标签无奈本地化。 您能够在 Spartacus 中为非 content page 配置 URL。这些次要与产品和类别页面(catagory page)无关。您能够将产品名称等属性配置为 URL 的一部分。例如,产品页面的默认配置是storefront.com/product/1234,但您能够配置 URL 以蕴含与产品相干的数据,例如产品或类别题目。 可配置的 URL 通常有助于改良 SEO,但也可用于帮忙将现有解决方案迁徙到 Spartacus:客户能够保留其现有 URL,并在 Spartacus 中配置等效 URL。 注:产品代码用于从后端解析产品数据。URL 的其余部分能够配置用于 SEO 目标。 留神:有些客户的产品题目带有无奈应用的特殊字符(例如,代码或题目中有斜线)。这可能须要在 URL 中应用属性之前或之后对其进行非凡解决。请留神,Spartacus 不包含解决特殊字符的性能。 可索引页面服务器端渲染 (SSR) 是一种在服务器端渲染 JavaScript 逻辑,而后在响应中提供丰盛内容的技术。SSR 响应蕴含网络爬虫从响应中索引或检索数据所需的残缺 HTML。 SSR 由 Spartacus 提供,并打算成为 Commerce Cloud 中的默认部署选项。 结构化数据 (schema.org)结构化数据是一种形容网站页面内容的标准化形式,使网络爬虫和搜索引擎更容易了解。Spartacus 原生反对各种模式。 HTML 标签搜索引擎、社交平台和爬虫应用 HTML 标签,尤其是元标签,将页面元数据索引到他们的平台中。Spartacus 提供了多种解析元标记的办法。 ...

December 13, 2021 · 1 min · jiezi

关于sap:SAP-电商云-Spartacus-UI-DeliveryComponent-的依赖设计

该 Component 具备5个依赖: 为了修复 bug,我须要引入 checkout service 和 cart service. 如果间接在该构造函数里注入,这实际上算是批改了 constructor signature,依照 Spartacus 编程标准,这算是引入了 breaking change - 重大更改。 但咱们察看到,该 Component 类的依赖之一,checkoutDeliveryService 外部,具备 checkout service 和 cart service. 如此一来,咱们能够把代码移到 checkoutDeliveryService 里编写,这样就不会在 Delivery Component 里引入依赖了。咱们剖析上图 Checkout Delivery Service 类,其具备5个依赖,两个 store,存储 state 信息,三个 service 类: ActiveCartServiceUserIdServiceCheckoutService以 ActiveCartService 为例: 应用如下代码: class ActiveCartServiceStub implements Partial<ActiveCartService>能够结构一个 MockActiveCartService 进去。 应用 Partial 办法,能够只实现 ActiveCartService 的局部办法。 TestBed 用于创立待测试的组件及依赖: 上图的 TestBed.configureTestingModule 只是第一步,还须要调用 TestBed.inject 办法,注入上图 82,83 和 84 行 provide 前面的办法名,返回被注入的类实例: ...

December 13, 2021 · 1 min · jiezi

关于sap:如何在-SAP-电商云-Spartacus-UI-里新建一个页面

因为 SAP Spartacus UI 是基于 CMS 驱动的,因而流程是:咱们首先在 SAP Commerce Cloud Backoffice 创立新的 content page, CMS Component 以及相干内容,而后再到 SAP Spartacus 层,新建一个 Angular Component,映射到之前 Commerce Cloud Backoffice 里创立的 CMS Component. 步骤1 - 在 SAP Commerce Cloud Backoffice 创立必须的 CMS 内容具体步骤能够参考我这篇文章:如何在 SAP 电商云里应用 Backoffice 和 Smart Edit 创立新的 Content Page 残缺的 impex 源代码如下: ## Quick Order ## (my-account/quick-order)$contentCatalog=powertools-spaContentCatalog$contentCV=catalogVersion(CatalogVersion.catalog(Catalog.id[default=$contentCatalog]),CatalogVersion.version[default=Staged])[default=$contentCatalog:Staged]INSERT_UPDATE ContentPage;$contentCV[unique=true];uid[unique=true];masterTemplate(uid,$contentCV);label;;jerryOrderPage;AccountPageTemplate;/my-account/jerry-orderINSERT_UPDATE ContentSlot;$contentCV[unique=true];uid[unique=true];name;active;cmsComponents(&componentRef);;BodyContentSlot-jerryOrder;Body Content Slot for Jerry Order;true;JerryOrderComponentINSERT_UPDATE ContentSlotForPage;$contentCV[unique=true];uid[unique=true];position[unique=true];page(uid,$contentCV)[unique=true];contentSlot(uid,$contentCV)[unique=true];;BodyContent-jerryOrder;BodyContent;jerryOrderPage;BodyContentSlot-jerryOrderINSERT_UPDATE CMSFlexComponent;$contentCV[unique=true];uid[unique=true];name;flexType;&componentRef;;JerryOrderComponent;Jerry Order Component;JerryOrderComponent;JerryOrderComponentINSERT_UPDATE CMSLinkComponent;$contentCV[unique=true];uid[unique=true];url;;JerryOrderLink;/my-account/jerry-order步骤2在 Spartacus 创立新的 Angular Component,将其映射到 SAP Commerce Cloud Backoffice 里创立的 CMS Component:JerryOrderComponent ...

December 13, 2021 · 1 min · jiezi

关于sap:SAP-Commerce-Cloud-里的-Solr-架构简介

大多数电子商务网站都在其网站上提供搜寻性能,尤其是用于搜寻产品详细信息。 产品是任何电子商务网站中的次要搜寻数据。 因为 Hybris 用于开发电子商务网站,因而 Hybris 中的 Solr 用于更快地搜寻网站中的产品。 请看下图,理解如何在 Hybris 中应用 Solr: Hybris 中的 Solr 概述每当用户拜访店面中的任何数据时,它能够来自hybris DB或Solr,具体取决于该数据是否已编入索引。 如果数据被索引,它将独自存储在 Solr 中,并且能够从那里拜访。 如果数据未编入索引,则无论如何它都能够在Hybris DB 中应用并且能够从那里拜访。 Solr和Hybris DB之间的通信是一种形式,因为Solr只从Hybris DB获取数据,但不会将任何内容写回Hybris DB。 Hybris 调用Cron 作业进行索引,而后 Solr 从 Hybris DB 获取源数据,而后进行索引并将索引数据保留在其中。 请记住:因为Solr 中的索引数据,从Hybris DB拜访数据将比从Solr拜访数据破费更多的工夫,因而Solr在搜寻中比 Hybris DB 更受欢迎。 hybris 中的 Solr 反对 3 种索引策略1) 全索引 2)更新索引 3) 删除索引 1) 全索引: 在此策略中,将首先删除所有现有索引文档,而后从头开始创立新索引。这须要相当长的工夫,所以不倡议常常这样做。 残缺索引反对 2 种提交模式 a) 间接模式在此模式下,如果索引失败,则先前提交的文档将可用。 b) 两阶段模式在这种模式下,如果索引失败,所有都会回滚到初始状态。 在这种模式下,Solr 创立一个额定的外围作为长期外围,仅用于索引,一旦索引胜利,它将与原始外围替换。因而,如果索引失败,原始外围将是平安的。 之所以称为两阶段模式,次要是因为它在索引时波及2 个 Solr 内核。 ...

December 13, 2021 · 1 min · jiezi

关于sap:OData-API-和-Restful-API-这两个概念的区别和联系

咱们在 SAP API Business Hub 里能看到 OData,SOAP 和 Restful 三种“不同”类型的 API: 它们之间到底有什么区别和分割? OData vs REST: What is REST?REST(REpresentational State Transfer)是一种软件架构格调,它定义了如何应用 HTTP 协定在两个不同的零碎之间发送音讯。 REST 最后由 Roy Fielding 于 20 年前开发,现已倒退成为用于在万维网上替换信息的最风行的架构。 REST 规范概述了 Web 服务的 6 种不同准则或架构束缚: 对立接口:REST 零碎中的所有组件必须遵循雷同的规定和接口能力互相通信。每个资源都由一个 URI(对立资源标识符)惟一标识。客户端-服务器:REST 将负责存储和发送信息的服务器与负责获取信息和适当应用信息的客户端离开。这种拆散使单方更加独立和可扩大。无状态:应用 REST 收回的每个申请都是无状态的:它蕴含服务器执行申请所需的所有信息。申请实现后,服务器不须要存储参数或状态。例如,如果客户端申请拜访受限资源,则客户端必须在每次申请时将其身份验证令牌发送到服务器。可缓存:REST 中的客户端和服务器都能够缓存资源,有助于缩小流量并进步性能。分层零碎:REST 容许分层零碎架构:客户端可能只与零碎中的一个服务器通信,而其余服务器执行身份验证和数据存储等性能。客户端无奈判断它是在与终端零碎还是中介进行通信。按需代码:可选地,REST 申请能够在必要时返回逻辑或可执行代码。遵循上述准则的 API(应用程序编程接口)称为 REST(或 RESTful)API。 OData vs REST: What is OData?依据 OData 网站的说法,OData(凋谢数据协定)“定义了一组用于构建和应用 RESTful API 的最佳实际。 OData 可帮忙您在构建 RESTful API 的同时专一于业务逻辑,而无需放心定义申请和响应标头、状态代码、HTTP 办法、URL 约定、媒体类型、无效负载格局、查问选项等的各种办法。” OData 最后由 Microsoft 创立,由非营利组织 OASIS(结构化信息规范促成组织)标准化。 IBM、SAP 和 Salesforce 等企业技术公司都在其外部 IT 环境中应用了 OData。 ...

December 13, 2021 · 1 min · jiezi

关于sap:借助-SAP-电商云-Spartacus-UI-提供的-Schematics-辅助您的前端项目升级

将 Spartacus 降级到新的次要版本(例如,从 3.x 到 4.0)时,Spartacus 迁徙机制会主动修复新版本中批改或删除的代码。 当您解决性能或谬误,或对 Spartacus 源代码进行任何其余更改时,您须要更新原理图作为实现定义的一部分。 通过将这些更新迭代地作为 DoD 的一部分对源代码进行每次更改,您就不用在开发周期完结时破费大量工夫降级迁徙机制,因而,它更容易 为新的次要版本筹备 Spartacus 库。 Migration Mechanism降级到新的次要版本后,迁徙机制应该在新的开发周期开始时更新。 比方Spartacus曾经从2.x版本更新到3.0,更新后的机制应该尽快合并到develop分支。 这容许贡献者从开发周期的一开始就蕴含迁徙及其性能和谬误修复。 Structure for Updating Schematics上面这个文件蕴含了每个 Spartacus 版本对应的迁徙脚本: projects/schematics/src/migrations/migrations.json 上面是其中一个迁徙脚本的例子: "migration-v3-constructor-deprecations-03": { "version": "3.0.0", "factory": "./3_0/constructor-deprecations/constructor-deprecations#migrate", "description": "Add or remove constructor parameters" },26 个子文件: 以 v3 为例: 每个脚本有四个属性:name,version, factory 和 description: name 容许开发人员疾速理解迁徙脚本在做什么。 迁徙名称具备以下模式: migration-v<version>-<migration-feature-name>-<sequence-number>。 name的因素如下: version:批示迁徙实用于哪个版本的 Spartacus。migration-feature-name:迁徙性能名称是一个简短的名称,用于形容迁徙正在执行的操作。 sequence-number: 序列号批示迁徙脚本的执行程序。 例如,如果脚本的序列号为 03,则在运行迁徙脚本时,它将是要执行的第三个脚本。版本对于 Angular 更新机制十分重要。 它用于主动运行特定版本所需的迁徙脚本。 无关更多信息,请参阅原理图自述文件的公布更新原理图局部。 factory 指向相干的迁徙脚本。 description 是一个简短的、自在格局的形容字段,用于形容迁徙脚本的作用。 ...

December 13, 2021 · 1 min · jiezi

关于sap:SAP-Spartacus-Session-affinity

参见这个探讨。 后端运行在多个 pods/节点时,当子序列申请过早进入时,后端将无奈跨集群发送缓存生效申请。此外,如果多个申请扩散在多个节点上,则会耗费提早和不必要的资源。 对于单个客户端,Spartacus 应该尽可能多地与单个后端交互。这在传统上称为“粘性会话”。 CCv2为此做了局部筹备。它将 ROUTE cookie 增加到响应中。然而,此 cookie 不可配置且不应用 SameSite 策略。这意味着解耦的店面可能无奈应用它,因为它作用于不同的域。明天仿佛只有 chrome 有这个问题,但将来预计会有更多的浏览器呈现。 可怜的是,明天的 Spartacus 不应用 ROUTE cookie。 Cookie 基本不会随任何申请一起发送。为了利用 ROUTE cookie,必须执行以下操作: 在 http 客户端中应用 withCredentials: true 选项,以便每次申请都发送 cookie应用额定的 CORS 过滤器 (Allow-Origin-With-Credentials:true) 配置商务后端,以确保 cookie 通过过滤器。为了确保 Spartacus(或更好:angular)将随申请发送 cookie,申请必须应用 withCredentials: true 选项实现。 这能够在拦截器中实现,以便咱们以通用形式执行此操作并确保没有申请遗记这一点。 一旦前端这些加强到位,就会抛出谬误,因为必须实现额定的后端配置。 必须增加一个新的配置属性 corsfilter.ycommercewebservices.allowCredentials = true。 SAP Spartacus 端具体加强形式: 首先在 occ-config.ts 里减少一个配置项:useWithCredentials 而后新建一个 interceptor,如果检测到配置里启用了 withCredentials 的选项,就对所有的 HTTP 申请进行拦挡,增加对应的 withCredentials 信息。 最初在 module 里注入这个 HTTP interceptor 实现: ...

December 13, 2021 · 1 min · jiezi

关于sap:使用-Recipe-安装-SAP-Commerce-Cloud

Installing SAP Commerce Using Installer Recipes 要出于开发和演示目标主动装置 SAP Commerce,您能够应用安装程序配 方。 Recipes 是负责创立目录、挪动文件、更新配置和属性文件以及初始化零碎的 gradle 脚本。 安装程序目前仅用于在开发环境中装置 SAP Commerce 或用于演示目标。 不要应用安装程序在生产环境中装置 SAP Commerce。 无关在生产环境中装置的阐明,请参阅手动装置 SAP Commerce。 不要应用安装程序在同一个 SAP Commerce 上一个接一个地运行配 方。 安装程序不会卸载以前的配置,也不会将您的 SAP Commerce 文件系统复原到其原始设置。 要装置不同的配 方,请应用洁净的环境。 应用如下命令行在 Linux 零碎装置 zip 和 unzip 工具: yum install -y unzip zip; 查看下载文件的 hash 是否正确: 命令: certutil -hashfile 文件名 我下载的是 Commerce Cloud 2011: Move the custom.properties file from spartacussampledata/resources/installer/customconfig to hybris-commerce-suite-2011/installer/customconfig. ...

December 13, 2021 · 1 min · jiezi

关于sap:SAP-软件的精髓之一各种各样的决定机制-Determination-Logic

这是 Jerry 2021 年的第 74 篇文章,也是汪子熙公众号总共第 351 篇原创文章。 原本想写一篇 SAP UI5 利用和 SAP 电商云 UI 开发的语言决定机制的,因为文章篇幅起因,最初决定分成两篇文章来写。本文是 SAP 软件决定机制的概要介绍,下一篇文章再介绍这种决定机制,在 SAP UI5 中的利用。 SAP 软件中的决定机制,往往容易被忽视,不是因为这种机制不重要,而是因为它广泛应用于 SAP 各种软件的前台和后盾实现中,能够说是无处不在。这就好比咱们都晓得空气对于人类的重要性,但很少有人专门去注意空气的存在一样。 所谓决定机制,就是基于一个输出汇合,通过剖析和解决,产生一个输入汇合。换言之,决定机制蕴含三局部内容: (1) 输出汇合。这个输出汇合的数据,可能间接来自终端用户输出,也可能来自决定机制的上游业务逻辑的输入。在运行了 SAP 软件的客户零碎上,输出汇合的排列组合,实践上可能有无穷多种。 (2) 剖析解决引擎。针对简直有限多种排列组合的输出汇合,剖析解决引擎须要能强壮且高效地进行解决,以不变应万变。 (3) 输入汇合。剖析解决引擎依据输出汇合解决产生的后果。这些后果数据有可能间接返回给终端用户,也可能作为输出数据,持续传入上游业务的解决逻辑中去。 不难看出,决定机制模块实现的外围和难点就是其剖析解决引擎。 如何实现一个决定机制模块? 不少敌人在大学第一次学习某门编程语言时,想必都写过如下格调的代码。至多我写过。 IF 条件1. DO 逻辑1. RETURN 后果1.ELSEIF 条件2. DO 逻辑2. RETURN 后果2.ELSEIF 条件3. DO 逻辑3. RETURN 后果3.ELSEIF ...ENDIF.以上可看作一个繁难的决定机制模块实现,因为它具备了输出,解决和输入三大部分。但它也是一个很糟糕的实现,因为前文提到,决定机制的输出汇合可能有有限多种可能。如果每次决定机制的需要发生变化,要求反对新的输出,那么通过新增一个 IF 分支来应答这种需要变动,显然不事实,基本达不到“以不变应万变”的成果。 来看看 SAP 怎么做的。 Jerry 工作后遇到的第一个决定机制的例子,是 SAP Business ByDesign 的 Form Template 决定机制。 客户在 SAP BYD 创立销售订单之后,当流程走到 SCM 模块 的发货流程时,客户保护在零碎里的电子邮箱,会收到一封 BYD 零碎发送的交货单(Delivery Note),格局为 PDF. ...

December 13, 2021 · 3 min · jiezi

关于sap:SAP-电商云-Spartacus-UI-同-SAP-Customer-Data-Cloud-的集成

SAP Customer Data Cloud 容许您启用自定义注册和登录,还能够治理用户配置文件和 consent 信息。 要将 SAP Customer Data Cloud 与 Spartacus 集成,您必须具备以下条件之一: SAP Commerce Cloud 2011,以及 SAP Commerce Cloud,Integration Extension Pack 2108SAP Commerce Cloud 2005 以及 SAP Commerce Cloud Integration Extension Pack 2108SAP Commerce Cloud 1905,以及最新版本的 Integration Extension Pack 2108与 SAP Customer Data Cloud 集成时,您能够通过装置所需的扩大手动开始。 应用 cx_integrations recipe 执行装置 SAP Commerce Cloud 的个别步骤,但不要初始化。 将以下扩大增加到 localextensions.xml: gigyaloginaddongigyabackofficegigyab2bloginaddon (for B2B)gigyab2bbackoffice (for B2B)将 gigyaloginaddon 装置到您的店面扩大: ant addoninstall -Daddonnames="gigyaloginaddon" -DaddonStorefront.yacceleratorstorefront="<b2c-storefront>,<b2b-storefront>"将 gigyab2bloginaddon 装置到您的店面扩大: ...

December 13, 2021 · 2 min · jiezi

关于sap:SAP-Fiori-的-UI-新主题-Horizon

SAP’s UI Technologies supporting the new Horizon visual theme of SAP FioriSAP 正在转变咱们的设计和开发文化,更加专一于帮忙人们更快、更轻松地实现工作并获得更好的成绩。 如果您还没有浏览过相干内容,请先浏览咱们首席设计官 Benedikt Lehnert 的这篇博文,而后再持续浏览:体验心态:从新设计咱们在 SAP 构建产品的形式。 SAP 的新设计语言是 SAP Fiori 的演变。 新的视觉主题 Horizon 为基于可拜访的模块化设计零碎的古代敌对用户界面铺平了路线。 在其余方面,打算中的新地平线主题包含: 合乎 Web 内容可拜访性指南的有吸引力且清爽的调色板具备比照、留白和大胆的排版以适应天然的信息层次结构的焦点感圆角营造出敌对、平易近人的古代外观一种缩小跨设施学习曲线的挪动优先方法一个新的图标集,能够清晰地传播并感觉古代 图一:My Home page from 上图是 SAP S/4HANA Cloud 2111 的主页,应用 Purchase 业务角色登录。开启了 Horizon preview 主题。 How do SAP’s UI technologies support the Horizon visual theme?SAP 力求跨解决方案和跨 UI 技术提供统一的用户体验。 SAP Fiori DNA 通过一个通用主题构建到所有 Web 开发人员的根底中,从而能够更轻松地构建新的 SAP Fiori 应用程序。 通用主题库是高效重用和对立主题外观及其色彩和度量的要害。 因而,SAP 可能疾速引入 Horizon 主题,并正确关注各种 UI 技术。 ...

December 13, 2021 · 1 min · jiezi

关于sap:介绍一款开源电商网站的购物车添加功能的实现

目前电商畛域有两款比拟闻名的开源电商网站解决方案,别离是基于 Angular 开发框架,代号为 Spartacus 的开源我的项目,以及基于 Vue 的 Vue Storefront. 作为 Spartacus 开源我的项目的开发成员之一,明天我想通过本文,给大家介绍一下咱们平时购物时最常应用到的性能之一,增加产品到购物车的技术实现。 即便没有多少 Angular 开发教训的前端程序员,浏览本文之后,也能对 Spartacus 电商网站增加商品到购物车的性能实现,有一个最根底的理解。 咱们将 Github 上 Spartacus 代码仓库的代码克隆到本地并运行后,通过 https://localhost:4299 能够拜访电商页面的 UI: 能够看到此时右上角红色的购物车图标显示的数字为0,意思是以后用户 Jerry Wang,还没有增加任意的商品到购物车里。 咱们轻易在店铺上抉择一台电子设备,进入商品明细页面,点击 Add To Cart,将其增加到购物车: 能够在上图产品明细页面的 url 里,找到其产品编号为 1377492. 点击了 Add To Cart 后,在 Chrome 开发者工具 network 标签页里察看到一个 HTTP POST 申请: 上图展现的该 POST 申请的负载里,蕴含 ID 为 1377492 的产品信息。这个 HTTP POST 申请调用购物车更新的 Restful API , 将客户选中的产品增加到购物车里。 该申请响应字段的 statusCode 为 success,如下图所示,阐明 API 调用胜利。 ...

November 21, 2021 · 1 min · jiezi

关于sap:SAP-电商云-Spartacus-UI-里如何捕捉语言设置的更改

咱们晓得在 SAP 电商云 Spartacus UI 里,用户能够通过下拉菜单更改以后拜访 site 的语言: 监控语言变动的代码: this.subscription.add( this.languageService .getActive() .subscribe((isoCode: string) => this.setDirection( this.winRef.document.documentElement, this.getDirection(isoCode) ) ) );这里的 get active,拿的其实是 active language: 从 ngrx store 里读取语言: 切换语言时产生了什么事件? 找到触发源: 在 Angular UI 里找到了 select 控件的 change 事件的响应解决逻辑: 等号左边是一个表达式:active = $event.target.value; active 就是 Component 的属性,将 $event 的 target 的 value 字段值(即用户以后选中的语言)赋给 Component active 属性。 active 是 Component 的属性。 Component 将控制权交给 service: 依据不同的 context 拿到 service: ...

November 21, 2021 · 1 min · jiezi

关于sap:SAP-电商云-UI-State-persistence-状态持久化设计的入口-initSync

在 Spartacus 2.0 版之前,实现状态持久性的惟一办法是应用一种称为 storageSync 的简略的申明性机制,它容许您提供属性键以在存储中长久化。 当您启动您的应用程序时,这些长久化的键用于设置存储中的初始状态。 应用 Spartacus 2.0 或更高版本,您能够通过应用 StatePersistenceService,特地是它的 syncWithStorage 办法来放弃店面应用程序的状态。 它不像 storageSync 那样简略,但它应用上下文和专用的 onRead 回调提供了更多管制。 您能够将以下选项传递给 syncWithStorage 函数:key、state$、context$、storageType 和 onRead。 这些选项的工作形式如下: (1) 键用于辨别存储中的一个特色和另一个特色。例如,要存储流动的购物车 id,您能够应用购物车密钥,而对于用户会话数据,您能够应用会话密钥。 (2) state$ 是一个可察看的对象,每次您想将新值保留到长久存储时,它都会收回一个值。例如,为了在每次流动购物车 id 更改时保留流动购物车 id,此 observable 会收回一个新值。 (3) context$ 是一个 observable,它形容了特定状态的无效上下文。例如,流动购物车 ID 仅对一个 base site 无效。在不同的根底站点上,您心愿应用不同的购物车。在这种状况下,应用 context$,您将应用每次更改时收回根本站点的 observable。 storageType 指定应用的存储类型。默认状况下,存储类型为本地存储,但您能够将其更改为会话存储等。 onRead 是每次上下文更改时调用的回调。以购物车为例,每次更改根本站点时,都会应用从存储中读取的值调用该特定上下文的回调。如果存储中没有保留任何内容,它将调度 undefined 值。 运行时,该逻辑通过 APP_INITIALIZER 初始化: 返回的 result 是一个 function: toPromise 最初会触发 subscribe: 更多Jerry的原创文章,尽在:"汪子熙":

November 21, 2021 · 1 min · jiezi

关于sap:SAP-ABAP-业务开关和-SAP-电商云的-Feature-Level

这是 Jerry 2021 年的第 72 篇文章,也是汪子熙公众号总共第 349 篇原创文章。 基于 ABAP 技术栈的 SAP 产品,客户能够通过装置 Enhancement Package(加强包)的形式,为以后应用的利用导入新的性能。 Enhancement Package(加强包),顾名思义,蕴含了应用程序加强性能的汇合。客户能够依据企业理论的业务流程,有选择性的启用加强包里的局部新性能。每个新增的性能,都对应着一个 Business Function.只有在零碎中激活 Business Function 后,其对应的新性能,蕴含前台页面,后盾业务程序,以及 SPRO 施行流动才会失效。 借助加强包,客户可能在不降级 Netweaver 版本的状况下,应用到 SAP 产品的新性能。Business Function 则对加强包中的新性能,提供了更细粒度的治理灵活性,客户可能依据本人的理论须要,有选择性地启用局部新性能。 ABAP Business Function 对加强包新性能的管制,最终通过其蕴含的 Business Switch 即业务开关实现。该开关和咱们理论生存中的开关概念统一,具备 On 和 Off 两种状态。业务开关可能管制 ABAP 前后台代码实现的行为,以及后盾配置表中的记录。 上面通过理论的例子来阐明。 SAP CRM 通过中间件能够从 SAP ERP 下载物料主数据。SAP ERP 作为这个数据交换场景的源零碎,能够持续对物料主数据某些字段做批改,这些批改会主动同步到 CRM,这称为 Delta Download. 然而,某些字段的批改,在 SAP CRM 的默认实现里是无奈接管到的。比方 SAP ERP 起初保护了英文和中文版本的物料形容文本,这两个版本的形容信息胜利同步到 SAP CRM 之后,客户再在 ERP 删除中文版本的形容文本,则这个删除动作,无奈同步到 SAP CRM. ...

November 17, 2021 · 3 min · jiezi

关于sap:什么是-SAP-Spartacus-UI-的-direction-服务

方向性功能提供对双向文本和布局的反对。 您能够将 Spartacus 配置为应用从左到右 (LTR) 方向或从右到左 (RTL) 方向。 方向性是由语言驱动的。 许多语言是从左到右浏览的,但有些语言,例如阿拉伯语和希伯来语,是从右到左浏览的。 在 Spartacus 中,UI 的方向反映了被动语言,因而方向性能够在双向体验中起作用。 如果您的店面同时蕴含 LTR 和 RTL 语言,则应用流动语言自动检测方向。 对 DOM 和 CSS 所做的更改被视为破坏性更改,因而只有在应用 2.1 性能标记和 2.1 CSS 版本启用它时能力应用方向性功能。 无关 CSS 版本的更多信息,请参阅 CSS 架构中的款式版本控制。 您能够应用 DirectionConfig 界面中的属性配置方向性。 默认配置蕴含以下属性: const defaultDirectionConfig: DirectionConfig = { direction: { detect: true, default: DirectionMode.LTR, rtlLanguages: ["he", "ar"], },};默认配置下,所有语言都映射到 LTR 方向,除了希伯来语 (he) 和阿拉伯语 (ar)。 能够通过配置增加其余 RTL 语言。 默认配置应该实用于大多数我的项目,然而如果您实现一个面向 RTL 的店面,您可能会思考将默认方向更改为 RTL 并引入一些显式的 LTR 语言。 上面是一个例子: ...

November 17, 2021 · 1 min · jiezi

关于sap:什么是-SAP-Spartacus-UI-的-code-deprecation

对于简单且疾速倒退的库,在改良现有性能的同时放弃向后兼容性可能具备挑战性。 代码弃用容许您正确标记过期的代码,并通过正告用户,帮忙他们过渡到更好的代替计划。 要将函数、类、办法或属性标记为已弃用,请应用 @deprecated 标记。 上面是一个例子: /*** @deprecated since 1.0.2* Use better alternative instead*/依据理论的弃用政策,此类代码将成为下一个次要版本之一中删除的候选代码。 Marking Deprecated Logic通常,为了适应向后兼容性,一些间接相干的代码须要蕴含额定的逻辑,当相干的弃用性能被删除时,这些逻辑应该被删除。 当不分明应该删除哪些附加逻辑时,确保删除过期代码的最佳办法是用正确的 TODO 正文标记它,最好链接到带有附加详细信息的 GitHub 问题。 应正确标记这些票证(例如,具备 deprecated-1.x 的标签),以便未来更容易将其作为删除的候选对象援用。 以下是 TODO 正文的示例: // TODO(issue:3313) Deprecated since 1.1.1Feature Flags每个新的主要版本都会公布新性能。 有时,新性能被增加到客户曾经能够应用的现有组件中,这使得这些更改成为破坏性更改,因为增加到 DOM 或因为不同的行为。 为了防止毁坏客户的代码,并在不须要过于频繁地公布新的次要版本的状况下灵便地改良现有组件的性能,Spartacus 应用了性能标记。 性能标记容许咱们执行以下操作: 依据性能级别辨别性能,对应小版本号基于显式特色标记辨别特色留神:显式性能标记能够链接到性能级别,这意味着默认状况下为该特定级别启用它们。 Deciding If You Need a Feature Flag如果不须要,最好防止创立新的性能标记。这有助于放弃咱们的配置洁净并使最终的保护更容易。 以下指南能够帮忙您决定应该应用哪个性能标记(如果有): (1) 如果可能,尽量避免应用性能标记。 相同,将您的性能实现为一个独自的模块,能够由客户抉择导入。 (2) 如果您的性能曾经有独自的配置,请确定以下哪个更不便: a. 在模块配置中创立一个新选项(对于个别性能,使它们可切换具备理论价值)。b. 应用性能标记(特地是当标记的惟一起因是向后兼容时)。 如果可能,尽量避免创立明确的性能标记。相同,尝试启用特定性能级别的性能,例如主要版本。如果要创立显式性能标记,请确保这样做的起因是正当的(例如,该性能十分重要,能够显式禁用或启用)。 Detecting the Feature Level如果您的服务或组件曾经注入了全局配置,您能够应用一个简略的实用程序函数来查看性能级别,如以下示例所示: if (isFeatureLevel(this.config, '1.1')) { // code that is meant to be executed for feature level 1.1 and above}如果您的组件或服务无权拜访全局配置,您能够注入 FeatureConfigService 并应用它,如下例所示: ...

November 17, 2021 · 1 min · jiezi

关于sap:什么是-SAP-Spartacus-UI-的-feature-level

Spartacus 库的每个主要版本都蕴含新性能,这些性能通常是对现有组件的改良。 这些性能通常是用户所冀望的,但在某些状况下,这些更新可能被视为破坏性更改,尤其是当您在特定行为或 DOM 构造之上构建了本人的自定义时。 Feature level为了放弃严格的向后兼容性,Spartacus 蕴含可配置的性能级别,这有助于在改良现有组件的同时放弃可预测的行为。 默认状况下,性能级别设置为最新的次要版本(例如 1.0)。 要利用主要版本(例如 1.3)中引入的新行为和改良,您能够配置性能级别,如下例所示: { features: { level: '1.3' }}每个间断的特色级别都蕴含前一个特色级别的所有特色。 如果您心愿您的性能级别始终设置为最新版本,您能够应用最新标记 ('*'),如下所示: features: { level: '*'}您还能够通过在版本号前增加感叹号 (!) 来禁用特定性能级别的性能。 上面是一个例子: <newComponent *cxFeatureLevel="'!1.1'"></newComponent>Feature Flags一些重要的性能能够应用特定的性能标记有选择地切换。 上面是一个例子: { features: { someFeature: false }}性能标记能够链接到性能级别,如果定义的性能级别可用,则默认状况下会启用性能。 您能够同时配置性能级别和性能标记,如下例所示: { features: { level: '1.1', feature1: false, feature2: true }}在此示例中,性能级别设置为 1.1。 将 feature1 设置为 false,如果 feature1 通常是 1.1 版功能集的一部分,您能够有选择地禁用此性能,同时保留 1.1 版中的其余性能。 如果 feature2 是 1.5 版本的一部分,通过将其设置为 true,您能够启用它,否则只能启用 1.1 版本的性能。 如果您有选择地启用性能,建议您特地留神测试您的应用程序。 只管性能标记用于许多不同的 Spartacus 性能,但不能保障所有性能都实用于性能标记和性能级别的所有可能组合。 ...

November 17, 2021 · 1 min · jiezi

关于sap:什么是-SAP-Business-Function

帮忙文档 通过业务性能,SAP 为您现有的 SAP 装置提供了独立单元中的新性能和加强性能。这使您可能为各种业务流程应用特定的新性能和加强性能。 业务性能 X 随加强包(enhancement package)一起提供。 此业务性能蕴含容许您更无效地运行给定业务流程的性能。 此时此刻,您对加强包的其余性能不感兴趣。 因而,您只需装置应用业务性能 X 所需的那些技术组件。装置这些技术组件后,其余业务性能也可用,它们也是您装置的技术组件的一部分。 然而您只激活业务性能 X。 激活业务性能 X 后,您要应用的性能就可用了。 所有其余业务流程和应用程序都不须要其余施行流动; 用户能够像平常一样持续在其中工作。 留神在装置加强包之前,您已获取无关要用于业务流程的业务性能的信息。 您已依据您抉择的业务性能在 SAP 装置中施行相干技术组件。 Business function 概念蕴含两个层面: (1) 作为蕴含新软件开发的独立实体的业务性能。 这方面还包含全面的资料,您能够提前应用这些资料来获取无关新开发以及必须装置的技术组件的信息。 (2) 业务性能作为基于 ABAP 的零碎中的技术对象 除此对象外,您还能够应用事务 SFW5 激活基于 ABAP 的零碎中的新开发。 如果您已施行相干软件组件版本,则业务性能仅在事务 SFW5 中可见。 您无奈吊销在实时零碎中激活业务性能。停用特定的、流动的业务性能只能用于测试目标。 激活业务性能时在后盾运行的流程须要肯定的工夫。 这意味着您无奈在激活业务性能后立刻看到零碎中的更改。您还必须在相应的零碎中安顿大概半小时到一个小时的短暂停机工夫。 激活业务性能后,能够看到以下变动和新倒退: 新菜单项用户界面上的新字段施行所需的定制流动自定义表和零碎表中的新表条目业务配置集(Switch BC Sets)也随业务性能一起交付; 当您激活业务性能时,这些会主动解包。 更多信息能够查看 SAP note 337623 和 877008. 从技术角度来看,业务性能由独自的开关组成,可用于激活施行指南中的编码字符串、菜单条目和定制流动。 744 / 5000翻译后果如果您在 SAP 应用语句 ENHANCEMENT-POINT 或 ENHANCEMENT-SECTION 定义的显式加强选项中施行本人的客户加强性能,则后续版本或加强包可能会使这些性能有效,或者可能导致谬误。 因而,咱们强烈建议您不要将 SAP 提供的并通过 ENHANCEMENT-POINT 或 ENHANCEMENT-SECTION 定义的加强选项用于您本人的客户加强性能。 SAP 不保障接口和这些显式加强选项的存在将在源代码中保持稳定。 ...

November 17, 2021 · 1 min · jiezi

关于sap:关于-SAP-Spartacus-feature-library-里的-indexscss-文件

如下图所示:quick order 文件夹下存在一个 _index.scss 文件,其导入了 styles 文件夹下的 index: 然而,styles 文件夹下并没有 index.scss 文件,只有一个 _index.scss. 然而,ctrl + click 点击上图第一行代码后,会主动跳转到 styles 文件夹下的 _index.scss 文件: 查看这个 @import 的语法: Sass 扩大了 CSS 的 @import 规定,可能导入 Sass 和 CSS 样式表,提供对 mixin、函数和变量的拜访,并将多个样式表的 CSS 组合在一起。 与须要浏览器在出现页面时收回多个 HTTP 申请的一般 CSS 导入不同,Sass 导入齐全在编译期间解决。 Sass 导入的语法与 CSS 导入雷同,只是它们容许多个导入用逗号分隔,而不是要求每个导入都有本人的 @import。 此外,在缩进语法中,导入的 URL 不须要引号。 思考下列两个文件: // foundation/_code.scsscode { padding: .25em; line-height: 0;}// foundation/_lists.scssul, ol { text-align: left; & & { padding: { bottom: 0; left: 0; } }}在我的 style.scss 文件里如何导入二者? ...

November 16, 2021 · 1 min · jiezi

关于sap:SAP-电商云-Spartacus-UI-支持延迟加载的新功能的入口设计

假如咱们要为 Spartacus UI 开发一个新性能,首先,这个新性能,应该放到 feature library 文件夹里: 这个新性能的入口,搁置到 Feature Module 中。 新性能通过 public_api.ts 将私有性能裸露给内部消费者。后者从 index.ts 里导入,而 index.ts 又导入 quick-order.module.ts 中的内容。 QuickOrderModule 导入 CoreModule 和 ComponentsModule,二者都是重量级 module,须要反对提早加载。 ng-package.json 文件里,定义了该新性能的入口文件 entryFile 为 public_api.ts: 留神,在根目录 angular.json 里,咱们找不到和 quick order 相干的实现,这阐明 Quick Order 并不是一个独立的 library? 这里阐明 quick order 是 cart library 的一部分: 从这里的文件夹层级构造也能说的通: 对于 QuickOrder 这个新性能来说,其入口并不是咱们上图看到的 QuickOrderModule,而是下图所示的 QuickOrderFeatureModule,后者蕴含了一个轻量级的 QuickOrderRootModule 实现,而上图看到的重量级实现 QuickOrderModule,通过提早加载的形式,在下图代码第20行导入零碎。 Root 文件夹里的 QuickOrderRootModule 是一个十分轻量级的实现: 仅仅蕴含了路由设置和 CMS Component 映射关系的保护。 Facade 层通过 index.ts 导出: ...

November 16, 2021 · 1 min · jiezi

关于sap:SAP-Spartacus-module-层级结构设计的一种实践

Reference App Structure 这个举荐的 Spartacus 应用程序构造旨在作为您设置本人的 Spartacus 应用程序时的参考。 Spartacus 是一个 Angular 库,这意味着它能够在 Angular 应用程序中独自应用,也能够集成到现有的 Angular 我的项目中。相同,您能够将任何其余 Angular 解决方案或库增加到您的 Spartacus 我的项目中。 Spartacus 自身带有多个层和概念,以及一些能够提早加载开箱即用的较小特色库。自定义和第三方代码进一步减少了复杂性,您最终可能会失去难以保护的模块,因为它们将太多这些元素混合在一起。 这能够通过定义和恪守标准化构造来解决,例如 Spartacus 参考应用程序构造。领有标准化构造还能够更轻松地将新开发人员纳入您的我的项目、解决内部反对案例以及进行审计。 通过应用 Spartacus 参考应用程序构造,您能够从每个次要 Spartacus 版本提供的主动迁徙中获益最多,同时还放弃增加自定义的灵活性,并在这些自定义之上构建新性能。应用参考应用程序构造还能够为 3.0 版本后移入独自库的性能利用代码拆分。 要查看应用参考应用程序构造的工作示例,请参阅此存储库。 Spartacus Module该 module 导入 B2C 或者 B2B 配置 module,以及 BaseStorefrontModule 和 SpartacusFeaturesModule: 导出 BaseStorefrontModule. 留神,尽管 Angular Router 和 NgRx 都是 Spartacus 应用的,然而这些都会影响全局利用,所以它们被保留在 SpartacusModule 之外,间接导入到 AppModule 中。 SpartacusModule 由以下局部组成: BaseStorefrontModule,它封装了大多数 Spartacus 应用程序通常须要的外围 Spartacus 导入。BaseStorefrontModule 间接从@spartacus/storefront 导入。 ...

November 16, 2021 · 1 min · jiezi

关于sap:各种-SAP-产品的自定义-UI-创建和集成方法一览

这是 Jerry 2021 年的第 70 篇文章,也是汪子熙公众号总共第 347 篇原创文章。 Jerry 之前通过下列两篇文章,介绍了形成 SAP 产品 UI 的逻辑单元:UI 组件和 UI 容器组件。 谈谈 SAP 产品 UI 开发中的组件概念SAP 产品 UI 里的容器组件的概念和开发概述对于合作伙伴来说,当 SAP 产品规范 UI 即便通过上面两篇文章介绍的加强技术,也无奈满足客户非凡的业务须要时,就能够思考创立自定义的 SAP UI 了。 SAP 产品的 Field ExtensibilitySAP Cloud for Customer Extensibility 的设计与实现创立 SAP 自定义 UI,当然须要开发前文形容的 UI 组件,通过这些组件出现视觉效果给最终用户,并响应用户操作,实现业务逻辑。然而很多 SAP 产品,除了 UI 组件和 UI 容器组件之外,还存在一个额定的 Frame 层,用来对立治理配置于其中的 UI 组件和 UI 容器组件,实现会话治理,UI 组件初始化以及利用生命周期治理等基础设施层面的工作。UI Frame 最为人所知的典型代表,当然就是 SAP Fiori Launchpad. 本文以 SAP CRM,SAP Cloud for Customer,SAP Fiori 和 SAP 电商云 Spartacus UI 这四种 SAP 产品里用到的 UI 开发技术来举例说明,在这些 SAP 产品里,当合作伙伴实现自定义 UI 组件开发之后,如何将其配置到对应的 UI Frame 中去。 ...

November 16, 2021 · 3 min · jiezi

关于sap:SAP-电商云-Spartacus-UI-模块延迟加载的入口程序

该入口位于下图第 218 行的 rxjs from Operator 调用: 这里咱们将一个函数传入 from: 传入的具体函数如下: 这个函数返回一个 promise,该类型作为 from 操作符的输出类型。这个函数保护在 featureConfig json 对象的 module 字段里: 这个 json 对象是 Spartacus 代码里通过 provideConfig 注入到配置对象 config 中的,字段名称为 featureModules: 这里会触发 chunk 加载? 从下图能够确认,的确上图19行 import 指令,会触发 spartacus/cart/quick/order chunk 的加载: 第19行 import 语句执行完之后,应用 then 返回加载胜利的 QuickOrderModule 定义,这体现了 Promise 的语义。 所以当代码执行到下图第 220 行 switchMap 时,传入的 module 就是加载胜利的 QuickOrderModule 类: 这里还应用了 EventService 来抛出提早加载 chunk 胜利加载的事件:ModuleInitializedEvent ...

November 16, 2021 · 1 min · jiezi

关于sap:什么是-SAP-Spartacus-FacadeFactoryService-中的-Resolver

这个 resolver 只针对 Proxy Facade,依据 feature 名称和 FacadeClass,获取对应的 resolver. 该 resolver 晓得怎么将函数调用,投递到该 facade 的具体实现类去。 featureName:cartQuickOrderCore 最初失去理论值:cartQuickOrder 返回 resolver 的逻辑放在一个 defer 函数块里了: 当应用程序开始调用 facade 的办法时,被投递到代理类: 此时 resolver$ 蕴含的一大段在 defer 里的逻辑始终未失去执行。 所以,从语义上说,resolver 解析进去的对象,就是该 facade 实在的实现类?这个 connect 应该相当于 subscribe 办法。 果然,connect 办法会触发 defer 块内的函数调用: 触发 core module 提早加载: 加载完 QuickOrderModule 之后,从 ModuleRef 里拿到 injector,再调用这个 module 的 injector,拿到 facadeClass 对应的实现类: 功败垂成,拿到实现类 QuickOrderService 了: 此时就能够调用该实现类的办法了: 总结Resolver 负责触发 Proxy Facade 对应的具体实现类的提早加载,加载实现后,从 Module Ref 里拿到 injector,再应用 injector 拿到 Proxy Facade 的具体实现类的实例。 ...

November 16, 2021 · 1 min · jiezi

关于sap:在-SAP-电商云-Spartacus-UI-里手动注入-module-的几种排列组合

先把所有的排列组合列举如下: (1) 通过构造函数注入 QuickOrderFacade,但不调用其办法 (2) 通过构造函数注入 QuickOrderFacade,调用其办法(3) 手动通过 injector 注入 QuickOrderFacade(4) 手动通过 injector 注入 QuickOrderFacade,调用其办法 通过构造函数注入 QuickOrderFacade,但不调用其办法 后果:没有触发 core module 的加载: 控制台输入: 通过构造函数注入 QuickOrderFacade,调用其办法曾经在我之前的文章SAP 电商云 Spartacus UI Proxy Facade 的一个理论例子探讨过了,会触发 core module 的提早加载。 手动通过 injector 注入 QuickOrderFacade 后果:不会触发 core module 的执行。 手动通过 injector 注入 QuickOrderFacade,调用其办法 后果,会触发 core module 的提早加载: 更多Jerry的原创文章,尽在:"汪子熙":

November 16, 2021 · 1 min · jiezi

关于sap:SAP-电商云-Spartacus-UI-Proxy-Facade-的一个实际例子

如何了解 SAP 电商云 Spartacus UI 中的 proxy facade? Jerry 这篇文章什么是 SAP 电商云 Spartacus UI 的 proxy façade提供了实践上的解释。 本文介绍一个理论例子。 当咱们关上如下 url 时,默认是不会触发 Quick Order Core module 的加载的,因为咱们基本没有应用到 Quick Order 任何性能: http://localhost:4299/electro... 当然,咱们依然有方法,在 homepage 的 app.module.ts 里手动编写一些代码,这些代码须要 Quick Order core module 被加载之后能力失常执行: 下面代码注入的依赖 QuickOrderFacade,尽管是 Quick Order root module 的一部分,被失常加载,然而 QuickOrderFacade 只是一个 Abstract Class,须要 core module 里提供的具体实现能力继续执行。因而,加上了上述代码之后,咱们拜访 Spartacus UI 的 homepage,也会触发 Quick Order Core module 的加载。 上述论断能够在 Chrome 开发者工具 network 标签页里察看到 Quick Order Core Module 的加载: ...

November 16, 2021 · 1 min · jiezi

关于sap:SAP-电商云-Spartacus-UI-Angular-Component-动态创建的单步调试

Jerry 之前的文章SAP 产品 UI 里的容器组件的概念和开发概述介绍过,SAP Spartacus Angular Component,通过咱们开发团队自定义的指令 cxComponentWrapper 进行渲染。 在运行时,依据 Angular Component 的名称,即第90行 flexType 字段蕴含的 QuickOrderComponent,咱们可能应用 Angular Component 动态创建 API 来触发这个 Component 的渲染。 default-component.handler.ts 里,调用 viewContainerRef 的 createComponent 办法,创立 Component 实例。 待创立的 Component 如果 constructor 里定义了内部依赖,须要实现这些依赖的创立和注入: 这里待注入的 token 就是 QuickOrderFacade: 这里解析出的 provider 是 QuickOrderService: CoreModule 一旦被加载,下图第6行 facadeProviders 里的 provider 定义立刻失效: 也就是说,运行时,QuickOrderService 会成为 QuickOrderFacade 的具体实现: 更多Jerry的原创文章,尽在:"汪子熙":

November 16, 2021 · 1 min · jiezi

关于sap:什么是-SAP-电商云-Spartacus-UI-的-proxy-façade

Proxy Facades 此性能在 3.2 版本引入。 代理外观是一种灵便的机制,能够从可提早加载的功能模块中形象出性能,这种性能抽线,能够对应用程序的任何局部实现,例如组件、服务、指令等。 在提早加载的配置中,Facade 被定义为一个十分薄的层,它只是一个带有一些元数据的空类,并且这个 Facade 动静地创立了一个 Facade 实现的代理。 下图是一个例子: 一旦代码的任何局部拜访代理外观的任何办法或属性,必要的性能就会在暗地里加载和初始化,并将调用代理到理论实现。 依据设计,代理外观对于提早加载和急迫加载场景是齐全通明的。 对于预加载场景,当代码动态链接时,理论实现覆盖了代理提供程序,并且无需任何代理层即可间接拜访。 feature module功能模块容许您将外围业务逻辑与组件一起封装,并在申请任何组件或须要某些逻辑时立刻加载它们。 代理外观利用功能模块配置来理解哪个性能蕴含外观的实现。 每当拜访性能的属性或调用办法时,都会在后盾加载和初始化性能。 Defining Proxy Facades本节介绍如何在根入口点中定义代理。 如前所述,代理外观是一个十分薄的层,由一个 JavaScript 类和一些元数据组成,这些元数据应该在根注入器中可用。 而后能够在应用程序的任何事后加载或提早加载局部中应用这个轻量级注入器。 上面是一个 UserAccountFacade 代理定义的例子,它有一个 get 办法并由 USER_ACCOUNT_CORE_FEATURE 实现: @Injectable({ providedIn: 'root', useFactory: () => facadeFactory({ facade: UserAccountFacade, feature: USER_ACCOUNT_CORE_FEATURE, methods: ['get'], }),})export abstract class UserAccountFacade { abstract get(): Observable<User | undefined>;}上文所示这种轻量级的 Facade 模块是急迫加载包的一部分(通常是根入口点,在默认 Spartacus 库的状况下),而其具体实现(UserAccountService),是在提早加载的块中提供的。提早加载的块通常实现在库的 core 文件夹下。 上面是一个实现的例子: @Injectable()export class UserAccountService implements UserAccountFacade { // ... get(): Observable<User | undefined> { // ... }}如何在懒加载的 chunk 里为该 facade 提供实现: ...

November 16, 2021 · 1 min · jiezi

关于sap:不使用任何框架手写纯-JavaScript-实现上传本地文件到-ABAP-服务器

这是 Jerry 2021 年的第 69 篇文章,也是汪子熙公众号总共第 346 篇原创文章。 采纳 SAP UI5 sap.ui.unified.FileUploader 控件,联合 Gateway 框架,实现本地文件上传到 ABAP 服务器,不是一件艰难的事件。 但因为我的项目施行的客观条件限度,如果不应用 SAP UI5 和 SAP ABAP Gateway 这两个框架,又该如何实现呢? 这是最近一个敌人征询我的问题。实际上我早在 2014 年就做过相似的事件。本文介绍不应用 SAP UI5 和 SAP ABAP Gateway 框架,纯手工进行前后端编程,来实现文件上传的需要步骤。 本文提供的源代码,前端 JavaScript 代码和 后端 ABAP 服务器的文件接管代码,因为没有应用任何利用层面的框架,因而可能在 SAP 任何基于 ABAP 技术栈的 On-Premises 产品里运行。 咱们从前后端两层的实现来别离理解这个需要的实现细节。 前端实现前端代码比较简单,只有 30 行代码。新建一个 HTML 文件,把这 30 行代码粘贴进去。 其设计思路概述成以下 7 点。须要残缺源代码的敌人,请从这个链接取得。 (1) 定义一个原生的 form 元素,应用 enctype 字段指定该表单发送到服务器的编码格局为 multipart/form-data. (2) 该表单的数据应用 HTTP POST 办法发送到服务器。 ...

November 16, 2021 · 2 min · jiezi

关于sap:SAP-UI5-初学者教程之十三-如何添加自定义-CSS-类试读版

一套适宜 SAP UI5 初学者循序渐进的学习教程教程目录SAP UI5 本地开发环境的搭建SAP UI5 初学者教程之一:Hello WorldSAP UI5 初学者教程之二:SAP UI5 的疏导过程 BootstrapSAP UI5 初学者教程之三:开始接触第一个 SAP UI5 控件SAP UI5 初学者教程之四:XML 视图初探SAP UI5 初学者教程之五:视图控制器初探SAP UI5 初学者教程之六 - 理解 SAP UI5 的模块(Module)概念SAP UI5 初学者教程之七 - JSON 模型初探SAP UI5 初学者教程之八 - 多语言的反对SAP UI5 初学者教程之九 - 创立第一个 ComponentSAP UI5 初学者教程之十 - 什么是 SAP UI5 利用的描述符 DescriptorSAP UI5 初学者教程之十一 :SAP UI5 容器类控件 Page 和 PanelSAP UI5 初学者教程之十二 - 应用 CSS 类对 UI 进行进一步丑化SAP UI5 初学者教程之十三 - 如何增加自定义 CSS 类阐明Jerry 从 2014 年退出 SAP成都研究院 CRM Fiori 开发团队之后开始接触 SAP UI5,已经在 SAP 社区和“汪子熙”微信公众号上发表过多篇对于 SAP UI5 工作原理和源码解析的文章。 ...

November 16, 2021 · 1 min · jiezi

关于sap:SAP-产品-UI-里的容器组件的概念和开发概述

这是 Jerry 2021 年的第 68 篇文章,也是汪子熙公众号总共第 345 篇原创文章。 Jerry 之前的文章,谈谈 SAP 产品 UI 开发中的组件概念,已经提到,无论基于何等开发技术的 SAP 产品 UI,其出现在最终用户背后的视觉效果,都是通过若干逻辑意义上的组件(Component)实现的。这些逻辑意义上的组件,代表了 SAP 产品提供给最终用户交互性能的细粒度的封装,比方查问订单的界面,和创立订单的界面,开发时通常搁置于两个不同的组件内实现。 这些 UI 组件通常都蕴含模型层,视图层和控制器层,通过开源或者 SAP 自研的 UI 框架彼此交互,协同工作。 不少 SAP 产品的 UI 开发,组件的定义和边界十分清晰,比方 SAP UI5 里的 Component.js, SAP ABAP Webdynpro 和 WebClient UI 的 Component,SAP Commerce Cloud Accelerator UI 里的 JSP Component 和 Spartacus UI 里的 Angular Component.这些产品的 UI 开发工作,次要就是进行这些 Component 的代码编写。 下图所示的 SAP Cloud for Customer UI Designer 里这些类型各异的 UI 模型,如 OWL,QAF, FS 等等,更是典型的 UI 组件的例子。 ...

November 16, 2021 · 3 min · jiezi

关于sap:使用-ABAP-控制-Android-原生应用

How to Control Native Android Apps with ABAP 业务流程不再仅在实用于 Windows 的 SAP GUI 中实现。 在其余设施上的其余 UI 上也越来越多地采取措施。 在这篇博文中,我形容了如何通过 PowerShell 应用 ABAP 在虚构 Android 设施上管制本机应用程序和 Web 应用程序的可能性。 为了实现这个场景,咱们应用这篇文章和这篇文章形容的办法。 SAP 零碎和虚构设施之间的桥梁构建了一系列库和应用程序。 它从 SAPIEN 的 ActiveXPoshV3 库开始,用于从 SAP 连贯 PowerShell。 蕴含该过程的 PowerShell 脚本作为蕴含开发对象存储在 SAP 后端系统上。 ABAP 报告加载此脚本并执行它。 该脚本应用 Appium 客户端库连贯 Appium 服务器,该服务器连贯来自 Android Studio 的虚构设施。 这里有一个 PowerShell 脚本来管制 Android 计算器应用程序。 将其存储为蕴含在您的 SAP 零碎中。 它加载客户端库,设置必要的性能,如设施名称、应用程序等,并执行一些 activity. 它将 6 加到 9,将 166 乘以 9 并将后果写入屏幕。 ...

November 16, 2021 · 2 min · jiezi

关于sap:SAP-电商云-Spartacus-UI-的-feature-module-设计原理

咱们以一个具体的例子来阐明该原理。 咱们查看某 integration library 目录下的 public_api.ts: 关注 module: 这个 lib 蕴含的 module 为 EpdVisualizationModule 以及对应的配置:EpdVisualizationConfig 留神第八行 import 的 VisualPickingTabModule,这个才是蕴含了 Angular Component 的 module. 入口是 VisualPickingTabComponent: 对于 Spartacus 来说,它只关怀最顶层的 EpdVisualizationModule. SpartacusFeaturesModule SpartacusFeaturesModule 旨在轻松治理所有非核心 Spartacus 性能,包含动态加载和提早加载。 它充当所有性能的入口点,现实状况下,这些性能被包装到本人的独立功能模块中。 在晚期的 3.x 主要版本中,SpartacusFeaturesModule 可能看起来臃肿而繁忙,但随着每个间断的公布,它应该变得更加简洁,因为致力将大部分性能移到独自的库中。 现实状况下,能够将一个残缺的性能封装到一个特定的功能模块中。 该模块能够蕴含与性能相干的配置以及自定义。 依据环境变量 environment 对应的值来决定插入哪些 feature module 到数组 featureModules 里。 最初 SpartacusFeatureModule import 的 module 蕴含两局部,mandatory 的 core module(硬编码),以及上文形容的 featureModules 数组里的 module 两局部。 linux 零碎: ...

November 16, 2021 · 1 min · jiezi

关于sap:SAP-Commerce-Cloud-产品明细页面设计概述

url:http://localhost:4299/electro... template:ProductDetailsPageTemplate 17个 content slot: 我关怀的是这个 slot:TabsSlot CMSTabParagraphContainer 这是一个 container,外面蕴含的 Component: ProductDetailsTabComponent ProductSpecsTabComponent ProductReviewsTabComponent deliveryTab 这四个 Component,顺次对应上面四个 tab: 以 uid 作为 id 搜寻条件,到 Backoffice 里搜寻: OCC 里看到的 type code,反映在 Backoffice 里这个字段: 那 deliveryTab 在 Backoffice 里什么中央可能找到? content: CMS 里保护的这段文字,在这里可能看到: 更多Jerry的原创文章,尽在:"汪子熙":

November 16, 2021 · 1 min · jiezi

关于sap:SAP-Commerce-Cloud-SmartEdit-学习笔记

官网文档 SmartEdit 是一个可插拔的 JavaScript 框架,附带一个 UI,使开发人员可能治理现有的网页。 SmartEdit 生态系统由独特提供 SmartEdit 产品的 modules 和 extensions 组成。 SmartEdit 是 SmartEdit 模块中一个前端驱动的可扩大应用程序。 CMS REST 调用的 SAP Commerce Cloud 实现是 WCMS 模块的一部分。 SmartEdit 的所有前端扩大 SmartEdit 都须要 npm-ancillary modules 用于其构建生命周期。 您必须装置 smarteditaddon AddOn 能力应用 SmartEdit 编辑 SAP Commerce Cloud Accelerator 店面。 smarteditaddon 插件在任何基于 coreaccelerator 的店面中实现 SmartEdit contract. SmartEdit 是一个用于治理店面内容的 Web 应用程序。 如果店面恪守 SmartEdit 店面设计 contract,则该网站的店面能够由 SmartEdit 进行编辑。 对于应用 yacceleratorstorefront 或 yb2bacceleratorstorefront EXTENSION 创立的店面,您能够通过启用 smarteditaddon AddOn 应用 SmartEdit 编辑店面。 此插件确保能够应用 SmartEdit Web 应用程序编辑基于 coreaccelerator 的店面的内容。 ...

November 16, 2021 · 2 min · jiezi

关于sap:SAP-EPD-Enterprise-Product-Development

SAP EPD - Enterprise Product Development, 通过连贯洞察力、流程和人员,使您的企业可能更快地进行翻新、迭代和推出新产品。 数字化产品开发 - 从离散制造商的设计到经营以及流程制造商的设计到生产 - 以缩短上市工夫。 借助 SAP 企业产品开发解决方案,包含用于合作、互联产品、工程、配方和可视化的云服务,减速产品开发、放慢实现价值并降低成本。 通过翻新的开发流程开发高质量、互联、合规和可继续的产品。 使企业可能与所有相干信息、见解和利益相关者进行合作,以放慢产品开发。 创立闭环企业流程,以同步从设计到经营以及从设计到生产的数字线程。 SAP EPD 产品部署在云中,并作为软件即服务 (SaaS) 提供,因而您能够从任何 Web 浏览器拜访您的软件。 利用咱们的整体服务和反对打算、专家咨询服务、定制利用程序开发、通过验证的最佳实际以及深厚的行业和技术常识,疾速无效地转变您的业务。 更多Jerry的原创文章,尽在:"汪子熙":

November 16, 2021 · 1 min · jiezi

关于sap:SAP-电商云-Spartacus-UI-和-SmartEdit-本地测试环境

https://localhost:9002/smarte... https://localhost:9002/backof... backoffice 里,把 Spartacus website 的 WCMS cockpit preview url,改成本地 Spartacus url: http://localhost:4299/powerto... 留神把后面的 https 去掉。 确保这个 url 本地拜访没有问题。 点击 Pages,创立新的页面: 当 Storefront 无奈渲染时,首先查看 SPA Powertools 这个 site 在 Backoffice WCMS 里的设置是否正确: 关上 Spartacus powertools Site,切换到 WCMS properties,查看 WCMS Cockpit Preview URL: 这个 URL 必须在本地能够拜访才行: https://localhost:4200/powert... http://localhost:4200/powerto... 更多Jerry的原创文章,尽在:"汪子熙":

November 16, 2021 · 1 min · jiezi

关于sap:SAP-Commerce-Cloud-里的-Media-概念简述

SAP Commerce 中的媒体我的项目不是物理文件,而是对该文件的援用。 SAP Commerce 中的媒体项是一个容器对象,其中蕴含对文件的援用。 也就是说,SAP Commerce 中的媒体项不是文件自身,而是对文件的援用。 理论文件能够存储在 SAP Commerce 中,也能够位于近程服务器或零碎上。 媒体我的项目具备标识符并调配给 catalog version. 标识符用于逻辑援用,例如用于匹配产品标识符。 媒体我的项目能够与它们被调配到的目录版本一起同步。 这样,您能够确保产品图像与目录版本相匹配。 此外,媒体我的项目具备指向理论文件地位的 URL。 要在 SAP Commerce 应用程序中援用文件,您须要检索并应用媒体我的项目的 URL。 在图中,目录 Clothescatalog 蕴含一个目录版本 (Online),其中蕴含一种产品 (30124)。 本产品援用了两个媒体我的项目; 30124_medium 和 30124_thumbnail。 媒体项 30124_medium 援用文件 30124_medium.jpg,而媒体项 30124_thumbnail 援用文件 30124_thumbnail.jpg。 One File per Media, Several Media per Filemedia item 和物理文件是一一对应的。 在目录版本同步期间,源目录版本中的所有媒体我的项目都会被复制。 同步后,每个媒体我的项目都有两次可用:一次在源目录版本中,一次在目标目录版本中。 然而,媒体项所援用的文件不会被复制并且只能应用一次。 目标目录版本中的媒体我的项目保留对原始文件的援用,而不是在目标目录版本中创立媒体项援用文件的独自正本。 这个概念相似于符号链接。 https://localhost:9002/medias... url 字段后面增加 https://,就能够在浏览器里查看了: Grouping Media Using Media ContainersSAP Commerce 中的媒体我的项目能够调配给各个媒体容器以进行逻辑分组。 一个独自的媒体我的项目只能调配给一个媒体容器,该容器蕴含与某个媒体我的项目不同格局的所有媒体我的项目。 例如,一个媒体容器能够包容某个产品的所有媒体我的项目,无论是什么文件类型或理论文件的度量。 实质上,媒体容器是针对哪种媒体格式应用哪些媒体项的规定。 如果媒体项具备媒体格式集,则只能将媒体项调配给媒体容器。 ...

November 7, 2021 · 1 min · jiezi

关于sap:如何架设自己的-SAP-UI5-资源服务器

我写了一套适宜 SAP UI5 初学者应用的教程,链接在此。 该教程里的每一步骤,应用的都是 SAP public host 的 SAP UI5 资源服务器: https://sapui5.hana.ondemand.... 当然,咱们能够用运行在本地的 SAP UI5 资源服务器代替。 本文介绍具体步骤。 首先装置 http-server. 咱们会应用这个 http-server 来提供 SAP UI5 资源服务。 命令行:npm install --global http-server 进到 SAP UI5 资源文件的文件夹根目录: 执行命令行 http-server . -p 8080 --cors 之后,咱们就能够用 127.0.0.1 来拜访 SAP UI5 资源文件了: http://127.0.0.1:8080/resourc... 咱们在 index.html 里,填入本地的 sap-ui-core.js 文件即可: 运行咱们编写的 SAP UI5 利用,此时就能发现,所有 SAP UI5 库的资源文件,都由本地 127.0.0.1 的 HTTP 服务器提供了: 更多Jerry的原创文章,尽在:"汪子熙": ...

November 7, 2021 · 1 min · jiezi

关于sap:如何在-SAP-电商云-Spartacus-UI-里新建一个页面

因为 SAP Spartacus UI 是基于 CMS 驱动的,因而流程是:咱们首先在 SAP Commerce Cloud Backoffice 创立新的 content page, CMS Component 以及相干内容,而后再到 SAP Spartacus 层,新建一个 Angular Component,映射到之前 Commerce Cloud Backoffice 里创立的 CMS Component. 步骤1 - 在 SAP Commerce Cloud Backoffice 创立必须的 CMS 内容具体步骤能够参考我这篇文章:如何在 SAP 电商云里应用 Backoffice 和 Smart Edit 创立新的 Content Page 残缺的 impex 源代码如下: ## Quick Order ## (my-account/quick-order)$contentCatalog=powertools-spaContentCatalog$contentCV=catalogVersion(CatalogVersion.catalog(Catalog.id[default=$contentCatalog]),CatalogVersion.version[default=Staged])[default=$contentCatalog:Staged]INSERT_UPDATE ContentPage;$contentCV[unique=true];uid[unique=true];masterTemplate(uid,$contentCV);label;;jerryOrderPage;AccountPageTemplate;/my-account/jerry-orderINSERT_UPDATE ContentSlot;$contentCV[unique=true];uid[unique=true];name;active;cmsComponents(&componentRef);;BodyContentSlot-jerryOrder;Body Content Slot for Jerry Order;true;JerryOrderComponentINSERT_UPDATE ContentSlotForPage;$contentCV[unique=true];uid[unique=true];position[unique=true];page(uid,$contentCV)[unique=true];contentSlot(uid,$contentCV)[unique=true];;BodyContent-jerryOrder;BodyContent;jerryOrderPage;BodyContentSlot-jerryOrderINSERT_UPDATE CMSFlexComponent;$contentCV[unique=true];uid[unique=true];name;flexType;&componentRef;;JerryOrderComponent;Jerry Order Component;JerryOrderComponent;JerryOrderComponentINSERT_UPDATE CMSLinkComponent;$contentCV[unique=true];uid[unique=true];url;;JerryOrderLink;/my-account/jerry-order步骤2在 Spartacus 创立新的 Angular Component,将其映射到 SAP Commerce Cloud Backoffice 里创立的 CMS Component:JerryOrderComponent ...

November 7, 2021 · 1 min · jiezi

关于sap:如何在-SAP-电商云里使用-Backoffice-和-Smart-Edit-创建新的-Content-Page

Impex 源代码如下: $contentCatalog=powertools-spaContentCatalog$contentCV=catalogVersion(CatalogVersion.catalog(Catalog.id[default=$contentCatalog]),CatalogVersion.version[default=Staged])[default=$contentCatalog:Staged]INSERT_UPDATE ContentPage;$contentCV[unique=true];uid[unique=true];masterTemplate(uid,$contentCV);label;;jerryOrderPage;AccountPageTemplate;/my-account/jerry-order登录 Hybris Administration Console,导入这段 impex: 之后发现了胜利生成了一个 jerryOrderPage: 状态为 check: 状态能够改成 approved,但怎么 sync 呢? 状态变成 ready to Sync 了: 在 smart Edit 页面里,可能看到我刚刚通过 impex 创立的 page,状态曾经变成 Ready to Sync 了: 在菜单里抉择 Sync: 点击 Sync 按钮: Sync 胜利: 再回到 Backoffice,此时发现在 online version 下也能看到这个 page 了: 依据上面的 url,曾经能够胜利返回这个 content page 的元数据了: https://localhost:9002/occ/v2... 更多Jerry的原创文章,尽在:"汪子熙":

November 7, 2021 · 1 min · jiezi

关于sap:SAP-电商云-Spartacus-UI-Quick-Order-对应的-CMS-内容

UPDATE ContentPage;$contentCV[unique=true];uid[unique=true];masterTemplate(uid,$contentCV);label;;quickOrderPage;AccountPageTemplate;/my-account/quick-order在 ContentPage 里插入了一张表 quickOrderPage,基于的 template 为:AccountPageTemplate 依据 ID 搜寻,搜寻进去很多后果,这些 template 是关联到 Catalog version 的: template 能够挂载 content slot: 为什么搜寻进去的 quickOrderPage,没有在 Spartacus 的 catalog 上面呢? Jerry 还没试过前台 Spartacus 连我后盾的 H2011 Commerce Cloud,Quick Order 是否工作? 果然,在咱们的开发服务器 Backoffice 上,就能看到 Quick order 页面,曾经插入到 Spartacus 对应的 catalog 去了: 再看 ContentSlot:BodyContentSlot-quickOrder 这个 content slot 也是如此:在咱们的开发服务器上能查到: 然而在我本地装置的服务器上查不到: Content slot 里插入的 Component: QuickOrderComponent 也必须调配到 Spartacus 对应的 catalog 下: 这个 Component 同样应该调配一个 content slot: ...

November 7, 2021 · 1 min · jiezi

关于sap:SAP-UI5-初学者教程之十二-使用-CSS-类对-UI-进行进一步美化试读版

一套适宜 SAP UI5 初学者循序渐进的学习教程教程目录SAP UI5 本地开发环境的搭建SAP UI5 初学者教程之一:Hello WorldSAP UI5 初学者教程之二:SAP UI5 的疏导过程 BootstrapSAP UI5 初学者教程之三:开始接触第一个 SAP UI5 控件SAP UI5 初学者教程之四:XML 视图初探SAP UI5 初学者教程之五:视图控制器初探SAP UI5 初学者教程之六 - 理解 SAP UI5 的模块(Module)概念SAP UI5 初学者教程之七 - JSON 模型初探SAP UI5 初学者教程之八 - 多语言的反对SAP UI5 初学者教程之九 - 创立第一个 ComponentSAP UI5 初学者教程之十 - 什么是 SAP UI5 利用的描述符 DescriptorSAP UI5 初学者教程之十一 :SAP UI5 容器类控件 Page 和 PanelSAP UI5 初学者教程之十二 - 应用 CSS 类对 UI 进行进一步丑化阐明Jerry 从 2014 年退出 SAP成都研究院 CRM Fiori 开发团队之后开始接触 SAP UI5,已经在 SAP 社区和“汪子熙”微信公众号上发表过多篇对于 SAP UI5 工作原理和源码解析的文章。 ...

November 7, 2021 · 1 min · jiezi

关于sap:SAP-UI5-CSS-类-sapUiSmallMarginEnd-的工作和添加原理

我做 SAP UI5 开发时遇到一个问题: 我在 XML 视图里,给 Button 控件调配了一个 CSS class: sapUiSmallMarginEnd 冀望运行时,该 CSS 类可能产生 1 rem 的 margin 成果: 上图来自 SAP UI5 官网的例子。 然而,我的例子运行进去失败了,我的 button 控件渲染出的 HTML 原生代码,并没有呈现这个 CSS 类,我冀望的 margin 成果并没有实现: 这个 class 存储在 aCustomStyleClasses 数组里: 在 XMLTemplateProcessor 里解决自定义 CSS: 自定义 class 在此处被写入:334 行 511行: buttonRender.js 的第 130 行: 我的例子里,并没有解析出 aCustomClasses 回到我的代码,调试 1450行,为什么 CSSStyle 没有增加到 button 里: 8081 即 SAP 例子里,sStyleClasses 可能胜利被解析进去: ...

November 7, 2021 · 1 min · jiezi

关于sap:SAP-UI5-初学者教程之十一-SAP-UI5-容器类控件-Page-和-Panel

一套适宜 SAP UI5 初学者循序渐进的学习教程教程目录SAP UI5 本地开发环境的搭建SAP UI5 初学者教程之一:Hello WorldSAP UI5 初学者教程之二:SAP UI5 的疏导过程 BootstrapSAP UI5 初学者教程之三:开始接触第一个 SAP UI5 控件SAP UI5 初学者教程之四:XML 视图初探SAP UI5 初学者教程之五:视图控制器初探SAP UI5 初学者教程之六 - 理解 SAP UI5 的模块(Module)概念SAP UI5 初学者教程之七 - JSON 模型初探SAP UI5 初学者教程之八 - 多语言的反对SAP UI5 初学者教程之九 - 创立第一个 ComponentSAP UI5 初学者教程之十 - 什么是 SAP UI5 利用的描述符 Descriptor阐明Jerry 从 2014 年退出 SAP成都研究院 CRM Fiori 开发团队之后开始接触 SAP UI5,已经在 SAP 社区和“汪子熙”微信公众号上发表过多篇对于 SAP UI5 工作原理和源码解析的文章。 在 Jerry 这篇文章 对 SAP UI5 无所不知的老手,从哪些资料开始学习比拟好? 已经提到,Jerry 也是从 SAP UI5 菜鸟一路走过去,深知只有 ABAP 开发背景的开发者,向 SAP UI5 开发畛域转型的不易,因而我在业余时间设计了这份适宜 SAP UI5 初学者的学习教程,把开发一个残缺的 SAP UI5 利用的流程,拆分成若干个步骤,力求每个步骤里,把波及到的知识点都涵盖到。这些知识点可能不像我的 UI5 源码剖析系列文章那么深刻,但力求浅显易懂,便于 SAP UI5 初学者了解。 ...

November 4, 2021 · 1 min · jiezi

关于sap:如何创建最简单的-ABAP-数据库表以及编码从数据库表中读取数据-上

ABAP 规范培训教程 BC400 学习笔记之一:ABAP 服务器的架构和一个典型的 ABAP 程序结构介绍ABAP 规范培训教程 BC400 学习笔记之二:Cross-client 和 Client-specific 的区别ABAP 规范培训教程 BC400 学习笔记之三:ABAP 编程语言的个性和根本形成因素ABAP 规范培训教程 BC400 学习笔记之四:ABAP 编程语言的数据类型ABAP 规范培训教程 BC400 学习笔记之五:ABAP 编程语言的变量,常量和字面量,以及文本符号专题文章通过理论的例子,介绍 SAP ABAP 里的 Repository Information System 的应用技巧ABAP function module 的应用ABAP subroutine 的定义和应用ABAP 中的变量和常量ABAP 编程语言中的零碎字段(System Fields)什么是 ABAP Field SymbolABAP 援用类型介绍最浅显易懂的 SAPGUI 里 ABAP 调试器的应用办法介绍如何创立最简略的 ABAP 数据库表,以及编码从数据库表中读取数据 (上)假如我的需要是,在 ABAP 零碎里,创立两个数据库表,如下图 Excel 所示。 黄色表的名称为 ZPERSON, 保护的是人的 ID 和名称. 绿色表的名称为 ZMYORDER, 保护的信息是订单ID(OrderID),订单名称(OrderName)和下单客户的ID(CustomerID). 这是一个最简略的数据库表创立需要。 应用事物码 SE11,输出 ZPERSON, 点击 Create 按钮: ...

November 4, 2021 · 1 min · jiezi