OData
文章平均质量分 74
OData 在 SAP 产品开发中的应用
汪子熙
Jerry Wang,2007 年从电子科技大学计算机专业硕士毕业后加入 SAP 成都研究院工作至今。Jerry 是 SAP 社区导师,SAP 中国技术大使。在长达16年的 SAP 产品开发生涯里,Jerry 曾经先后参与 SAP Business ByDesign,SAP CRM,SAP Cloud for Customer,SAP S/4HANA,SAP Commerce Cloud(电商云)等标准产品的研发工作。
Jerry 工作中使用 ABAP, Java, JavaScript 和 TypeScript 进行开发, 对包括 SAP UI5 在内的多款 SAP 自研框架有深入的研究。
展开
-
什么是 OData 的 Navigation Property
通过合理利用 Navigation Property,SAP Fiori Elements 应用不仅能够提供丰富且互联的数据展示,还能在保证应用性能的前提下,增强数据操作的灵活性和效率。因此,在设计和实现 OData 服务时,合理规划 Navigation Property 的使用,是提升应用性能和用户体验的关键。在 SAP Fiori Elements 应用中,利用 Navigation Property,开发者可以轻松地在不同视图之间创建数据的关联展示,比如在一个员工详情页中,通过。原创 2024-02-21 20:09:15 · 818 阅读 · 0 评论 -
关于 SAP OData Annotation Provider Class 以及 metadata 模型注册的事务码
同时,我们还可以利用它来查看和修改我们的注释模型的结构和内容。我们首先可以通过 APC 从数据源获取这个字段的注释信息,然后在事务码 /IWBEP/REG_VOCAN 中创建一个注释模型,把这个字段的注释信息添加到这个模型中。一方面,我们可以在 APC 中实现注释信息的动态获取,另一方面,我们可以使用事务码 /IWBEP/REG_VOCAN来编辑和查看静态的注释模型。的结合使用,开发人员可以灵活地定制OData服务的元数据,使其更符合特定业务需求,提供更好的服务描述和更好的用户体验。原创 2024-01-02 19:39:02 · 861 阅读 · 0 评论 -
关于 SAP Fiori 应用附件可编辑性的问题讨论
这个采购请求释放之后,产生一个审批请求,发送到老板的邮箱去,采购请求的附件会自动被复制到审批请求去,前者在审批请求里无法被编辑。我曾经参加过 SAP CRM Fiori 应用的开发,里面的附件,全部是通过用户在 Fiori UI 选择本地文件之后,通过调用 OData 来触发后台的附件创建 API 来完成的。回到问题本身,Fiori 应用里的附件,要么是用户手动上传的,要么是在用户执行了一些业务逻辑的过程中,由某个操作间接触发的。就截图而言,红色高亮框里的附件右侧没有删除按钮,说明这是系统有意为之。原创 2023-12-29 19:43:39 · 354 阅读 · 0 评论 -
SAP 标准 OData 服务 CATALOGSERVICE;v=2 的作用介绍
v=2是 SAP NetWeaver Gateway 提供的标准 OData 服务,用于管理和展示服务目录。通过该服务,用户可以方便地获取已注册服务的基本信息、元数据和相关文档链接,从而更好地了解和使用这些服务。这为企业提供了一种统一的方式来管理和浏览其 OData 服务,提高了服务的可发现性和可用性。在实际应用中,开发人员和系统管理员可以利用这些功能优化其对服务的管理和维护工作。原创 2023-12-01 13:17:10 · 388 阅读 · 0 评论 -
关于 SAP 标准 OData 服务 /sap/bc/adt/ato/settings 的作用
是 SAP 中一个标准的 OData 服务,用于处理与 ABAP Development Tools (ADT) 相关的设置。ADT 提供了开发、维护和管理 ABAP 程序的工具,而这个 OData 服务允许通过 HTTP 协议访问 ADT 设置的相关信息。是一个强大的 OData 服务,为开发者提供了对 ABAP 开发环境设置的灵活访问。通过合理使用这个服务,开发者可以更好地定制他们的开发环境,提高工作效率,并确保符合团队的开发标准。同时,注意确保安全性和性能是使用这个服务时需要重点考虑的方面。原创 2023-11-30 13:44:37 · 490 阅读 · 0 评论 -
OData 4.0 三种标准词汇的使用场合介绍
这三种 Vocabulary 在不同的场景下都有其独特的用途,使得 OData 服务能够更好的满足各种各样的需求。总的来说,OData 4.0 的 Vocabulary 提供了一种强大的元数据扩展机制,使得我们可以为 OData 服务添加更丰富的语义信息。上面的示例使用了 Measure 词汇表中的三个术语、Core 词汇表中的一个术语以及三个标准词汇表中不存在的概念的 SAP 特定术语。这个注解,表示这个属性是计算出来的,也就是说,它是只读的。这个注解,表示我们的服务不支持过滤操作。原创 2023-11-28 12:45:33 · 426 阅读 · 0 评论 -
SAP CRM Fiori 应用后台 OData 服务性能优化的一些思路
主要的瓶颈就在取attachment header的cl_crm_documents=>get_info, 这个方法只支持取单个task的attachment, 0.26秒。CRM-BF-COM 这个component是我们own的,我2014年的时候做过好几个correction,所以对里面的代码比较熟,只需要接下来debug回忆一下就ok。但是这个class里也没有提供任何批量读的API,所有方法的input全是is,我需要的是it。他们的思路和我差不多,逻辑全部是从标准的FM里摘出来的。原创 2023-06-28 20:34:45 · 367 阅读 · 0 评论 -
SAP ABAP gateway 系统调用后台系统时选择 RFC 的决定逻辑
Created by Jerry Wang on Oct 21, 2014RFC destination是由destination finder决定的:destination_finder是一个singleton:通过system alias获得RFC destination name:[外链图片转存失败(img-v3xdqvYQ-1568687817531)(https://user...原创 2019-09-17 10:38:24 · 381 阅读 · 0 评论 -
SAP Fiori gateway 系统调用后台系统时选择 RFC 的决定逻辑
RFC destination是由destination finder决定的:![clipboard1](https://user-images.githubusercontent.com/5669954/57584228-60c31b00-750b-11e9-9c17-cdfd0abc6f16.png)destination_finder是一个singleton:![...原创 2019-05-12 23:15:24 · 426 阅读 · 0 评论 -
介绍一个提供全球新冠肺炎确诊,死亡和治愈人数的网站,提供 csv 格式下载
我有一个需求,每次向SAP Cloud for Customer发送HTTP get请求时,需要自动填充自定义头部字段的值为当年时间戳,这个功能可以通过在http头部定义名为date的变量,同时在Postman的Pre-request script里,使用如下的JavaScript代码:var moment = require('moment');var deliveryDate = m...原创 2020-03-29 21:50:57 · 2264 阅读 · 0 评论 -
Data source is not a transactional CDS view [OData Exposure]
参考这篇博客,consumption view 是在 composite view 之上创建的,这意味着消费视图不与 DDIC 表/视图或基本视图交互。消费视图写在提供事实数据和多维数据集数据的复合视图之上。此视图用于将数据公开给不同的分析工具(例如 HTML、SAP BusinessObjects、Analysis for Excel、SAP Lumira 等),这有助于创建报告和不同的可视化来呈现业务数据。原创 2023-04-20 10:51:22 · 307 阅读 · 0 评论 -
关于 SAP ABAP OData 服务响应里的 d,results 和 __metadata 这几个字段的作用
在测试过程中发现两者使用的json格式不一样,在ODATA返回的json格式中多了一些内容,具体可以看附件。以上解答了截图中黄色的 __metadata 部分,回到这位朋友的问题,真实场景下的 OData 还有另一部分较之 mockdata 多出来的 JSON 数据节点,即下图绿色的 d 和 results 节点。在使用 ABAP 实现 SAP OData 服务时,返回的 JSON 数据中包含 __metadata 节点,这个节点的作用是提供实体的元数据信息,方便客户端应用程序使用和处理返回的数据。原创 2023-04-17 23:20:48 · 273 阅读 · 0 评论 -
如何找出 SAP Fiori Launchpad 里点击 tile 之后,读取业务数据调用的是哪个 SAP 后台系统的 OData 服务试读版
当用户访问 Fiori Launchpad 代表 SAP UI5 应用的一个个 tile 之后,实际打开的是每个 tile 对应的 SAP UI5 应用,后者通过 OData 服务,从 SAP 后台服务器(Backend Server) 读取业务数据,执行业务逻辑。,里面介绍了 SAP Fiori 应用部署的一种典型方式:Fiori 应用的载体即 SAP UI5 应用,部署在 Gateway 系统上,也称 Frontend Server(前台服务器),如下图红色方框高亮所示。笔者曾经写过一篇文章。原创 2023-04-02 14:11:44 · 139 阅读 · 1 评论 -
到 2023年3月17日为止 Jerry 尚未回答或者写作的问题文章列表
很多朋友订阅了本人编写的 SAP UI5 和 ABAP 专栏,以及加入了我的知识星球,提出的部分问题,我还没有回答,这里把这些问题罗列出来,作为我的任务列表。知识星球里朋友提问:SAP UI5 select 控件下拉框是最多显示100条数据吗,我在sap取出了700多条数据,但是显示在前台的只有正好100条?Jerry:近期会写一篇文章放到我的 SAP UI5 开发教程里。Jerry:近期会写一篇文章放到我的 SAP UI5 开发教程里。Jerry:近期会写一篇文章放到我的 SAP UI5 开发教程里。原创 2023-03-19 09:58:12 · 111 阅读 · 0 评论 -
使用 SAP UI5 OData API 读取单条 order 数据的办法
【代码】使用 SAP UI5 OData API 读取单条 order 数据的办法。原创 2023-03-03 11:05:59 · 213 阅读 · 0 评论 -
如何在postman里为类型为Edm.DateTime的OData参数指定正确格式的值
我在调用SAP C4C的OData服务时,发现很多EntityType的字段类型都为Edm.DateTime.比如SAP C4C Lead OData服务里Lead entity Type的StartDate字段和EndDate字段。如果我想用Postman调用OData服务创建Lead,像这种类型的参数,应该如何维护输入值?如果请求正文的格式是json,则使用如下的格式维护类型为Edm....原创 2020-03-21 20:43:48 · 1197 阅读 · 0 评论 -
SAP OData 开发实战教程:从入门到提高
本教程根据笔者在 SAP 研究院工作多年的实战经验,计划通过篇以上的文章篇幅,深入介绍 SAP 三大主流的 OData 开发技术:RAP - Restful ABAP Programming 模型CAP - Cloud Application Programming 模型希望这套教程对使用 ABAP,Java 和 Node.js 开发 OData 服务的从业人员的入门和提高都能有所帮助。点击文末获得本教程。笔者之前的文章。原创 2023-01-30 09:23:21 · 1185 阅读 · 0 评论 -
SAP ABAP OData 服务的分页加载数据集的实现(Paging)试读版
Jerry Wang,2007 年从电子科技大学计算机专业硕士毕业后加入 SAP 成都研究院工作至今。Jerry 是 SAP 社区导师,SAP 中国技术大使。在长达 15 年的 SAP 标准产品开发生涯里,Jerry 曾经先后参与 SAP Business ByDesign, SAP CRM, SAP Cloud for Customer, SAP S/4HANA, SAP Commerce Cloud(电商云)等标准产品的研发工作。...原创 2022-08-06 11:30:23 · 392 阅读 · 0 评论 -
几种 SAP ABAP OData 服务的性能评估和测试工具介绍试读版
Jerry Wang,2007 年从电子科技大学计算机专业硕士毕业后加入 SAP 成都研究院工作至今。Jerry 是 SAP 社区导师,SAP 中国技术大使。在长达 15 年的 SAP 标准产品开发生涯里,Jerry 曾经先后参与 SAP Business ByDesign, SAP CRM, SAP Cloud for Customer, SAP S/4HANA, SAP Commerce Cloud(电商云)等标准产品的研发工作。...原创 2022-08-06 16:28:26 · 357 阅读 · 0 评论 -
如何使用 SEGW 的 redefine 功能对 SAP 标准 OData 服务进行扩展试读版
Jerry Wang,2007 年从电子科技大学计算机专业硕士毕业后加入 SAP 成都研究院工作至今。Jerry 是 SAP 社区导师,SAP 中国技术大使。在长达 15 年的 SAP 标准产品开发生涯里,Jerry 曾经先后参与 SAP Business ByDesign, SAP CRM, SAP Cloud for Customer, SAP S/4HANA, SAP Commerce Cloud(电商云)等标准产品的研发工作。原创 2023-01-01 22:53:35 · 181 阅读 · 0 评论 -
如何通过 ABAP 代码给 SAP OData 元数据增添注解试读版
我们先看下效果,在 MPC_EXT 类的 DEFINE 方法里编写 ABAP 代码之后,用 Postman 使用 url 访问 OData metadata,在返回的数据里,能看到我们用 ABAP 代码添加的自定义注解。你好,请问可以不可以在odata里面通过什么设置,从而自动给metadata.xml中加上注解,实现value help的功能,还是说每次需要在metadata.xml中修改?你好,请教一个问题,请问如何在odata里面通过annotations添加一个自定义注解?是详细的实现步骤讲解。原创 2022-12-22 18:32:37 · 181 阅读 · 1 评论 -
使用 ABAP 代码给 OData 元数据增添注解的一些例子
虽然使用 SAP NetWeaver 750 及更高版本,可以在 CDS DDL 源代码中添加注解,然而 SAP NetWeaver 740 没有此类支持。本文涉及到的场景用例是希望基于 SAP NetWeaver 740 构建 OData 服务的客户和合作伙伴,并且该系统不支持 CDS 视图中的注释。要在 740 后台系统添加对注释的支持,可以使用基于代码的实现。)的服务实施,则他们可以利用 CDS 视图作为 SAP NetWeaver 740 中已有的 OData 服务的数据源。原创 2022-12-22 13:10:59 · 717 阅读 · 0 评论 -
SAP OData 服务关于本地文件作为附件上传的一些错误消息
生成项目后,Service Builder 会生成注释提供程序类 (APC,是 Annotation Provider Class 的缩写) 的类。关于输入参数 iv_slug 为空的问题:https://answers.sap.com/questions/12359446/uploadcollection-parameter-slug-does-not-work-anym.html。方法 DEFINE_VOCAB_ANNOTATIONS 将在 APC 中创建以维护基于词汇表的注释。原创 2022-12-22 11:58:34 · 757 阅读 · 0 评论 -
SAP OData 框架里的缓存(Cache)设计专题讲座试读版
Jerry Wang,2007 年从电子科技大学计算机专业硕士毕业后加入 SAP 成都研究院工作至今。Jerry 是 SAP 社区导师,SAP 中国技术大使。在长达 15 年的 SAP 标准产品开发生涯里,Jerry 曾经先后参与 SAP Business ByDesign, SAP CRM, SAP Cloud for Customer, SAP S/4HANA, SAP Commerce Cloud(电商云)等标准产品的研发工作。原创 2022-12-18 20:24:16 · 139 阅读 · 0 评论 -
SAP Gateway Foundation 里的 batch 操作
SAP Gateway Foundation (SAP_GWFND) 是一个在 SAP NetWeaver 中可用的软件组件。SAP Gateway Foundation 提供开发和生成工具来为各种客户端开发工具创建 OData 服务。 简而言之,它在应用程序或 SAP Business Suite 数据与目标客户、平台和编程框架之间建立连接。SAP Gateway Foundation 提供以下功能:将桌面程序与 SAP 系统集成的 SAP 解决方案的运行时环境运行时特性,包括用户界面、安全数据访问、数据原创 2022-12-18 09:27:28 · 431 阅读 · 0 评论 -
SAP Gateway Foundation Client Proxy 的使用方法
根据实际使用场景,SAP OData 客户端代理配置有多种消费类型和 OData 版本。OData Client Proxy是ABAP中OData服务消费中客户端(服务的消费者)和服务实现(数据提供)之间的接口。这使 ABAP 开发人员能够创建 OData 客户端编码以在其 ABAP 编码中运行 OData 请求。OData 客户端代理可用于不同的配置,具体取决于当前用例。OData 客户端代理可以是本地的或远程的。原创 2022-12-17 22:50:27 · 477 阅读 · 0 评论 -
SAP Gateway 里的 REST 概念
对于 SAP 之外的消费,不需要 SAP 结构知识,并且它支持对象导航。OData 是一种基于 REST 的 Web 协议,用于查询和更新数据,应用和构建 Web 技术,例如 HTTP、Atom 发布协议 (AtomPub) 和 RSS(真正简单的聚合),以提供对来自各种应用程序的信息的访问。通过将 SAP Business Suite 功能公开为基于 REST 的 OData(开放数据协议)服务,SAP Gateway 使 SAP 应用程序能够以易于理解和使用的方式与各种设备、技术和平台共享数据。原创 2022-12-17 22:48:15 · 680 阅读 · 0 评论 -
SAP Gateway 上的 Metadata Cache
SAP Gateway Foundation 缓存服务的元数据信息以显着提高性能。在 Hub 系统上缓存了元数据模型、注释模型以及服务的注释文本。在后端仅缓存元数据模型和注释模型。后端不需要注释文本来进行服务实例化,因此不会在此处缓存。共部署场景是指 hub 和 backend 是一个系统。因此,缓存只需为 hub 和每个后端系统执行一次。原创 2022-12-17 22:31:19 · 679 阅读 · 0 评论 -
SAP Gateway 在开发系统和生产系统上的缓存控制
SAP Gateway 元数据缓存可以启用和禁用,并且在非生产系统中默认停用。原创 2022-12-17 22:27:48 · 858 阅读 · 0 评论 -
SAP Gateway 后台模型的缓存设置
中心枢纽部署(Central hub deployment):SAP Gateway 的核心软件组件和任何可选组件都安装在独立的主机中,与 SAP Business Suite 系统的主机分开。嵌入式部署(Embedded deployment):SAP Gateway 的核心软件组件和任何可选组件安装在与 SAP Business Suite 系统相同的主机上。除了使用标准的身份验证和授权机制外,SAP Gateway 还针对跨站点脚本 (XSS) 和请求伪造 (CSRF) 攻击提供额外级别的保护。原创 2022-12-17 22:25:29 · 745 阅读 · 0 评论 -
关于 SAP Gateway 响应头部 Last Modified 字段的赋值逻辑
导出参数 ES_RESPONSE_CONTEXT-IS_NOT_MODIFIED 仅在应用程序数据的 LAST_MODIFIED 早于 HTTP 请求标头 if-modified-since 中的时间戳的情况下才可以设置为 ABAP_TRUE。在这种情况下,相关的申请数据是最新的,根本不需要发送。请注意,如果导出参数 ES_RESPONSE_CONTEXT-MAX_AGE 设置为一个值,则还必须将导出参数 ES_RESPONSE_CONTEXT-DO_NOT_CACHE_ON_CLIENT 设置为。原创 2022-12-17 21:12:15 · 607 阅读 · 0 评论 -
SAP OData 框架处理 Metadata 元数据请求的实现细节,前后端组件部署在同一台物理服务器试读版
我的知识星球 里有一个朋友提出了 SAP OData 服务 metadata 缓存方面的疑问,本文就来详细说一说:SAP Fiori 技术架构存在 ABAP Frontend 服务器(有时也称为 Gateway 服务器,前台服务器) 和 ABAP Backend(后台)服务器两个角色,其中 Frontend 服务器上主要安装 SAP Gateway 组件(实现类和数据库表的命名空间为 ) 和 SAP UI5 应用部署到 ABAP 系统后生成的 BSP 应用,后台服务器主要包含了 OData 服务的 ABAP原创 2022-12-04 10:13:52 · 373 阅读 · 0 评论 -
SAP OData metadata 定义中,entity type key 的作用是什么
什么是 OData entity type 的 key?最权威的定义,来自 OData 官网:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IjW32oCO-1636110441270)(https://upload-images.jianshu.io/upload_images/2085791-0eaa5e65de112a59.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]OData EDM 模型的核心原创 2021-11-05 19:36:22 · 452 阅读 · 1 评论 -
如何给在 SAP Business Application Studio 里开发的 OData 服务准备测试数据试读版
换言之,大家已经在 SAP Business Technology Platform 上的 Business Application Studio 里,创建好了 Dev Space,并且拥有一个能够正常浏览元数据(metadata) 的 OData 服务了,如。Entity 准备测试数据,csv 文件的名称可不是随随便便起的,而是按照。在开始本步骤的学习之前,请大家务必完成前一步骤。在 CAP 工程的 db 文件夹下,新建一个。文件夹,然后新建一个 csv 文件,取名。余下详细的操作步骤,参看这篇。原创 2022-11-27 13:40:00 · 298 阅读 · 1 评论 -
SAP Business Application Studio 里创建一个基于 CAP 模型的最简单的 OData 服务试读版
基于 CAP 开发 SAP OData,使用的工具不再像本教程之前介绍的那样在 SAP ABAP SEGW 事物码里进行,而是使用 SAP Business Application Studio,它是 SAP 业务技术平台 (SAP BTP) 上以服务方式提供的一个浏览器里运行的开发工具,为 SAP Intelligent Enterprise 即智慧企业业务应用程序高效开发量身定制了一套现代开发环境。所以我正好借此机会,开启本教程 CAP 流派开发 SAP OData 服务的第一篇文章。原创 2022-11-27 10:00:57 · 320 阅读 · 0 评论 -
windows 环境下使用 Node.js 访问 SAP OData 遇到 unable to get local issuer certificate
我有一个 OData 服务,部署在 SAP S/4HANA 服务器上,浏览器里通过如下 url,可以正常访问到其元数据:使用 node 执行上面的代码,遇到如下错误消息:(Use在应用程序生成过程中,当用户连接的系统使用 SSL 支持安全 HTTPS 流量时,可能会出现无效安全证书错误。在某些情况下,证书是使用用户操作系统未知的本地证书颁发机构生成的。如果发生这种情况,应用程序生成器会拒绝连接请求并报告错误。原创 2022-10-08 19:34:47 · 897 阅读 · 3 评论 -
如何给 SAP ABAP SEGW 开发的 OData 服务添加 Access-Control-Allow-Origin 响应头试读版
Jerry Wang,2007 年从电子科技大学计算机专业硕士毕业后加入 SAP 成都研究院工作至今。Jerry 是 SAP 社区导师,SAP 中国技术大使。在长达 15 年的 SAP 标准产品开发生涯里,Jerry 曾经先后参与 SAP Business ByDesign, SAP CRM, SAP Cloud for Customer, SAP S/4HANA, SAP Commerce Cloud(电商云)等标准产品的研发工作。原创 2022-10-06 22:00:23 · 643 阅读 · 0 评论 -
SAP ABAP Gateway Client 的 ABAP 实现,重用 HTTP Connection
REST 的主要目标包括组件交互的可扩展性、接口的通用性、组件的独立部署、减少延迟、加强安全性和封装遗留系统的中间组件。简而言之,Netweaver Gateway 可以看成现有 SAP ERP 系统的一组 ABAP 附加组件,可以以简单、以人为本的方式轻松访问业务信息,并将数据消费障碍降低到无需事先了解 SAP 系统的内部工作的前提。SAP NetWeaver Gateway 是一种提供了根据市场标准将设备、环境和平台连接到 SAP 软件的简单方法的技术平台。原创 2022-09-20 16:03:38 · 636 阅读 · 0 评论 -
SAP ABAP OData 服务的 $count 操作实现试读版
Jerry Wang,2007 年从电子科技大学计算机专业硕士毕业后加入 SAP 成都研究院工作至今。Jerry 是 SAP 社区导师,SAP 中国技术大使。在长达 15 年的 SAP 标准产品开发生涯里,Jerry 曾经先后参与 SAP Business ByDesign, SAP CRM, SAP Cloud for Customer, SAP S/4HANA, SAP Commerce Cloud(电商云)等标准产品的研发工作。原创 2022-09-18 19:11:57 · 206 阅读 · 0 评论 -
如何找到 SAP Fiori OData 服务实现的具体 backend 后台系统
需求:找出返回lead count 204的后台系统名称:1). 在opu节点的handler class 的方法HANDLE_REQUEST设置断点:2). 前台launch 应用程序,断点触发,创建一个CALL FUNCTION DESTINATION的动态断点:3). F8,断点自动触发:通过RFC 即可判断出后台系统名称:要获取更多Jerry的原创文章,请关注公众号...原创 2019-08-26 18:28:47 · 420 阅读 · 0 评论