创建 SAP Fiori Catalog 时遇到的 duplicate 记录的问题分析
我在 Fiori Admin 创建 Catalog 时遇到一个问题: 错误消息如下: duplicate resource page x-sap-ui2-cataloguepage :SAP_HCM_BC_EMPLOYEE_X1 when i am trying to create catalogue 错误截图: Chrome 开发者工具 console 面板里的错误消息:
基于 ABAP Fundamental Library 应用支持的几种 Connectivity 方式
Fundamental Library for ABAP 运行时组件支持下列的 Connectivity Provider 技术: Java SAP Java Connector (JCo), SAP closed source, free of chargeSAP Cloud Connector, SAP closed source NodeJS node-rfc package, SA
SAP Commerce Cloud 的 Security 策略概述
通过将防火墙规则和 SSL 证书应用到端点(API endpoint)并通过配置其他参数,来优化 SAP Commerce Cloud 的安全操作和管理其安全性。 IP Filter SetsIP 过滤器集由可分配给一个或多个端点的 IP 地址列表组成。 使用 IP 过滤器集来限制特定 IP 集对端点的 Web 访问。 一个典型的用例是只允许从 office VPN 访问特定端点(如 Backo
Fundamental Library for ABAP 主要的组成部分概述
Fundamental Library Styles 是一个轻量级的表示层(presentation layer),可以与开发人员选择的 UI 框架(例如 Angular、React、Vue 等)一起使用。 通过组合基本样式、样式表库和 HTML 标记,开发人员可以在任何基于 Web 的技术中构建一致的 Fiori 应用程序。 考虑下列这些应用场景: 概念证明或演示应用程序使用硬编码数据运
关于 SAP Spartacus SSR 请求 OCC API 遇到 403 错误的解决办法
问题症状从 CCV2 Node.js Spartacus SSR 应用向 occ API 发起请求,得到 403 错误。 但是,frontend CSR 可以正常请求 OCC API. 分析检查 SSR 的 ip 是否加到了 OCC API 的 whitelist 里。 当启用服务器端渲染且 API 端点为私有(private,默认行为为拒绝所有 inbound 请求)时,来自 JS Sto
SAP Commerce Cloud 里的 User 模型和 Restriction 的关系
SAP Hybris 的 MENU item 可以被分配一个叫做 User Group restriction 的属性。 如果一个用户属于一个特殊的用户组,那么菜单项(menu item)应该是可见的。 现在的问题是,这个菜单项仍然显示在店面/网站上(虽然不能点击它),不管是匿名用户还是已注册用户。 在 Accelerator 里不会发生这个问题。 这个问题的原因在于,Spartacus
SAP Hybris Category 显示在 Storefront 的判定条件
默认情况下,只有标记为 active的目录版本(catalog version)在前端才可见。 Category Visibility每个类别(Category)都有一个属性,用于指定允许查看和浏览该类别的用户或用户组(User Group)。 可以在 Backoffice Administration Cockpit 的 General 选项卡上的 Category Visibility 或类
SAP 电商云 CMSUserGroupRestriction 在 Spartacus 里的 evaluation 问题
问题描述已经设置了 CMSUserGroupRestriction,在 Accelerator 上可以正常工作,但在 Spartacus 上不工作。注意到的是导航节点根据 restriction 已经处于 deactivated 状态,但它并没有消失。 例如,如果我为 Register Now 设置了一个导航节点,它应该只显示给匿名客户,匿名客户就可以点击链接。但实际观察到的现象是,登录后链接
如何在浏览器里执行 SAPGUI 的事务试读版
如果本教程的学习者是从其他编程语言的开发者转到 ABAP 开发上,那么一定体验过在浏览器里进行开发的在线编辑器,比如在阿里云开发平台的在线编辑器里,直接编写 Java 代码: 能编写 JavaScript 和 TypeScript 的在线编辑器就更多了,比如国内腾讯的 Cloud Studio: 国外的 StackBlitz: 以及 Google Cloud Platform 的
关于 SAP 电商云 Spartacus UI Navigation Service 执行的一些明细
第一次触发的时候,navigation.uid 并没有值: 下图:navigation.service 的 getNavigationNode 方法。 触发这个订阅的入口: <cx-navigation-ui *ngIf="data$ | async as data" [node]="node$ | async" [ngClas
在 SAP Fiori Gateway 系统配置一个指向 SAPGUI 事务的 tile
对于应用程序类型 Transaction、Web Dynpro 和 URL,开发人员可以直接在 SAP Fiori Launchpad Designer 的目标映射中定义系统别名。目标映射配置中的参数 System Alias 表示应用程序应调用指定的远程系统。 Launchpad Designer url 如下 事物码 SU01 里找到用户分配的 PFCG role: 找到这个 role
在 SAP ABAP Gateway 系统上定义后台系统的 Alias
在 SAP Fiori Launchpad 中,用户最初连接的系统和分配给用户的应用程序正在运行的系统,即所谓的远程系统(remote 系统),可能会有所不同。 在 Fiori Launchpad 中,remote target(远程目标)用于以下情况: 使用指向 SAP GUI 事务或 Web Dynpro ABAP 应用程序的 tile 进行导航时。 由于这些应用程序类型位于后端系统
在 SAP Fiori Launchpad 里给需要执行的 SAPGUI 事物码配置系统别名
参考 SAP note 2448050. 需要 SAP 系统别名作为系统连接的逻辑名称。 根据 SAP Gateway 内容场景和系统环境,设置系统别名并指定它应该指向的位置。前置条件为,已定义从 ABAP 前端服务器到所有后端服务器的远程函数调用 (RFC) Destination. 系统别名是 SAP Gateway 上入站请求(inbound request)的路由结果。它可以是远程
想在 Visual Studio Code 里进行 ABAP 开发,需要安装的扩展列表
想在 Visual Studio Code 里进行 ABAP 开发,需要安装这些 VS Code 扩展: ABAP Remote FileSystemABAP Syntax HighlightingABAP CDS Language SupportABAP Snippets 安装完毕后,我们可以将 SAP 系统配置为 Visual Studio Code 连接的远程文件系统。 为了连接到
SAP 电商云 Spartacus UI Angular UI 和 Accelerator JSP UI 的混合使用
Spartacus 在技术和架构( library 发布方式 vs 模板发布方式,headless vs embedded,Angular vs JSP 技术栈)等各方面,都是一种全面的从 Accelerator 的完整范式转变。因此,对于 Commerce Cloud 已经使用 Accelerator 的客户来说,并没有直接的方法可以从基于 Accelerator 的 Storefront 迁移
关于 Angular 部署以及 index.html 里 base hRef 属性的关联关系
直接在 SAP 电商云 Spartacus UI 项目下,运行命令行 ng build, 输出如下: dist 文件夹: 把 dist 文件夹下的 mystore 直接放到 tomcat webapps 文件夹下面,运行时: 如果修改 base 标签页的 href 属性: 则 index.html 里的几个 JavaScript 资源文件都加载不了: Erro
SAP 电商云 Spartacus UI UrlMatcherService 的用法介绍
这个 Service 类 outline 如下图所示: 运行时打印: 这是 Spartacus 团队实现的 Routing Module: 在 init 阶段进行路由配置。 configure 放法的作用:使用 Spartacus routing config 增强原生的 Angular Routes 配置。只能被调用一次。 router.config 包含了 Spartacus
SAP 电商云 Spartacus UI External Route 的模块实现概述
我们在 SAP Spartacus AppModule 里进行如下的 External Route 配置之后: provideConfig({ routing: { internal: [ '/**', '!/cart', '!/**/p/**&#
Angular 14 新的 inject 函数介绍
Angular 14 提供了一些非常有趣的特性:类型化表单(typed forms)、独立组件(standalone components),以及本文将要介绍的内容,即在所谓的构造器阶段(constructor phase) 使用 inject 函数的能力。 什么是 inject 函数inject() 函数将 InjectionToken 作为参数,并从当前 active 的注入器返回该 Inj
Angular 14 inject 函数使用过程中的一些注意事项
inject 函数只能用于构造器阶段,这意味着其只能在构造器函数作用域(constructor function scope)和字段初始化器(field initializers)中使用。 下列代码会遇到运行时错误(runtime error): 因为使用到了 inject 函数的 fetchEntity 方法,在构造函数作用域之外的上下文里被调用,不符合 inject 函数的使用前提。