
SAP OData 开发实战教程 - 从入门到提高
文章平均质量分 92
本教程根据笔者在 SAP 研究院工作多年的实战经验,计划通过300多篇文章,深入介绍 SAP 三大主流的 OData 开发技术:SEGW,Restful ABAP Programming 模型和CAP开发模型,对 ABAP,Java和 Node.js 开发人员的 OData 开发入门和 提高都有帮助
优惠券已抵扣
余额抵扣
还需支付
¥49.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
汪子熙
18年深耕企业管理软件领域,精通 ABAP, Java, Javascript, Typescript, 精通 UI5, Fiori, Fiori Element, Angular, Kubernetes, SAP HANA, SAP BTP. 具有通过阅读 Github 上各种优秀的开源框架和工具源代码的习惯,对于我来说阅读源代码,就像阅读中国白话文一样轻松自然。
展开
-
SAP OData 开发从入门到提高教程的目录
笔者 18 年的 SAP 技术开发生涯,对 SAP OData 服务的开发,测试,发布,部署,测试,及基于各种不同 SAP 技术实现的 OData 服务的幕后技术实现细节和使用场合,均有着深入的研究。原创 2022-07-13 22:00:55 · 4499 阅读 · 0 评论 -
SAP OData 开发教程 - 从入门到提高(包含 SEGW, RAP 和 CDP)
在 SAP 产品里,存在多种 OData 服务的开发方式,其中最典型的三类,SEGW, RAP(Restful ABAP Programming) 和 CDP(Cloud Application Program),就是笔者在本教程里会为大家分享和讲解的内容。同笔者的另一个 SAP UI5 教程《SAP UI5 应用开发教程的学习目录 - 循序渐进,由浅入深,适合不同水平的 SAP UI5 开发人员》一样,本教程笔者计划通过 300 篇以上的文章篇幅,分别介绍这三类 SAP 主流的 OData 服务开发技术。原创 2022-06-26 11:30:23 · 8786 阅读 · 14 评论 -
如何把 SAP Business Application Studio 里开发好的 OData 项目同步到 Github 上
在浏览器里写代码,有时候难免会误操作。如果可以把 SAP Business Application Studio 里的源代码,同步到 Github 上去,这样项目的每一次提交,都会被完整记录在版本历史中,相当于给我们的代码加了一道保险:这样既能在出现问题时迅速找到历史版本加以恢复,也能对比不同版本之间的修改细节,帮助定位错误。本文就介绍如何把我们 SAP Business Application Studio 里开发的 OData 项目,同步到 Github 上。原创 2025-03-10 14:47:13 · 161 阅读 · 0 评论 -
如何在 Visual Studio Code 里进行 SAP OData 开发
实际上笔者也更喜欢在本地 Visual Studio Code 开发 SAP UI5 和 OData,因为同浏览器里的 SAP Business Application Studio 相比,本地 Visual Studio Code 不受网络速度的限制,使用起来更丝滑。首先,在 SAP Business Application Studio 里打开项目,在空白区域点击右键,选择 Download,这样把整个项目下载到本地。然后将下载到本地的项目工程文件夹解压之后,进入该目录,执行命令行。原创 2025-03-10 13:31:54 · 163 阅读 · 0 评论 -
SAP UI5 应用同后台交互,到底应该选择 OData 还是直接用 HTTP JSON 报文
OData 协议,顾名思义,提供了一套开放的、标准化的接口规范,借助于自动生成的元数据文档和丰富的查询语法,可以让开发者更高效地构建和维护数据服务。自己造出来的轮子,质量很难超过 SAP 标准的 API.本图最底层可以看到 CDS View 即 Core Data Service View,这不仅仅是一种普通的「数据库视图」,而是 SAP 别出心裁地在传统「数据库视图」的基础上,丰富了大量的语义特性,比如允许在视图的源代码里,添加类似 Java,TypeScript 等编程语言里的「注解」,英文名称。原创 2025-03-10 11:18:08 · 488 阅读 · 1 评论 -
在浏览器环境里使用 SAP Business Application Studio 开发 OData 服务之七:OData 服务测试数据的准备工作
本教程前六篇文章,完成了 SAP CAP 编程模型下 OData 模型的定义,以及通过 services.cds 里编写 OData 服务,将模型暴露给消费者的开发工作。通用模块的实现,因为我们的模型从这个文件导入了 cuid,managed 和 CodeList 等重用的 aspect,所以该文件也被 cds watch 解析了。,虽然能够打开 OData 服务的测试页面,但是因为事先没有准备任何测试数据,因此看不到我们开发好的 OData 服务的效果。就可以看到对应的 OData 节点数据了。原创 2025-02-12 16:41:27 · 188 阅读 · 0 评论 -
在浏览器环境里使用 SAP Business Application Studio 开发 OData 服务之六:编写 services.cds 以暴露 OData 模型
发现返回的数据为空。虽然我们对这个文件里的五十多行源代码,已经完成了逐行的语法介绍和分析,但有些学习者还是觉得心里有些不踏实,因为迄今为止,我们还没有任何可以运行的代码,所以看不到我们花了这么多时间学习这些新的东西,到底有什么用?点击这个蓝色按钮,浏览器自动打开一个新的 tab,显示了一个自动生成的页面,我们可以将这个页面,当成 services.cds 文件里实现的 OData 服务的一个测试控制台。没关系,大家按照本文的步骤动手实践之后,就可以在浏览器里,对我们开发好的 OData 服务进行测试了。原创 2025-02-12 14:17:24 · 120 阅读 · 0 评论 -
在浏览器环境里使用 SAP Business Application Studio 开发 OData 服务之五:类型为 CodeList 的 OData 节点设计
本文介绍在 SAP CAP 里如何使用 sap.common.CodeList 来给 OData 模型创建类型为 CodeList 的节点。原创 2025-02-12 11:52:54 · 172 阅读 · 0 评论 -
在浏览器环境里使用 SAP Business Application Studio 开发 OData 服务之四:CAP OData 模型节点之间关联关系的维护
本教程之前的文章,我们已经开始在 CAP 项目 db 文件夹下的schema.cds文件里,进行 OData 模型的定义和实现,并且介绍了 CAP 项目采用 core data service 语言进行模型实现的一些语法细节,比如通过 entity 关键字定义 OData 模型节点,通过 aspect 关键字定义一些允许在 entity 之间重用字段的结构。本文继续介绍通过 core data service 在 SAP CAP 中进行 OData 模型建模的一些通用场景。本教程之前的内容提到,我们在。原创 2025-02-11 19:41:26 · 139 阅读 · 0 评论 -
在浏览器环境里使用 SAP Business Application Studio 开发 OData 服务之三:什么是 CAP 中的 aspect 概念
本教程之前的文章,我们已经完成了第一个 CAP 项目 db 文件夹下 schema.cds 文件的编辑。这个文件负责定义和实现基于 CAP 的 OData 服务的模型开发。本文我们不急着赶进度,而是细细梳理一遍 schema.cds 文件的内容,做到知其然知其所以然,深入学习通过 Core Data Service 方式进行数据建模的理念和具体的编程语法。有了本文的基础之后,后续步骤再实现 srv 文件夹里的服务实现时,就会事半功倍。原创 2025-02-11 19:01:11 · 127 阅读 · 0 评论 -
在浏览器环境里使用 SAP Business Application Studio 开发 OData 服务之二:创建 OData 模型节点
运行 cds watch 命令后,CAP 框架会自动监视 db/、srv/ 和 app/ 目录中的代码文件,并在文件发生变更时自动重启服务,避免手动执行 cds run 这样的命令,为开发人员节省了很多体力活。笔者下一篇文章继续介绍。在 Cloud Application Programming 世界里,我们通过在 CAP 项目的 db 文件夹内,创建 schema.cds 并实现,来达到同样的目的。当然,到目前位置,db,srv 和 app 这些文件夹内都是空的,等着我们去实现。, 如下图绿色区域所示。原创 2025-02-11 11:28:43 · 134 阅读 · 0 评论 -
在浏览器环境里使用 SAP Business Application Studio 开发 OData 服务之一:准备工作
笔者本教程之前的文章,介绍的都是在 ABAP NetWeaver 服务器里,使用事务码 SEGW 即 Gateway Builder 开发 OData 服务。采用这种方式开发,OData 模型通过 ABAP 数据字典即事务码 SE11 结合事务码 SEGW 来创建,而 OData 模型的具体实现(增删改查),通过在 SE24 和 SE80 里编写 ABAP 代码来实现。原创 2025-02-10 19:24:40 · 760 阅读 · 0 评论 -
SAP OData 服务的软状态支持(Soft State)与性能优化探索
Soft State软状态是一种增强 SAP NetWeaver Gateway 运行时性能的模式,通过这种模式,服务器能够在 ABAP 应用服务器的单一会话中处理多个请求,其行为类似于传统的有状态会话。与有状态会话的主要区别在于:当会话超时时,应用服务器不会因为超时而抛出异常,而是会创建一个新的会话并继续处理请求。因此,对于客户端而言,应用服务器会话的更改是完全透明的,且不会丢失任何客户端的会话数据。SAP 官方帮助文档链接。原创 2024-11-27 15:58:32 · 86 阅读 · 0 评论 -
SAP OData 服务的 Soft State 模式:概念、实现与应用案例
OData 的核心目标是简化数据的共享和访问,打破数据孤岛,促进数据在不同应用程序和平台之间的互操作性。与传统的有状态会话不同,当会话超时时,服务器不会抛出超时异常中断请求处理,而是创建一个新的会话并继续处理请求。在传统的 OData 服务中,每个请求都是无状态的,即服务器不会保留客户端的任何上下文信息。这种无状态的设计虽然简化了服务器的实现,但在处理需要多次请求的复杂操作时,可能导致性能瓶颈。在事务代码 SICF 中,找到对应的服务节点,设置会话超时时间为大于零的值,例如 10 秒。原创 2024-11-27 15:44:55 · 86 阅读 · 0 评论 -
SAP NetWeaver Gateway 的架构与组件
在 SAP NetWeaver 7.40 之前的版本中,SAP Gateway 的部署需要在服务器系统上安装 GW_CORE 和 IW_FND 组件,并在后端系统上安装 IW_BEP 组件。然而,这也增加了部署的复杂性。在 7.40 及以上版本中,SAP 对 Gateway 的架构进行了简化,将多个组件的功能整合到一个核心组件中,简化了部署过程,提高了系统的可维护性。在中心集线器部署中,GW_CORE 和 IW_FND 组件安装在独立的网关服务器上,而 IW_BEP 组件安装在后端系统中。原创 2024-11-13 19:43:13 · 71 阅读 · 0 评论 -
什么是 SAP Gateway 支持的 Multiple Origin Composition 特性
Multiple Origin Composition,简称 MOC,是 SAP Gateway 中的一个特性,允许将来自多个 SAP 系统或不同实例的数据源通过统一的接口进行组合和展示。换句话说,MOC 使得多个不同来源的 SAP 系统的数据可以通过单个 OData 服务呈现给用户。这种方式极大地减少了客户端与多个服务交互的复杂性,同时提高了跨系统数据访问的效率和一致性。为了更好地理解这个概念,可以将 MOC 想象成一个综合商店,客户可以通过一个地方购买到来自不同供应商的商品。原创 2024-11-13 19:42:10 · 61 阅读 · 0 评论 -
什么是 SAP OData 服务发布时的 Co-deployed only 选项
相比之下,如果使用 Routing-based 模式,他们的请求需要经过一系列复杂的路由操作,而在 Co-deployed only 模式下,这些复杂的步骤被省略了,使得系统更为简洁和高效。然而在 Co-deployment 模式下,由于服务是在本地系统上部署的,系统则可以绕过路由配置,将请求直接传递给本地系统中的 IW_BEP 组件,从而实现数据传输的优化。然而,如果服务涉及多个远程系统的调用,或者需要进行多个源系统的组合(如在一些较为复杂的跨国公司架构中),Routing-based 模式则更为适用。原创 2024-11-13 19:41:08 · 68 阅读 · 0 评论 -
问题解答:关于 SAP OData(Gateway) 部署的几种方式
笔者之前的文章,曾经介绍过 SAP Gateway Framework 源代码实现里,ABAP 类的一些命名空间,比如 /IWFND 和 /IWBEP.26. SAP ABAP OData Gateway 框架里 /IWFND, /IWBEP 这些缩写代表了什么含义?在 SAP Gateway 安装的 NetWeaver 服务器的版本 7.31 及之前更早的版本里,命名空间 /IWFND 代表 SAP Gateway 的两大组件之一:IW_FND. 这个组件需要安装在 Gateway 的 Hub 系统上。原创 2024-11-13 17:30:30 · 157 阅读 · 0 评论 -
到底什么是 SAP Gateway?
例如,在一个涉及敏感客户数据的场景中,SAP Gateway 可以与企业的单点登录系统集成,确保只有通过认证的销售人员可以查看和更新客户数据,这有效地防止了数据泄露的风险。它降低了数据访问的技术门槛,让更多的业务人员可以方便地使用 SAP 系统中的数据,从而提升了企业的整体运作效率。例如,在集成一个产品管理系统时,通过这些注解,外部开发者可以清楚地知道哪些字段是必填的,哪些字段的值需要遵循某种特定的业务规则,这有效地减少了接口使用过程中的错误,也使得开发文档的编写变得更加简单。原创 2024-11-13 16:08:07 · 171 阅读 · 0 评论 -
关于 Cookie 字段在 SAP OData 中的作用思考
通过以上讨论可以看出,Cookie 是一种实现有状态管理的重要工具,尤其是在 OData 这种无状态协议中,通过 Cookie 可以帮助实现用户会话、身份认证、以及购物车管理等功能。尽管 OData 遵循无状态的设计原则,Cookie 通过为每个独立请求附加标识符,实现了一种有状态的用户体验。具体来说,Cookie 可以帮助服务器识别用户是谁,并在用户的多个请求之间保持一致的上下文,这种特性在电子商务、银行系统以及其他需要维护用户状态的应用场景中具有广泛的应用。原创 2024-11-08 19:33:58 · 50 阅读 · 0 评论 -
关于 SAP OData 服务是有状态还是无状态的一些思考
OData 作为一种基于 REST 风格的数据访问协议,遵循无状态设计的原则,每一个请求都是独立的,不会在服务器端保留上下文信息,这使得它更易于扩展和维护。在无状态的 OData 请求中,客户端必须通过请求携带所有必要的信息来完成操作,服务器在处理请求时也不会存储任何有关客户端的状态信息。这种设计符合 HTTP 协议的无状态特性,使得 OData 能够在大规模的分布式系统中表现得更加高效和稳定。原创 2024-11-08 19:33:20 · 93 阅读 · 0 评论 -
SAP Business Accelerator Hub 上 SOAP,OData 和 REST,这三种 API 的联系和区别
SAP Business Accelerator Hub 是一个集中化平台,提供了大量的 API 资源,这些 API 来自多个 SAP 产品,包括 SAP S/4HANA、SAP SuccessFactors、SAP Customer Experience、SAP BTP 以及部分合作伙伴的产品。对于希望将 SAP 产品与第三方系统集成,或开发定制应用程序的开发人员和企业来说,这是一个非常有价值的资源。其官方链接。原创 2024-10-27 11:10:41 · 67 阅读 · 0 评论 -
保姆级教程:ABAP 通过 HTTP POST 调用 OData 服务创建业务数据的具体例子
笔者之前的文章发布之后,有朋友在评论区留言,询问 ABAP 除了 Web Service 之外,是否也支持 HTTP 呢?ABAP 这么强大的语言,支持 HTTP 当然不在话下。网上有很多在 ABAP 系统基于 CL_HTTP_CLIENT 工具类,通过 HTTP 协议和第三方系统交互的代码例子。本文介绍笔者项目中一个实际例子,实现的是在 ABAP 系统 A 通过 HTTP 调用 OData 服务,在 ABAP 系统 B 创建业务数据的需求。下面我们按照这个套路来一步步实现。原创 2024-10-26 23:00:43 · 171 阅读 · 0 评论 -
谈谈 SAP OData 服务实现的 Deep Create / Deep Insert
谈谈 SAP OData 服务实现的 Deep Create / Deep InsertDeep Create 也称 Deep Insert,是 OData 协议 V2 和 V4 里的术语,允许客户端在单次请求中,创建具有复杂关联关系的实体。这种操作在涉及到多个相关对象需要在数据库中以事务性的方式被创建时,显得尤为重要。所谓复杂关联关系,在面向对象软件建模领域,通常分为三种耦合级别从松到紧的类别:Association, Aggregation 和 Composition.原创 2024-10-25 17:34:21 · 158 阅读 · 0 评论 -
9. 添加了 @OData.publish 注解的 SAP CDS view 发布的 OData 服务,为何不支持修改和创建功能?
一个功能完备的 OData 服务实现,一般都支持对其底层数据模型的搜索和增删改查操作。使用 SEGW 开发工具,这些操作都必须手动实现。导入包含 @OData.publish: true 的注解的 CDS View,可以省去搜索和读取操作的实现,但修改和创建操作仍需手动实现。SAP 社区上除了我的博客外,也有其他从业者的分享文章,内容和我的文章大致一致,只是晚于笔者两年后发表。当然,笔者在 SAP 社区上的文章写于 8 年之前了。如果目前大家有更好的解决方案,欢迎分享。原创 2024-10-25 17:19:32 · 134 阅读 · 0 评论 -
8. SAP OData 里通过 Key 值和通过 $filter 操作读取数据有什么区别?
很多刚接触 OData 的朋友们,在使用类型为 Edm.Guid 进行数据读取的时候,都容易犯本文开头知识星球朋友提到的 Invalid key predicate type 错误。方法内部的 Gateway 框架代码,将我们通过 HTTP Url 传入的 GUID, 识别成了普通的 STRING 类型,而不是期望的 Edm.Guid 类型。后缀 set 的字面意思是集合,而这个方法的输出参数,是一个 ABAP 内表,这也说明了 $filter 操作的返回数据,有可能包含多条记录。原创 2024-10-25 15:09:20 · 78 阅读 · 0 评论 -
SAP OData 实用技巧小合集 - 持续更新!
笔者在使用 SAP OData 过程中,积累了很多小技巧。这些技巧如果分别介绍,篇幅都不长,单独写成一篇文章的话,未免太零碎。故全部收录在这一篇合集内。持续更新。原创 2024-10-24 17:16:37 · 186 阅读 · 0 评论 -
如何通过单步调试的方法,找到 SAP Gateway 到底把 Fiori 应用发送的 OData 请求,投递到哪一台 ABAP 后台服务器了?
这是一个 Count 请求,得到服务器响应的数据是 204,这个 204 会以数字的形式,显示在 Fiori Launchpad tile 上。那如果当前 Gateway 系统可以连接到多台 ABAP 后台服务器,比如下图所示,可以连接 SAP S/4HANA,ERP 或者 SAP CRM,我怎么知道 SAP UI5 应用上显示的数据,到底来自哪一台 ABAP 后台服务器呢?,就是上图 ABAP 调试器里断点停留的位置,即 SAP Frontend 服务器,通过 RFC 将 OData 请求投递给。原创 2024-10-18 11:59:10 · 261 阅读 · 0 评论 -
SAP OData metadata.xml 里 EntityType,EntitySet 和 EntityContainer 三个概念之间的区别和联系
在 SAP 的 OData 服务中,是一个关键文件,它定义了服务的数据模型和结构。这个文件中的EntityTypeEntitySet和是三个核心概念,它们之间存在紧密的联系和区别,是理解 SAP OData 服务结构的基础。EntityType。原创 2024-02-12 16:46:22 · 484 阅读 · 0 评论 -
SAP OData 编程指南
OData(Open Data Protocol)协议是一个开放的工业标准,用于定义RESTFul API的设计和使用。我的文章标题前加上SAP的前缀,只是为了表明这篇文章介绍的是Jerry在SAP项目开发中使用到OData的一些心得和经验。目前OData被广泛用于SAP Business Suite和SAP S/4HANA的众多Fiori应用中,以及SAP Customer Engage......原创 2018-06-19 22:52:29 · 19408 阅读 · 3 评论 -
在 Visual Studio Code 创建 SAP UI5 Adaptation Project 时遇到 401 错误该如何分析
其实就是对 SAP 标准的 Freestyle SAP UI5 应用或者 Fiori Elements 应用的一种增强方式,这种方式能够在不修改原始应用的前提下,对标准应用的行为进行微调,或者添加新的功能。通过访问此端点,ABAP 开发者可以获得一个关于服务器上可用开发功能的清晰视图,这包括但不限于程序、函数模块、类、接口、数据字典对象等的创建和修改服务。这个 XML 文档中,不仅有服务的 URI,还有关于服务的更多详细信息,例如每个服务的功能、所需的参数等。,来测试这个 service 是否正常工作。原创 2024-05-10 14:47:49 · 284 阅读 · 0 评论 -
37. 如何在 SEGW 事务码里为 SAP ABAP OData 服务实现 Function Import
模型本身,所以我们将 ls_book_db 变量包含的图书数据(包括 function import 设置的值为 1 的 status 字段),写入到该 function import 实现方法的输出参数。当 STATUS 值为 1 时,代表该图书可以通过在线商城等前端应用访问,当 STATUS 值为 0 时,代表其暂时下架,一般的用户,无法通过在线商城等应用看到这本书。我们假设这样一个业务场景,给图书模型对应的后台数据库表,增添一个 STATUS 字段,为简单起见,其数据类型就为字符型,长度为 1.原创 2024-05-02 20:26:13 · 1264 阅读 · 0 评论 -
6. SAP ABAP OData 服务里需要指定 guid 类型的请求参数时,正确语法是什么?
然后我们就来到了 SAP Gateway 框架实现 /IWCOR/CL_DS_URI 的 SPLIT_QUERY_PARAMETER 方法里,我们在这个方法里再设置一个断点。我们需要查看为什么异常会在这行代码抛出,因此在下图右侧的调用栈里,双击当前调用栈帧的上一层,即编号 14 的那一层。这提示我们,SAP Gateway 框架,试图在 Postman 传递进来的参数值里,使用正则表达式,匹配。单击之后,在行号前会看到一个红色断点的图标,说明断点设置成功,同时屏幕底部状态栏看到。原创 2024-05-02 18:42:47 · 75 阅读 · 0 评论 -
5. 问题解答:在 Postman 里调用 SAP ABAP OData 出错应该如何分析
进入这个方法仔细阅读,发现 SAP ABAP Gateway 框架,在第 62 行,试图解析这个 HTTP 请求里。, 从名称能猜测出这个方法的职责,是解析 Postman 里发送过来的 HTTP 请求的。回答网友疑问:我在 Postman 里消费在 SAP ABAP 系统里,用事务码。, 似乎提示我们,Postman 里发送的 HTTP 请求的 url 不正确。的输入参数的值,但是解析不出来,因此就抛了异常。,调试器里的函数调用栈,给了我们答案。这个异常是在什么样的上下文里被触发的。原创 2024-04-28 13:44:41 · 177 阅读 · 1 评论 -
将本地 SAP UI5 应用,在 Visual Studio Code 里部署到 ABAP 服务器,遇到错误该怎么办
我的课程有学习者遇到下面的问题,向我求助。错误截图:错误日志:yes笔者:Visual Studio Code 的 SAP UX Tools 会将本地 SAP UI5 项目的资源文件,打包成一个压缩包,部署到远端 ABAP 系统上。这条 info 日志意思是 Visual Studio Code 开始创建压缩包了。笔者:压缩包创建成功。笔者:部署过程正式开始。笔者:压缩包的内容通过 HTTP POST 请求发送到 ABAP 服务器。原创 2024-04-22 14:55:23 · 439 阅读 · 0 评论 -
36. 关于 SAP ABAP OData 服务如何实现 Deep Insert 场景 - SAP 应用的标准行为
如果 pu t不可以做,一般 odata 这种怎么做。的 association,将一个 Opportunity 订单的抬头字段,同依附其的 Products 子节点业务数据建立关联。假设 OData 模型有 A B C 三个节点,这些节点具有层级关系,比如 A 是 B 的父节点,B 又是 C 的父节点。层级关系反映了实际的业务场景,比如一个订单可以包含多个行项目,每个行项目又可以包含一个产品信息和一个业务伙伴信息。那么成功创建的 Products 节点的业务数据,在哪个请求里从 ABAP 后台返回的呢?原创 2024-04-01 19:28:59 · 1591 阅读 · 0 评论 -
4. 网友提问:关于 SAP OData 服务支持业务数据批量创建与否的问题
但还有一种情况,就是第三方系统,调用 SAP OData API 创建数据,这种情况下,是否能够通过 OData 的 『@batch』请求同时传入多条记录的业务数据并创建?我还真没有关注过这个需求,我熟知的 Fiori 应用,UI 上都是单条创建订单的抬头数据,行项目数据的话,也是一条一条录入的。朋友,你的意思是,OData 服务,如何实现多条业务记录,在一个 OData 请求里创建?操作,只是具体的业务数据不同,这代表在一个 OData 请求里,同时创建三个。待创建的行项目具体的业务数据,保存在列。原创 2024-02-07 21:41:01 · 166 阅读 · 0 评论 -
授人以渔:从 SAP Gateway 后台错误日志,如何定位和调试抛出错误的准确代码位置
本文解答一个朋友提出的问题:SAP gateway error log 中类似 invalid token detected at position xx 这样的报错,我是知道原因是 filter 后面有语法错误,我是想知道它是在哪段代码中出现的,如何 debug.原创 2024-01-05 16:42:05 · 1273 阅读 · 0 评论 -
关于 SAP Fiori 应用里如何处理名称包含中文的附件文件上传
问我一个问题,关于 ABAP 上传文件到企业微信时,文件名如果包含中文,发送到企业微信群后,中文字符无法正常显示,变成了。从这位朋友提供的 ABAP 代码可以看出,包含中文字符的文件名,在 ABAP 代码准备发送到企业微信时,没有进行编码处理。回到题目开头朋友提到的问题,在 ABAP 代码里,可以在发送文件之前,将包含中文字符的文件名,通过 ABAP 工具方法。我们可以看看 SAP 标准的 Fiori 应用,是如何处理文件名包含中文字符的附件上传的。,将编码后的值,重新解码,得到原始值。原创 2024-01-01 13:39:09 · 629 阅读 · 0 评论 -
关于 OData 2.0 和 OData 4.0 协议里对于 SAP 自定义注解(Annotations) 处理的区别讲解
OData 4.0 的注解结构更加灵活和表达力更强,它引入了通用的 `` 元素,并使用 `Term` 属性来指定注解的类型,使得注解的定义更加清晰和模块化。这种改变提高了 OData 协议的扩展性和可读性,也使得开发者更容易理解和维护OData服务。虽然这两个版本的 Annotations 都可以实现相同的功能,但 OData 4.0的结构更加规范、一致,也更符合现代标准的设计理念。原创 2023-11-27 16:38:13 · 1014 阅读 · 0 评论