这是 Jerry 2021 年的第 47 篇文章,也是汪子熙公众号总共第 324 篇原创文章。
Jerry 2014 年时,已经在 SAP 社区上写过一篇英文博客,介绍了如何在 ABAP On-Premises 零碎里,创立和生产 Web Service:
Step by step to create, consume and trace web service in ABAP system
这篇文章的中文版,请移步这个链接:
最具体的 SAP ABAP Web Service 创立和生产步骤解说
到了 SAP BTP 上的 ABAP 编程环境里,咱们依然能够沿用 On-Premises 零碎里的 Destination 概念,在云上的 ABAP 代码里,生产第三方的服务。区别在于 On-Premises 零碎里的 Destination 通过事物码 SM59 创立,而云上的 ABAP,则在 SAP BTP 控制台里创立 Destination 实例。具体步骤请参考 Jerry 之前的文章:SAP 云平台上的 ABAP 编程环境里如何生产第三方服务。
本文介绍如何在 SAP BTP 平台 ABAP 编程环境里生产基于 SOAP 的 Web Service. 如果浏览过 Jerry 后面提到的两篇文章,了解本文的内容不过是几分钟的事件。
登录 SAP BTP 平台的 ABAP 编程环境。具体步骤,能够参考 Jerry 之前翻译的 OpenSAP Fiori Elements 公开课,第一周第四单元的视频,外面蕴含了具体步骤。
新建一个 Service Consumption Model.
Remote Consumption Mode 能够抉择 OData,RFC 或者 Web Service. Jerry 之前介绍 Fiori Elements 和 Restful ABAP Programming 模型时,已经应用过 OData 模式。本文咱们应用 Web Service 模式。
下一步咱们须要为这个 Consumption Model 上传一个 WSDL 文件。Jerry 的文章 深刻了解 SAP Fiori Elements 工作原理系列之二:如何给 SAP Fiori Elements 利用增加自定义按钮 已经提到过 SAP ES5 零碎,这是一个 Demo 零碎,SAP 在下面公布了很多用于教学目标的 OData 服务和 Web Service.
本文咱们应用一个简略的 Product Web Service,能依据产品 ID 查问到其价格。该 Web Service 的 WSDL 文件,能够在这个链接取得。
上传 WSDL 文件之后,给该 Consumption Model 保护一个前缀 ZJERRY,这样接下来激活模型,生成的一系列开发资源,其名称均带有 ZJERRY 前缀,便于查问。
激活 Consumption Model 后,在我的项目资源列表里,察看到一系列主动生成的 ABAP 资源,蕴含运行时所需的数据类型定义,以及用于生产该 Web Service 的 ABAP Proxy 代理类。
同时,ADT 为咱们主动生成了一段模板代码,演示了如何生产主动生成的 ABAP 代理类来调用 Web Service. 点击 Copy to Clipboard,把这段代码粘贴到剪切板中,后续能够间接用。
上面咱们创立一个 ABAP 类,把前一个步骤拷贝到剪切板里的 ABAP 代码,粘贴到这个新创建的 ABAP 类里。
调用 Web Service 的外围代码如下图所示,待查问价格的产品 ID,硬编码成 JERRYPRODUCT.
其中第 22 行的 cl_soap_destination_provider=>create_by_url, 输出参数 i_url 的值,来自 WSDL 文件里 soap:address 节点的 location 属性值。
间接运行这个 ABAP 类,在 console 上看到谬误输入。这个谬误音讯来自 ABAP Proxy 类的 get_price 办法时抛出的异样:zjerrycx_fault_msg_type:
Product not found. Try e.g. HT-1000
谬误音讯表明,这是一个应用程序层级的谬误,因为我硬编码的产品 JERRYPRODUCT, 在 ES5 零碎后盾不存在。
应用 ES5 零碎上 SAP 公布的一个规范 OData 服务,查问该零碎后盾到底有哪些创立好的 Product 主数据,轻易抉择一条产品数据,ID 为 AR-FB-1000, 其价格为 3.25:
https://sapes5.sapdevcenter.c…
再次调用该 Web Service,这次在控制台里看到了冀望的输入:
由此可见,SAP BTP 云平台 ABAP 编程环境上生产 SOAP Web Service,步骤比 ABAP On-Premises 零碎上还要简捷一些。
Jerry 的 ABAP 专题
- Jerry 的 ABAP, Java 和 JavaScript 乱炖
- ABAP 开发人员将来应该学些什么
- Jerry 2017 年的五一小长假:8 种经典排序算法的 ABAP 实现
- Jerry 的 ABAP 原创技术文章合集
- 300 行 ABAP 代码实现一个最简略的区块链原型
- 应用 Java+SAP 云平台 +SAP Cloud Connector 调用 ABAP On-Premise 零碎里的函数
- 在 SAP 云平台的 CloudFoundry 环境下生产 ABAP On-Premise OData 服务
- ABAP vs Java,蛙泳 vs 自由泳
- 聊聊 C 语言和 ABAP
- 入手应用 ABAP Channel 开发一些小工具,晋升日常工作效率
- 我用 ABAP 做过的那些无聊的事件
- 不喜爱 SAP GUI?那试试用 Eclipse 进行 ABAP 开发吧
- 应用 Visual Studio Code 编写和激活 ABAP 代码
- 你的 ABAP 程序给佛祖开过光么?来试试 Jerry 这个小技巧
- 在 SAP 云平台 ABAP 编程环境上编写第一段 ABAP 程序
- SAP 官网公布的 ABAP 编程标准
- ABAP Code Inspector 那些暗藏的性能,您都晓得吗?
- 还在用 ABAP 进行 SAP 产品的二次开发?来理解下这种全新的二次开发理念吧
- ABAP Netweaver 体内的那些寄生式编程语言
- 从 SAP 社区上的一篇博客开始,聊聊 SAP 产品命名背地的那份情怀
- 云端的 ABAP Restful 服务开发
- 如何在 SAP 云平台 ABAP 编程环境里把 CDS view 裸露成 OData 服务
- 应用 abapGit 在 ABAP On-Premises 零碎和 SAP 云平台 ABAP 环境之间进行代码传输
- 30 分钟用 Restful ABAP Programming 模型开发一个反对增删改查的 Fiori 利用
- Jerry 带您理解 Restful ABAP Programming 模型系列之二:Action 和 Validation 的实现
- Jerry 带您理解 Restful ABAP Programming 模型系列之三:云端 ABAP 利用调试
- SAP 云平台上的 ABAP 编程环境里如何生产第三方服务
- ABAP 开发者上云的时候到了 – 当初大家能够收费应用 SAP 云平台 ABAP 环境的试用版了
- 学而不思则罔 – SAP 云平台 ABAP 编程环境的由来和实用场景
- SAP 云平台里的三叉戟利用
- 如何基于 Restful ABAP Programming 模型开发并部署一个反对增删改查的 Fiori 利用
- SAP 2019 TechEd Key Note 解读:云时代下 SAP 从业人员如何做二次开发?
- 有哪些 ABAP 关键字和语法,到了 ABAP 云环境上就没方法用了?
- ABAP 开发环境终于反对以驼峰命名法主动格式化 ABAP 变量名了
- 利用 ABAP 740 的新关键字 REDUCE 实现一个理论工作工作
- 一段让人瑟瑟发抖的 ABAP 代码
- 昨日万圣节 ABAP 怪兽级代码谜团,颁布答案啦
- 介绍一种在 ABAP 内核态进行内表高效拷贝的办法
- 应用 SAP Cloud Application Programming 模型开发 OData 的一个理论例子
- 当 ABAP 遇见普罗米修斯
- 应用 ABAP 绘制可伸缩矢量图
- ABAP 开发环境语法高亮的那些事儿
- SAP 谬误音讯调试之七种武器:让所有的谬误音讯都能被定位
- 应用 ABAP 操作 Excel 的几种办法
- SAP GUI 里的收藏夹事务码管理工具
- SAP GUI 和 Windows 注册表
- 有了 Debug 权限就能干坏事?小心了,你的一举一动尽在系统监控中
- ABAP CCDEF, CCIMP, CCMAC, CCAU, CMXXX 这些东东是什么鬼
- 实现 ABAP 条件断点的三种形式
- 应用 SAT 跟踪监控从浏览器关上的 SAP 利用的性能和调用栈
- 一个 13 年 ABAP 老兵的倡议:理解这些基础知识,对 ABAP 开发有百利而无一害
- SAP ABAP Netweaver 容器化, 不可能实现的工作吗?
- SAP 产品加强技术回顾
- SAP API 开发方法大全
- 浅谈 Java 和 SAP ABAP 的动态代理和动静代理,以及 ABAP 面向切面编程的尝试
- SAP ABAP 应用服务器的 HTTP 响应状态码(Status Code)
- SAP ABAP 里存在 Java List 这种汇合工具类么?CL_OBJECT_COLLECTION 理解一下
- ABAP 面试题系列:写一组会呈现死锁 (Deadlock) 的 ABAP 程序
- SAP ABAP Netweaver 服务器的规范登录形式解说
- SAP ABAP 关键字语法图和 ABAP 代码主动生成工具 Code Composer
- SAP ABAP SM50 的另类用处 – ABAP 工作过程对数据库表读取操作的检测
- 对于 SAP ABAP 字符变量和字符串变量字符个数的一个知识点,和一个血案
- SAP ABAP 一组关键字 IS BOUND, IS NOT INITIAL 和 IS ASSIGNED 的用法辨析
- SAP ABAP 和 Java 里的弱援用 (WeakReference) 和软援用(SoftReference)
- SAP AMDP 介绍 – ABAP 托管的 HANA 数据库过程
- 给你的 ABAP 对象打上标签(Tag)
- 历史上的明天:编程语言中 null 援用的十亿美元谬误
- ABAP Development Tool 代码模板和其余一些实用技巧汇总
- SAP ABAP Development Tool 进步开发效率的十个小技巧
更多 Jerry 的原创文章,尽在:” 汪子熙 ”: