这是 Jerry 2021 年的第 59 篇文章,也是汪子熙公众号总共第 336 篇原创文章。

Jerry 之前曾经给大家分享过,如何使用各种工具和编程语言,消费 SAP API Business Hub 上罗列的 API.


在 SAP API Business Hub 网站上,SAP 这些 API,分为 SOAP,OData 和 REST 三类。


Jerry 的文章 SAP Cloud for Customer 如何直接消费 S/4HANA API 介绍了如何在 SAP Cloud for Customer 里通过 Restful API 工具库,消费 SAP S/4HANA 暴露的 Restful API:

而下面这几篇文章,介绍了 SAP OData API 的开发与消费:

  • SAP OData 编程指南

  • 在 SAP BTP CloudFoundry 环境下消费 ABAP On-Premise OData API

  • 使用 SAP Cloud Application Programming 模型开发 OData API 的一个实际例子

  • SAP C/4HANA Sales Cloud 使用 OData 服务和第三方系统集成的一个具体例子

OData 协议基于 HTTP,在使用 OData 服务进行业务数据的创建或者修改时,需要开发人员在 HTTP 层面操作 POST 请求的 body 内容,步骤繁琐且容易出错。

比如下图是 Jerry 2019 年一个项目中使用 Java 消费 SAP C4C OData 服务创建销售订单的测试代码片段,其中第88行变量 body,包含的就是手动拼接 HTTP Post 请求的负载内容,代码可读性很差且不易维护。


为了避免这些缺点,提高开发人员使用 SAP S/4HANA OData 进行集成的开发效率,SAP 发布了 SAP S/4HANA Cloud SDK.

借助 SAP S/4HANA Cloud SDK,开发人员无需了解 S/4HANA OData 服务的设计细节,可以采用类似自然语言的代码风格,调用 S/4HANA OData 服务,实现数据的增删改查。

下图的例子使用 S/4HANA Cloud SDK 读取BusinessPartnerCategory 字段值为 2 的前20条 BusinessPartner 数据,并且只返回这些数据的 Partner Name, FullName 和 Customer 等字段。代码采用 Declarative 即声明式的方式编写,可读性大大优于直接操作 HTTP Post 负载的做法。

关于 SAP Cloud SDK 的更多细节,请参考我的文章:SAP S/4HANA Cloud SDK 入门介绍

而另一大类 SAP SOAP API 的消费方式,请参考 Jerry 之前的文章:如何在 SAP BTP 平台 ABAP 编程环境里消费基于 SOAP 的 Web Service.

除了 SAP API Business Hub 上提到的这三种 API 之外,Jerry 之前的文章:在 SAP BTP 上体验 SAP HANA Cloud 试用版本,还提到过使用 HANA Client 工具库,直接把待执行的 SQL 语句发送给 SAP HANA Cloud 实例;后者执行完毕后,将结果返回给 HANA Client:

这种方式类似 ADBC 和 JDBC,细节可以参考 Jerry 这篇文章:在 SAP BTP 上体验 SAP HANA Cloud 试用版本


本文介绍一种类似的数据消费方式:Open Database Connectivity 即 ODBC,开放数据库互连。

ODBC 提供了一种标准的 API 方法来访问数据库管理系统即 DBMS. ODBC API 利用 SQL 来完成绝大多数数据库操作。

下面我们通过一个实际的例子来了解 ODBC 的用法。这个例子的场景是,在 SAP BTP 平台 ABAP 运行环境里,创建数据库表和对应的 CDS view,然后使用本地的 Excel 文件,通过 ODBC 访问 CDS view 的内容。

首先在 SAP BTP ABAP 运行环境里创建两个简单的数据库表,存放订单抬头和行项目信息:


插入一些测试数据:

然后创建对应的 CDS view:

下面我们需要通过 Service Definition 将这两个 CDS view 的数据暴露给外部消费者。

Jerry 之前的文章 30分钟用 Restful ABAP Programming 模型开发一个支持增删改查的 Fiori应用,曾经介绍过如何基于 RAP 模型,快速基于 CDS view 创建出一个 Fiori 应用出来。

  • Service Definition
  • Service Binding
  • Communication Scenario
  • Communication Arrangement

而通过 ODBC 将 CDS view 暴露给外部消费者,仍然需要按照上述顺序创建对应的开发对象。

首先创建 Service Definition,将之前创建的两个 CDS view 通过关键字 expose 暴露出去,通过 as 关键字设置别名为 Orders 和 OrderItems:

基于这个 Service Definition 创建一个新的 Service Binding:

Binding 类型,从下拉菜单里选择 SQL1,以支持 ODBC:

Service Binding 的名称起名为 ZORDERS,在文章最后通过 Excel 消费这个 Service 时,能在 Excel 里看到同名的节点,其下包含了通过 Service Definition 暴露出来的 OrderItems 和 Orders 两个视图:

创建新的 Communication Scenario:

在该 Scenario 的 Inbound 标签页里,分配标准的 Inbound Service S_PRIVILEGED_SQL1,用于支持对 CDS view 的 SQL 访问操作。

切换到 Authorization 标签页,添加新的 Authorization 对象 S_SQL_VIEW,并分别维护其三个字段的值:

  • SQL_SCHEMA: ZORDERS,即我们要授予访问权限的 Service Binding 名称。
  • SQL_VIEW: *. 这个值意味着允许访问 Service Binding ZORDERS 关联的 Service Definition 中,通过 expose 关键字暴露的所有 CDS view.
  • SQL_VIEWOP: SELECT,只读访问。

点击 Publish Locally:

创建一个新的 Communication System,取名 SQL_ACCESS:

给其分配一个新建的 Communication User. 稍后我们在 Excel 里使用 ODBC 读取 CDS View 数据时,会要求输入该用户的访问密码。

最后,创建 Communication Arrangement,把生成的 Service URL 即下图黄色高亮区域的字段抄下来,后续创建 Data Source 时,会填写该值。

在本地安装 ABAP ODBC Driver,访问 SAP Support Portal,输入关键字 ODBC DRIVER FOR ABAP 进行搜索:

https://launchpad.support.sap.com/#/softwarecenter

根据操作系统的类型下载对应版本的驱动:

同时下载 SAPCRYPTOLIB:

安装完下载的驱动后,启动操作系统的 ODBC Data Source Administrator 应用,添加一条新的 User Data Source Name(简称为 User DSN):

ABAP ODBC 驱动安装成功后,在新建向导里能看到新的驱动类型:ODBC driver for ABAP.

在 DSN 创建向导中维护 Data Source 的明细。其中 Hostname 字段,来自 Communication Arrangement 的 Service Url 字段值。Crypto Library 字段,为前文从 SAP Support Portal 下载的 SAPCRYPTOLIB 解压到本地后的绝对路径:

Data Source 创建好之后,新建 Excel 文件,选择 From ODBC 进行导入:

选择刚刚建好的名为 Jerry-ABAP 的 Data Source,输入 Communication Scenario 里维护的用户名和密码:

点击 Connect,即可预览 SAP BTP ABAP 环境里 Service Definition 暴露出来的 CDS view 的数据:

点击 Load 按钮,将这些数据导入到 Excel 中。

在 Advanced options 里,我们可以自由编写 SQL 语句,将 Excel 当成一个简单的 SQL 控制台使用:

上图编写的 SQL 语句,将订单行项目的数量进行求和,并显示结果到 Excel 里:

相信通过本文的例子,大家能对如何通过 ODBC 消费 SAP BTP 平台 ABAP 环境的 CDS view 数据有了一个直观的认识,感谢阅读。

更多阅读

  • SAP Cloud for Customer 如何直接消费S/4HANA API

  • SAP OData 编程指南

  • 在 SAP BTP CloudFoundry 环境下消费 ABAP On-Premise OData API

  • 使用 SAP Cloud Application Programming 模型开发 OData API 的一个实际例子

  • SAP C/4HANA Sales Cloud使用 OData 服务和第三方系统集成的一个具体例子

  • SAP S/4HANA Cloud SDK 入门介绍

  • 如何在 SAP BTP 平台 ABAP 编程环境里消费基于 SOAP 的 Web Service

  • 在 SAP BTP 上体验 SAP HANA Cloud 试用版本

  • 30分钟用 Restful ABAP Programming 模型开发一个支持增删改查的 Fiori应用

更多Jerry的原创文章,尽在:“汪子熙”:

在 Excel 里使用 ODBC 读取 SAP BTP 平台上 CDS view 的数据相关推荐

  1. SAP云平台上的Low Code Development(低代码开发)解决方案

    Jerry之前曾经陆续写过一些文章,介绍SAP各种开发工具和开发平台: 那些年我用过的SAP IDE SAP智能机器人流程自动化解决方案 如何使用SAP Intelligent Robotic Pro ...

  2. 使用SAP iRPA Studio创建的本地项目,如何部署到SAP云平台上?

    本文是2020年第15篇原创文章,也是汪子熙公众号总共第198篇原创文章. 最近在微软Bing搜索里输入China,就会出现这样的提示... 没太多可说的,唯愿天佑中华. 以前看威尔-史密斯主演的&l ...

  3. 使用SAP iRPA创建一个最简单的hello world项目并部署到SAP云平台上

    如何进入SAP iRPA控制台? 在SAP云平台的subaccount里,点击Subscriptions,找到SAP intelligent robotic Process Automation: 进 ...

  4. SAP Kyma和SAP云平台上的Service instance

    两种instance都需要绑定到具体的应用或者函数才能发挥作用. SAP Kyma 这个GATEWAY_URL的值可以在Kyma Lambda函数实现里通过环境变量的方式获得. 在JavaScript ...

  5. 使用Eclipse连接SAP云平台上的HANA数据库实例

    SAP云平台(Cloud Platform)上的HANA数据库实例有两种方式访问: 1. 通过SAP云平台的基于网页版的Development Tool:SAP HANA Web-Based Deve ...

  6. SAP云平台上Redis dashboard提供的功能一览

    点Open Dashboard按钮打开看板: 会弹出一个让用户授权的页面: AP Cloud Platform Application Authorization service-fabrik-red ...

  7. 在 Excel 内使用 ODBC 消费 SAP ABAP CDS view

    Consuming CDS View Entities Using ODBC-Based Client Tools 本文介绍通过基于 ODBC(Open Database Connectivity) ...

  8. 概述SAP云平台上的ABAP开发环境

    1. 概述 ABAP是SAP构建on-premise ERP产品的基础,现如今,在SAP Cloud Platform上已经支持的ABAP的开发环境,这也让世界各地的开发人员,使用ABAP语言开发.构 ...

  9. SAP云平台上的ABAP编程环境里如何消费第三方服务

    在ABAP On-Premises环境下,使用ABAP编程消费第三方服务,相信很多ABAP顾问都已经非常熟悉了,无非就是使用CL_HTTP_CLIENT或者CL_REST_HTTP_CLIENT来发送 ...

最新文章

  1. SAP QM 质量检验特殊业务需求之方案漫谈
  2. 【Machine learning】余弦相似度
  3. 面试前你必须知道的三个排序算法
  4. 依然持有比特币,Roger Ver谈投资心经
  5. 计算机视觉算法与应用清华大学,计算机视觉-清华大学.ppt
  6. 【web安全】Spring boot heapdump获取敏感信息
  7. 用Visual Studio Code Debug世界上最好的语言(Mac篇)
  8. 递归算法及其时间复杂度分析
  9. 我的梦幻动画实习工作总结
  10. 2017.9.13 序列统计 思考记录
  11. 虚拟地址空间及内存管理方式
  12. magic winmail邮件服务器,使用magic winmail server轻松架设邮件服务器(三)_邮件服务器...
  13. 学习JavaScript数据结构与算法-----pdf 分享
  14. sql----DML ,TCL
  15. 基于SSM的智慧房屋租赁系统
  16. 5款好看的WordPress博客主题下载
  17. Roslyn(CSharpScript).Net脚本编译引擎使用过程内存增涨与稳定的方式
  18. Nods.js安装配置(windows)
  19. java怎么求偏态函数_树的不同形态
  20. linux终端重命名文件夹命令,如何使用命令行轻松重命名文件?

热门文章

  1. vivo9.0系统设备最简单激活XPOSED框架的步骤
  2. 【iCore1S 双核心板_ARM】例程十二:DMA实验——存储器到存储器的传输
  3. 二十四种设计模式:装饰模式(Decorator Pattern)
  4. IIS的真正并发数及扩展并发的办法
  5. 流量控制与拥塞控制区别
  6. Git push “fatal: Authentication failed ”
  7. BZOJ 1500 维修数列
  8. Leetcode771.Jewels and Stones宝石与石头
  9. Microsoft Power BI Desktop概念学习系列之Microsoft Power BI Desktop的下载和安装(图文详解)...
  10. 福州大学软件1715|W班-助教卞倩虹个人简介