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

这篇具有很好参考价值的文章主要介绍了【SAP ABAP】SAP Webservice & RESTful 接口服务发布教程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、SAP Webservice 类型

关于 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,得到的数据结果如下图:
abap webservice接口开发,SAP Abap,restful,后端,开发语言
需要发布服务的 FM 必须设置允许远程访问,即 RFC 函数
abap webservice接口开发,SAP Abap,restful,后端,开发语言

2.2、通过 RFC 创建服务

菜单:Utilities → More Utilities → Create Web Service → From the Function Module
abap webservice接口开发,SAP Abap,restful,后端,开发语言
根据向导,填写 WebService 定义信息:
abap webservice接口开发,SAP Abap,restful,后端,开发语言
abap webservice接口开发,SAP Abap,restful,后端,开发语言
abap webservice接口开发,SAP Abap,restful,后端,开发语言
abap webservice接口开发,SAP Abap,restful,后端,开发语言
abap webservice接口开发,SAP Abap,restful,后端,开发语言
至此,Webservice 服务定义完成,可以在 SE80 中查看服务定义,激活服务定义。
abap webservice接口开发,SAP Abap,restful,后端,开发语言

2.3、查看 WSDL

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

2.3.1、WSADMIN

SAP ECC6.0,执行事务码:WSADMIN。
abap webservice接口开发,SAP Abap,restful,后端,开发语言
展开左边树形第一个节点,找到刚才定义的 Webservice 服务 ZWS_DEMO
abap webservice接口开发,SAP Abap,restful,后端,开发语言

abap webservice接口开发,SAP Abap,restful,后端,开发语言
abap webservice接口开发,SAP Abap,restful,后端,开发语言
输入SAP用户名和密码,即可获得 WSDL 地址
abap webservice接口开发,SAP Abap,restful,后端,开发语言

2.3.2、SOAMANAGER

SAP S4HANA,执行事务码:SOAMANAGER,跳转浏览器:
abap webservice接口开发,SAP Abap,restful,后端,开发语言
abap webservice接口开发,SAP Abap,restful,后端,开发语言
abap webservice接口开发,SAP Abap,restful,后端,开发语言
点击服务名称,
或者从se80->本地对象->服务定义->启动SOAMANAGER配置,可直接跳到此处
abap webservice接口开发,SAP Abap,restful,后端,开发语言
abap webservice接口开发,SAP Abap,restful,后端,开发语言
abap webservice接口开发,SAP Abap,restful,后端,开发语言
备注:上面能否勾选,基于定义Webservice时的以下设置。
abap webservice接口开发,SAP Abap,restful,后端,开发语言
abap webservice接口开发,SAP Abap,restful,后端,开发语言
abap webservice接口开发,SAP Abap,restful,后端,开发语言
abap webservice接口开发,SAP Abap,restful,后端,开发语言
abap webservice接口开发,SAP Abap,restful,后端,开发语言
复制,获得 WSDL 地址。

2.4、访问服务

Webservice服务测试,推荐使用SoapUI工具。
(1)新建项目,Add WSDL,贴入上面获取到的 WSDL地址
abap webservice接口开发,SAP Abap,restful,后端,开发语言
abap webservice接口开发,SAP Abap,restful,后端,开发语言
(2)输入SAP用户名及密码
abap webservice接口开发,SAP Abap,restful,后端,开发语言
abap webservice接口开发,SAP Abap,restful,后端,开发语言
(3)修改入参,调用服务
abap webservice接口开发,SAP Abap,restful,后端,开发语言
至此,SAP Webservice 服务发布完成。

2.5、删除服务

SE80,Enterprise Services → Service Definitions 中,找到对应的服务名称 ZWS_DEMO,右键 → Delete → Delete All Objects
abap webservice接口开发,SAP Abap,restful,后端,开发语言
abap webservice接口开发,SAP Abap,restful,后端,开发语言

3、SAP RESTful 服务发布

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

3.1、创建数据服务类

(1)SE24,创建数据服务类:YCL_REST_TEST
abap webservice接口开发,SAP Abap,restful,后端,开发语言
(2)继承系统接口:IF_HTTP_EXTENSION
abap webservice接口开发,SAP Abap,restful,后端,开发语言
(3)实现接口中的方法:IF_HTTP_EXTENSION~HANDLE_REQUEST
该方法为服务的主入口,主要就是分发处理各种 HTTP 方法,因为是发布数据查询服务,所以这里只演示了 GET方法。
abap webservice接口开发,SAP Abap,restful,后端,开发语言
(4)添加 GET 方法,并将 server 作为入参
abap webservice接口开发,SAP Abap,restful,后端,开发语言
(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 服务发布。
abap webservice接口开发,SAP Abap,restful,后端,开发语言
default_host,右键 → 新的子元素
abap webservice接口开发,SAP Abap,restful,后端,开发语言
abap webservice接口开发,SAP Abap,restful,后端,开发语言
abap webservice接口开发,SAP Abap,restful,后端,开发语言
abap webservice接口开发,SAP Abap,restful,后端,开发语言
abap webservice接口开发,SAP Abap,restful,后端,开发语言
保存,返回
abap webservice接口开发,SAP Abap,restful,后端,开发语言
右键,激活服务
abap webservice接口开发,SAP Abap,restful,后端,开发语言
abap webservice接口开发,SAP Abap,restful,后端,开发语言

3.3、访问服务

右键,测试服务
abap webservice接口开发,SAP Abap,restful,后端,开发语言
弹出浏览器,获取到 Url,以及Json 结果
abap webservice接口开发,SAP Abap,restful,后端,开发语言
拷贝 Url 到 Postman 工具中,测试条件查询
abap webservice接口开发,SAP Abap,restful,后端,开发语言
至此,SAP RESTful 服务发布完成。

3.4、删除服务

abap webservice接口开发,SAP Abap,restful,后端,开发语言
abap webservice接口开发,SAP Abap,restful,后端,开发语言

4、SAP ODATA 服务发布

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

5、SAP PO 服务发布

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

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

原创文章,转载请注明来源-X档案文章来源地址https://www.toymoban.com/news/detail-783655.html

到了这里,关于【SAP ABAP】SAP Webservice & RESTful 接口服务发布教程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SAP开发环境ABAP的搭建(客户端和服务器),Developer Key和AccessKey的绕过方法

    目录 一.前言 二.客户端GUI安装 1.下载好SAP GUI 750 2.解压后找到SAPGUISetup.exe 3.安装 4.安装完整教程 三.服务端搭建 1.安装VmWare虚拟机 2.下载虚拟机镜像 3.打开虚拟机 4.调整内存大小 5.启动虚拟机  四.创建程序 1.创建包 2.创建程序 3.Developer Key和AccessKey问题及绕过方法 这学期选修

    2024年02月16日
    浏览(51)
  • SAP ABAP技术文章合集_微信公众号:ABAP猿

    序号 文章标题 01 ABAP OOALV-基本显示 02 ABAP OOALV-排序、过滤 03 ABAP OOALV-合计、小计 04 ABAP OOALV-选择模式、触发事件 05 ABAP OOALV-隐藏列、修改列标题、添加图标列、调整列位置 06 ABAP OOALV-固定列、鼠标悬停文本 07 ABAP OOALV-颜色(列、行、单元格) 08 ABAP OOALV-样式(列、行、单元格

    2024年02月03日
    浏览(49)
  • SAP/ABAP(二)

    一、循环结构 二、条件判断 三、异常处理(cx-root) 四、结构体,工作区 五、内表

    2024年02月17日
    浏览(45)
  • SAP ABAP 用户状态锁定案例

    一、前言 项目需求是根据当天及前两天的离职员工信息(假设这是一个定时器任务每天下午5点执行程序,计算前两天的员工工号是为了将5点之后办理离职的员工工号找出来),将这些员工在用户表 USR02 中的锁定状态设置为 “64”,以保证离职员工无法继续使用系统账号。

    2024年02月15日
    浏览(51)
  • SAP ABAP 基础语法超详细

    1.表声明 当你声明了一个数据表的同时,系统也同时自动生成了一个和数据表同名的结构,结构的变量集等于数据表里面的字段。 2.定义变量 v1 是变量名。 (l) 是变量的长度。 t 是数据类型。 d 是小数位。 ‘xxx’ 是缺省值。 如:data num(10) type p decimals 3 value ‘1.12’. 数据

    2024年02月15日
    浏览(62)
  • SAP,ABAP:ALV变式复制

    应用场景:程序优化,需要新开一个程序优化,优化完成后原程序ALV变式无法带到新的程序, ALV变式是很好用的功能 REPORT zbsc. 事务代码:ZBSC-ALV变式复制 程序名称:ZBSC-ALV变式复制 程序目的: ZBSC-ALV变式复制 开发人员: *(修改日志)----------------------------------------------------

    2024年02月09日
    浏览(44)
  • 【SAP】SAP 发布HTTP接口之完整的Restful 含( 含Token 验证)

    最近在工作中需要发布 http 接口,以供第三方系统调用,所以有了本博客,用来记录开发过程 网上有很多实现的方式都是通过 IF_HTTP_EXTENSION 接口实现的,这次用的方式不一样。 具体过程如下: 使用SE24创建一个类 ZLOCAL_CL_REST ,并且继承超类 CL_REST_HTTP_HANDLER 。 重构方法 IF_

    2024年02月13日
    浏览(68)
  • SAP ABAP ChatGPT 初体验 我会失业吗?

    简介: ChatGPT 最近很火,听说我可能要失业!就在今天我历经千辛万苦,终于把 ChatGPT 注册好了。话不多说,我先问两个 ABAP 开发问题压压惊。 : SAP ABAP ChatGPT OpenAI 失业 下面是我在 ChatGPT 的聊天截图, 我对这个回答满意度 90% ,此时我内心还不慌,虽然内容很完整逻

    2023年04月15日
    浏览(43)
  • sap abap,forms,smartforms 导出pdf

    4种方法: 1.安装pdf程序,Foxit Reader,先敲回车 自动带出,如下图: 直接打印就会弹出保存pdf文档路径,点保存。这种方式是最简单的,可 forms 和 smartforms 。 2. forms 和 smartforms 打印到spool 中,首先要设置个人参数文件  输出设备 ,默认输出设备LP01    。 T-CODE: SP02 或如下图

    2024年02月12日
    浏览(86)
  • SAP ABAP调用Http/Https方式实例

    注意: 1.url必须带\\\"http://\\\"或者“https://”。 2. http_client-propertytype_redirect = http_client-co_disabled .这一行是设置是否允许重定向,是为“co_enabled”,否为“co_disabled”。 3. 可能出现的错误 404 Hostname Unknow,是因为服务器未配置该url的dns 4. 可能出现的错误 401 refused,可能是被防火墙

    2024年02月07日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包