【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,得到的数据结果如下图:
在这里插入图片描述
需要发布服务的 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 系统版本信息》

2.3.1、WSADMIN

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

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

2.3.2、SOAMANAGER

SAP S4HANA,执行事务码:SOAMANAGER,跳转浏览器:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
点击服务名称,
或者从se80->本地对象->服务定义->启动SOAMANAGER配置,可直接跳到此处
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
备注:上面能否勾选,基于定义Webservice时的以下设置。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
复制,获得 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,后续提供。

原创文章,转载请注明来源-X档案

SAP ABAP(Advanced Business Application Programming)是一种用于开发SAP应用程序的编程语言。下面是SAP ABAP入门教程的简要概述。 首先,要学习SAP ABAP,您需要具备一定的编程基础知识,如面向对象编程、数据结构和算法等。此外,了解SAP的基本概念和业务流程也是必要的。 其次,您可以开始学习ABAP编程语言的语法和特性。ABAP是一种高级的编程语言,具有结构化编程和面向对象编程的特点。您可以学习如何定义变量、使用控制流语句和创建函数等基本概念。 接下来,您可以学习如何使用ABAP开发SAP应用程序。ABAP提供了丰富的开发工具和框架,如ABAP Workbench和ABAP Dictionary。您可以学习如何使用这些工具来创建表、报表和表单等。 此外,了解如何使用ABAPSAP系统进行交互也是很重要的。您可以学习如何使用ABAP调用标准SAP函数模块、处理数据和执行事务等。 在学习过程中,建议您阅读相关的教程、文档和参考资料。SAP官方网站上提供了许多免费的教学资源,您可以利用这些资源来加深对ABAP的理解和应用。 最后,通过实践项目来提高您的ABAP编程技能。参与SAP ABAP开发项目或模拟实际业务场景来编写代码,这将帮助您更好地理解ABAP的实际应用和最佳实践。 总的来说,学习SAP ABAP需要掌握基本的编程知识和SAP系统的基本概念,学习ABAP的语法和特性,掌握开发工具和框架,并通过实践项目来提高自己的编程技能。希望这个简要概述对您入门SAP ABAP编程有所帮助。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值