【SAP ABAP】SAP Webservice RESTful 接口服务发布教程

news2025/1/11 9:57:37

SAP Webservice & RESTful 接口服务发布教程

  • 1、SAP Webservice 类型
  • 2、SAP Webservice 服务发布
    • 2.1、准备 RFC
    • 2.2、通过 RFC 创建服务
    • 2.3、查看 WSDL
    • 2.4、访问服务
    • 2.5、删除服务
  • 3、SAP RESTful 服务发布
    • 3.1、创建数据服务类
    • 3.2、维护服务
    • 3.3、访问服务
    • 3.4、删除服务
  • 4、SAP ODATA 服务发布
  • 5、SAP PO 服务发布

1、SAP Webservice 类型

这篇文章讲解的非常全面,可以移步阅读《SAP Web service》。

本想通过 RFC 来发布 ODATA 服务,奈何当前 SAP ECC 版本过低不支持,只好采用其他方式来发布服务,于是就尝试了下面这两种方法。

2、SAP Webservice 服务发布

2.1、准备 RFC

SE37,创建以下测试用 RFC

FUNCTION ZFM_DEMO_ODATA.
*"----------------------------------------------------------------------
*"*"Local interface:
*"  TABLES
*"      T_DATA STRUCTURE  SPFLI
*"----------------------------------------------------------------------

select *
into table T_DATA
from spfli.

ENDFUNCTION.

测试执行 RFC,得到的数据结果如下图:
在这里插入图片描述
需要发布服务的 FM 必须设置允许远程访问,即 RFC 函数
在这里插入图片描述

2.2、通过 RFC 创建服务

菜单:Utilities → More Utilities → Create Web Service → From the Function Module
在这里插入图片描述
根据向导,填写 WebService 定义信息:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
至此,Webservice 服务定义完成,可以在 SE80 中查看服务定义。
在这里插入图片描述

2.3、查看 WSDL

首选需要确定SAP版本,不同版本的事务码不同。
NW740版本之前版本:使用事务码:WSCONFIG,WSADMIN
NW740版本之后版本:使用事务码:SOAMANAGER
查看具体SAP版本,可参考这篇文章《如何更详细查看SAP 系统版本信息》。

本人当前使用SAP版本为SAP ECC6.0,执行事务码:WSADMIN。
在这里插入图片描述
展开左边树形第一个节点,找到刚才定义的 Webservice 服务 ZWS_DEMO
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
输入SAP用户名和密码,即可获得 WSDL 地址
在这里插入图片描述

2.4、访问服务

Webservice服务测试,推荐使用SoaPUI工具。
(1)新建项目,Add WSDL,贴入上面获取到的 WSDL地址
在这里插入图片描述
在这里插入图片描述
(2)输入SAP用户名及密码
在这里插入图片描述
在这里插入图片描述
(3)修改入参,调用服务
在这里插入图片描述
至此,SAP Webservice 服务发布完成。

2.5、删除服务

SE80,Enterprise Services → Service Definitions 中,找到对应的服务名称 ZWS_DEMO,右键 → Delete → Delete All Objects
在这里插入图片描述
在这里插入图片描述

3、SAP RESTful 服务发布

现在系统集成,都推荐采用 RESTful 服务,于是继续研究在 SAP 中发布 RESTful 服务的方法,具体实现步骤如下。

3.1、创建数据服务类

(1)SE24,创建数据服务类:YCL_REST_TEST
在这里插入图片描述
(2)继承系统接口:IF_HTTP_EXTENSION
在这里插入图片描述
(3)实现接口中的方法:IF_HTTP_EXTENSION~HANDLE_REQUEST
该方法为服务的主入口,主要就是分发处理各种 HTTP 方法,因为是发布数据查询服务,所以这里只演示了 GET方法。
在这里插入图片描述
(4)添加 GET 方法,并将 server 作为入参
在这里插入图片描述
(5)实现 GET 方法,查询数据,并返回Json串

METHOD get.

  DATA: lt_fields TYPE tihttpnvp,
          s_carrid  TYPE rseloption,
          s_connid  TYPE rseloption,
     lv_content_type TYPE string.
  DATA: ls_selopt TYPE rsdsselopt.

* 获取请求参数
  server->request->get_form_fields( CHANGING fields = lt_fields ).
  IF lt_fields IS INITIAL.
    " Sets current HTTP status code
    server->response->set_status( code = 404 reason = '未查询到传入参数,请检查' ).
    RETURN.
  ENDIF.

  FIELD-SYMBOLS: <fs> LIKE LINE OF lt_fields.
  LOOP AT lt_fields ASSIGNING <fs>. "FIELD-SYMBOL(<fs>).
    TRANSLATE <fs>-name TO UPPER CASE.
    CASE <fs>-name.
      WHEN 'CARRID'.
        CLEAR ls_selopt.
        ls_selopt-sign = 'I'.
        ls_selopt-option = 'EQ'.
        ls_selopt-low = <fs>-value.
        APPEND ls_selopt TO s_CARRID.

      WHEN 'CONNID'.
        CLEAR ls_selopt.
        ls_selopt-sign = 'I'.
        ls_selopt-option = 'EQ'.
        ls_selopt-low = <fs>-value.
        APPEND ls_selopt TO s_CONNID.
    ENDCASE.
  ENDLOOP.

* 查询数据
  DATA: lt_data TYPE TABLE OF SPFLI.
  SELECT *
    FROM SPFLI
    INTO CORRESPONDING FIELDS OF TABLE lt_data
    WHERE CARRID in s_CARRID
      and CONNID IN s_CONNID.

* 返回 Json 结果
  " Sets the HTTP body of this entity to the given char. data
  data: lv_str type string.
* 说明:SAP ECC 不具备Json处理类,需要找网上第三方工具类,此处定义为:Z_UI2_CL_JSON2。
*       SAP S4 可以直接使用系统自带的Json处理类:/ui2/cl_json,两者功能相似
  lv_str = Z_UI2_CL_JSON2=>serialize(   data = lt_data "lt_sflight"将内表转换为json传出
                                        compress = abap_true
                                        pretty_name = Z_UI2_CL_JSON2=>pretty_mode-camel_case ).
  server->response->set_cdata( lv_str ).
  " Sets current HTTP status code
  server->response->set_status( code = 200 reason = 'OK' ).
  lv_content_type = 'application/json'.
  " Set the Body Type (Text/HTML, for example)
  server->response->set_content_type( lv_content_type ).
  
ENDMETHOD.

保存,激活,待用。

3.2、维护服务

SAP端,执行事务码:SICF,进行 RESTful 服务发布。
在这里插入图片描述
default_host,右键 → 新的子元素
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
保存,返回
在这里插入图片描述
右键,激活服务
在这里插入图片描述
在这里插入图片描述

3.3、访问服务

右键,测试服务
在这里插入图片描述
弹出浏览器,获取到 Url,以及Json 结果
在这里插入图片描述
拷贝 Url 到 Postman 工具中,测试条件查询
在这里插入图片描述
至此,SAP RESTful 服务发布完成。

3.4、删除服务

在这里插入图片描述
在这里插入图片描述

4、SAP ODATA 服务发布

具体操作步骤可以参考这篇文章《三种方法进行SAP ODATA数据服务发布(DDIC、RFC、CDS)》。

5、SAP PO 服务发布

(1)PO发布Webservice,可以参考这篇文章《SAP PO 接口配置完整教程之一RFC服务发布》。

(2)PO发布RESTful,后续提供。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/94830.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Ajax(五) Ajax加强

1. 模板引擎的实现原理 1.1 正则与字符串操作 exec() 函数用于检索字符串中的正则表达式的匹配。 如果字符串中有匹配的值&#xff0c;则返回该匹配值&#xff0c;否则返回 null。 1.基本语法&#xff1a;正则表达式 2.分组 正则表达式中 ( ) 包起来的内容表示一个分组&#…

【AIOT】QT样式QSS

使用桌面的PyQt或者web的flaskweb方便快捷的部署搭建可视化AI应用演示Demo&#xff0c;这里记录使用PyQt搭建基于Mediapipe和MixMLP网络的识别控制系统QSS样式代码。 Styles sheets are textual specifications that can be set on the whole application using QApplication::…

基于MOdel的自治交通模拟框架,用于故障-错误-故障链分析(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客 &#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜…

二叠氮聚乙二醇,N3-PEG-N3,点击化学试剂简介 CAS 82055-94-5, Azide-PEG-Azide双边活性PEG衍生物

名称 二叠氮聚乙二醇 N3-PEG-N3 中文名称 叠氮PEG叠氮 聚乙二醇二叠氮 二叠氮聚乙二醇 英文名称 N3-PEG-N3 Azide-PEG-Azide CAS 82055-94-5 溶剂 溶于水和大部分有机溶剂 存储条件 -20读冷冻保存&#xff0c;惰性气体保护 N3-PEG-N3是一种双边活性PEG衍生物&#xff0c;可…

Ubuntu服务器Docker及常用库件安装

wshanshi&#xff1a;嗯…是从有道云笔记里弄出来的… 一、安装步骤 1.1、 检查并卸载已安装的docker $ sudo apt-get remove docker docker-engine docker.io containerd runc1.2、使用存储库安装 $ sudo apt-get update$ sudo apt-get install \apt-transport-https \ca-c…

[SCTF2019]Flag Shop (RUBY模板注入)

打开界面发现一个通过金钱来获得flag的&#xff0c;然后点击work或增加金钱但都是个位数 首先想了一下如果做一个脚本一直点击work不就好了吗&#xff0c;但是又想了一下服务器响应太快也不行&#xff0c;如果设置sleep那时间太长了 然后换一个思路&#xff0c;burp抓包看了一…

网络技术基础测试(一)

在一般布线中双绞线最长不可超过&#xff1a;100米网络拓扑图中路由器的图形为&#xff1a; Pv4地址由哪俩部分组成&#xff1a;网段地址和主机地址查询DNS域名信息的CMD命令为&#xff1a;NSLOOKUP关于局域网交换机&#xff0c;描述错误的是&#xff1a;用户可以有不同权限某…

Linux 性能分析工具大全

出于对Linux操作系统的兴趣&#xff0c;以及对底层知识的强烈欲望&#xff0c;因此整理了这篇文章。本文也可以作为检验基础知识的指标&#xff0c;另外文章涵盖了一个系统的方方面面。如果没有完善的计算机系统知识&#xff0c;网络知识和操作系统知识&#xff0c;文档中的工具…

12月编程语言排行榜公布!C+首超 Java

前言 日前&#xff0c;全球知名TIOBE编程语言社区发布了12月编程语言排行榜&#xff0c;有哪些新变化&#xff1f; C 首超 Java 和上个月相比&#xff0c;12 月榜单中最大的变化莫过于 C 以 0.12% 微弱的优势&#xff0c;凭借 11.94% 的市场份额首次超过了 11.82% 的 Java。…

重磅!阿里巴巴三入Java 全球管理组织执行委员会 龙蜥拥抱上游开源生态

近日&#xff0c;Java 全球管理组织 Java Community Process&#xff08;以下简称 JCP&#xff09;经过公平公正的投票&#xff0c;披露了入选最高执行委员会的成员名单&#xff0c;阿里巴巴作为唯一中国代表实现第三次连任。作为龙蜥社区理事长单位&#xff0c;阿里巴巴的此次…

“双重主要上市”潮流来袭,中通快递“赶时髦”意欲何为?

“双重主要上市”的风今年悄然在资本市场刮起。 7月26日&#xff0c;阿里巴巴申请将香港新增为主要上市地&#xff0c;7月27日&#xff0c;雷军的金山云递交了港股双重主要上市申请&#xff0c;据不完全统计&#xff0c;已有贝壳、小鹏、理想、知乎、B站等9家中概股公司&#…

20 个基础实用的 JavaScript 技巧

1.确定对象的数据类型 function myType(type) { return Object.prototype.toString.call(type).slice(8, -1); 使用Object.prototype.toString&#xff0c;通过传入不同类型的判断返回不同的判断函数&#xff0c;一行代码&#xff0c;简洁优雅灵活&#xff1b; 2.循环遍历数…

HylicOS --- 内存抽象

HylicOS已经完成了部分硬件抽象层的工作&#xff0c;包括MMU的初始化并对虚拟内存到物理内存做了映射&#xff0c;创建了页表目录。对串口进行了初始化&#xff0c;实现了printk格式化打印函数&#xff0c;方便了日志输出和程序调试。建立了异常向量表。 现在要做的是内存管理…

复方一枝蒿复合磷脂/IgG二性霉素B/阿糖胞苷修饰载甲氨喋呤/酶促合成半乳糖配体脂质体制备

小编今天为大家分享的科研知识是复方一枝蒿复合磷脂/IgG二性霉素B/阿糖胞苷修饰载甲氨喋呤/酶促合成半乳糖配体脂质体&#xff0c;一起来看&#xff01; 点击输入图片描述&#xff08;最多30字&#xff09; 复方一枝蒿复合磷脂脂质体&#xff1a; 采用硫酸铵梯度法制备复方一枝…

gunicorn走私漏洞

gunicorn走私漏洞 源码&#xff1a;https://github.com/benoitc/gunicorn漏洞定位&#xff1a;https://github.com/benoitc/gunicorn/blob/20.x/gunicorn/http/message.py#142 漏洞分析 只要header里面存在Sec-Websocket-Key1 那么就将content_length强制赋值为8 比较简单直接…

【java】java JSR 269 自定义注解实战 Lombok @Data注解

1.概述 本节会演示一个实际的例子,使用JSR 269 API为类中的字段自动生成get、set 方法。首先定义一个自定义注解类Data,如下所示。 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import

智能工业之数据采集

现状 工业物联网飞速发展&#xff0c;但是相对于实时IT技术还是明显滞后的。个人理解&#xff0c;有两点原因&#xff1a;一是因为涉及的知识面也比较广&#xff0c;工业物联网开发成本比较高&#xff0c;不像做一个纯软件的管理系统&#xff0c;坐在电脑前借助开源框架就能完成…

你好,Ultrachess 里程碑更新了。

Cartesi Labs 资助的完全去中心化国际象棋项目即将来到你的面前。在10月&#xff0c;我们宣布了第一个由Cartesi Rollup 技术支持的完全链上国际象棋应用程序Ultrachess。Ultrachess允许用户将真正的价值放在赌注上&#xff0c;并在下棋时考虑的不仅仅是他们的隐藏分值。此外&…

Java中的StringBuilder类

目录 一、介绍 二、StringBuilder类的体系图 三、StringBuilder的常用方法 四、String、StringBuffer和StringBuilder比较 1、效率比较 2、如何选择&#xff1f; 一、介绍 StringBuilder也是lang包中的类&#xff0c;即java.lang.StringBuilder类。它也是一个可变的字符序…

设计模式原则-三-依赖倒转原则

设计模式原则---依赖倒转原则依赖倒转原则一 官方定义基本介绍二 案例演示普通方式实现**解决方案****案例分析****案例总结**依赖倒转原则方式实现**解决方案**案例分析**案例总结**注意事项&细节三 依赖关系传递方式一、通过接口传递二、通过构造方法传递三、通过set()方…