SAP SEGW 事物码里的 ABAP 类型和 EDM 类型映射的一个具体例子
本文的示例主要关注 Edm属性的 ABAP Datetime 处理逻辑。Datetime 只是在映射ABAP 类型和 EDM 类型时可能出现不一致的例子之一。 对于 Edm.Datetime 属性,在后端,ABAP 字段可以表示为一个简单的日期或时间戳,可以带有也可以不带有小数秒。 因此,在 Service Builder 中对于一个EDM.Datetime 类型的属性,需要额外的信息来将这个
SAP SEGW 事物码里的 ABAP Editor
因为可以为 Entity Type 的属性,设置 EDM 类型和内部 ABAP 类型,所以必须对这些类型进行验证,以确保值之间没有不匹配的情况发生。 这种类型的不匹配可能会导致数据丢失,以 DateTime 和 Date 为例,前者类型比后者类型的限制更严格,因此会导致数据丢失。 如果 EDM 类型和 ABAP 类型不兼容,则返回错误提示。 使用 ABAP 类型编辑器和相应的 ABAP 字段
SAP 电商云和 Customer Data Cloud(CDC) 的登录集成过程中的一些问题分析
商业体验的数字化一直是许多 SAP 客户的主要关注点,为了在品牌和消费者之间建立信任关系,客户生命周期是至关重要的。SAP 客户数据云(Customer Data Cloud)和 SAP 商务云(Commerce cloud)不仅为解决这些挑战提供了解决方案,而且还通过标准的开箱即用功能和集成简化了实现过程。 在我们讨论具体的功能和设计注意事项之前,了解每种产品的作用是很重要的。 SAP Cu
SAP SEGW 里的 Entity Type 作用讲解
定义 Entity Type 是在事物码 SEGW 里进行数据建模的步骤之一。 在 Service Builder 项目中使用 Entity Type来描述实体数据模型(EDM)中的数据结构。Entity Type 表示数据的特定类型,例如 Item 或 Concept。实体类型由下列这些元素组成: 一个唯一的名称 如下图图例1 Opportunity 所示: 键,可以由一个或
关于 SAP SEGW Project Type 的四种不同类型
当我们使用事物码 SEGW 创建一个新的 Project 时,我们可以从下拉菜单里选择四种不同的项目类型: 如果要使用 terms 对数据模型工件(artifacts)进行注释, 以提供有关工件的附加信息,请选择 Service with Vocabulary-Based 的 Project 类型。 标准 SAP 注释不适用于此项目类型。 在这种情况下,可以将术语合并到一个词汇表中并上传
SAP Gateway Service Builder 里的 OData 服务实现方式
SAP SEGW 支持下列几种方式的 OData 服务实现方式: 基于代码的实现:Service Builder 根据开发人员定义的 OData 数据模型生成 ABAP 类。随后,可以直接从 Service Builder 导航到 ABAP Workbench,并且在其中访问适当的方法并为各种不同的服务操作编写源代码。 SAP 为数据供应和元数据定义提供了一些代码模式。 下图是基于代码实现
SAP Gateway Service Builder 里的 OData Model 定义方式
每个 OData 服务需要都数据模型定义(模型提供者类)。 在客户开发项目的情况下,开发过程总是从预先定义的数据模型开始(由外而内的方法)。 SEGW 支持下列几种 OData 模型定义方式: 手动定义数据模型提供最大的灵活性,需要手动定义单个数据模型元素及其属性。 下图就是手动创建的数据模型的一个例子: Import - 导入支持下图这几种导入方式: DDIC 结构(
SAP Gateway Service Builder 里 Project 的概念
如果 SAP 系统具有 SAP Gateway 7.40 或更高版本,则系统会安装核心组件 SAP_GWFND,并包括 IW_BEP 的功能范围。 如下图所示: Gateway Service Builder 将开发人员创建服务所需的所有开发工件可视化,包括: SAP Gateway 运行时工件,例如模型提供者类 (MPC)、数据提供者类 (DPC) 模型注释提供者类 (Annotati
SAP ABAP 写时拷贝(Copy on Write)策略的一个具体例子
值语义(Value semantics)和引用语义(reference semantics)描述了动态内存对象在多个变量引用它时, 可以表现的两种方式。 用于特定类型的动态内存对象的语义, 对该类型的对象如何消耗内存产生了重要影响。 本质上,使用值语义的引用变量总是有它自己的、它所引用的内存对象的唯一副本。值语义变量类似于静态变量;像静态变量一样,它直接绑定到它所代表的内存对象。尽管变量只是一
SAP ABAP 的两种内存对象类型
要研究 SAP ABAP 内表的写时复制(copy on write)机制,ABAP Memory Inspector 是必不可少的工具。 ABAP Memory Inspector 能报告运行 ABAP 程序的内部会话使用的内存。 这个工具能提供下列两个维度的数据: 直接归因于 ABAP 应用程序的内存消耗。 这包括 ABAP 程序的静态和动态内存对象中的内存,以及 ABAP 堆栈上程
通过 OData 里面写代码去检查有没有某一个 catalog 的权限
对于标题这个需求,首先要考虑在 OData 实现的什么地方去编写检查逻辑。 可以考虑在 OData 模型的 Function Import 里编写检查逻辑。 如果是用 Gateway Builder 即 SEGW 事物码开发的 OData,首先在 SEGW 项目里创建 Function Import: 然后在对应的 class 里编写 Function import 的具体实现代码。
SAP OData 开发教程 - 从入门到提高(包含 SEGW, RAP 和 CDP)
笔者之前的文章 SAP OData 编程指南 曾经提到过,OData(Open Data) 是 SAP 旗舰级产品 S/4HANA 里广泛使用的一种前台 Fiori 应用(SAP UI5 前端框架开发而成)同后台 S/4HANA ABAP 服务器通信的协议。通过这种交互方式,实现了 SAP Fiori 应用的前后端分离。 OData(Open Data Protocol)协议是一个开放的工业标准
SAP ABAP 系统进行 client 拷贝时遇到的 63999 table too wide 错误消息
使用事物码 SCC9 进行 client 之间数据拷贝时,遇到如下错误:63999 table too wide 这个错误在 SAP NOTE 2099033里有介绍。问题的根源是: Limitation in the source code when table length is greater than 63999 Bytes 意思是试图拷贝一个 length 超过 639
在 Google Kubernetes Cluster 上使用 HANA Expression Database Service
我们知道,Cluster 是 Google Kubernetes Engine (简称GKE)的基础,代表容器化应用程序的 Kubernetes 对象都在集群之上运行。 Google Kubernetes Engine (GKE) 提供了一个托管环境,开发人员可以使用 Google 基础架构在 GKE 中部署、管理和扩缩容器化应用。GKE 环境包括多个 Compute Engine 实例,这些实
在 Kyma 云原生平台上开发并部署 Node.js 应用
从 Kyma 官网 得知,Kyma 是一个云原生应用程序运行环境,它将 Kubernetes 提供的强大容器编排功能与若干世界级的开源组件和工具相结合,使开发人员能够开发、运行和操作安全且可扩展的云原生应用程序。 Kubernetes 提供了一个框架,用于运行基于容器的分布式系统。 我们可以将容器视为一个非常轻量级的虚拟机,其中包含一小块应用逻辑,这些逻辑服务于一些更大的应用程序,也就是微服
SAP UI5 应用开发教程之一百零二 - SAP UI5 应用的打印(Print)功能实现详解试读版
一套适合 SAP UI5 初学者循序渐进的学习教程作者简介Jerry Wang,2007 年从电子科技大学计算机专业硕士毕业后加入 SAP 成都研究院工作至今。Jerry 是 SAP 社区导师,SAP 中国技术大使。在长达 15 年的 SAP 标准产品开发生涯里,Jerry 曾经先后参与 SAP Business ByDesign, SAP CRM, SAP Cloud for Customer,
SAP ABAP 解析 excel 文件的函数 TEXT_CONVERT_XLS_TO_SAP 单步执行分析
本文是这篇文章SAP ABAP 处理 Excel 的标准函数 TEXT_CONVERT_XLS_TO_SAP 介绍的后续。 在本地新建一个 excel 文件,内容如下: 使用下面的 ABAP 代码进行解析: REPORT z. TYPES: BEGIN OF ty_data, field1 TYPE string, field2 TYPE s
SAP UI5 应用开发教程之一百零一 - SAP UI5 应用的 Locale 决定机制试读版
一套适合 SAP UI5 初学者循序渐进的学习教程作者简介Jerry Wang,2007 年从电子科技大学计算机专业硕士毕业后加入 SAP 成都研究院工作至今。Jerry 是 SAP 社区导师,SAP 中国技术大使。在长达 15 年的 SAP 标准产品开发生涯里,Jerry 曾经先后参与 SAP Business ByDesign, SAP CRM, SAP Cloud for Customer,
关于 SAP UI5 参数 $$updateGroupId 前面两个 $ 符号的含义
我的 SAP UI5 教程,SAP UI5 应用开发教程之六十五 - 基于 OData V4 的 SAP UI5 表格控件如何实现创建,编辑和保存功能,里面演示了通过 XML 视图的方式,非 SAP UI5 Table 控件,定义复合绑定路径的语法,如下图所示: <Table id="peopleList"
关于 SAP UI5 Context.prototype.delete 方法的输入参数 Group ID 的细节
在 Jerry 这篇教程 SAP UI5 应用开发教程之六十六 - 基于 OData V4 的 SAP UI5 表格控件如何实现删除功能 里,有个朋友提了个问题: 我们选中列表行项目之后,点击删除按钮,会触发一个 OData 的删除请求: 这个删除请求,通过 onDelete 函数的第 62 行代码,调用 BindingContext 实例的 delete 方法触发。该 delete