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

2024-02-27 5082阅读

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

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

          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,得到的数据结果如下图:

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

          需要发布服务的 FM 必须设置允许远程访问,即 RFC 函数

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

          2.2、通过 RFC 创建服务

          菜单:Utilities → More Utilities → Create Web Service → From the Function Module

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

          根据向导,填写 WebService 定义信息:

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

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

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

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

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

          至此,Webservice 服务定义完成,可以在 SE80 中查看服务定义,激活服务定义。

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

          2.3、查看 WSDL

          首选需要确定SAP版本,不同版本的事务码不同。

          NW740版本之前版本:使用事务码:WSCONFIG,WSADMIN

          NW740版本之后版本:使用事务码:SOAMANAGER

          查看具体SAP版本,可参考这篇文章《如何更详细查看SAP 系统版本信息》。

          2.3.1、WSADMIN

          SAP ECC6.0,执行事务码:WSADMIN。

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

          展开左边树形第一个节点,找到刚才定义的 Webservice 服务 ZWS_DEMO

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

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

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

          输入SAP用户名和密码,即可获得 WSDL 地址

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

          2.3.2、SOAMANAGER

          SAP S4HANA,执行事务码:SOAMANAGER,跳转浏览器:

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

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

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

          点击服务名称,

          或者从se80->本地对象->服务定义->启动SOAMANAGER配置,可直接跳到此处

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

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

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

          备注:上面能否勾选,基于定义Webservice时的以下设置。

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

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

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

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

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

          复制,获得 WSDL 地址。

          2.4、访问服务

          Webservice服务测试,推荐使用SoapUI工具。

          (1)新建项目,Add WSDL,贴入上面获取到的 WSDL地址

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

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

          (2)输入SAP用户名及密码

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

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

          (3)修改入参,调用服务

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

          至此,SAP Webservice 服务发布完成。

          2.5、删除服务

          SE80,Enterprise Services → Service Definitions 中,找到对应的服务名称 ZWS_DEMO,右键 → Delete → Delete All Objects

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

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

          3、SAP RESTful 服务发布

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

          3.1、创建数据服务类

          (1)SE24,创建数据服务类:YCL_REST_TEST

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

          (2)继承系统接口:IF_HTTP_EXTENSION

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

          (3)实现接口中的方法:IF_HTTP_EXTENSION~HANDLE_REQUEST

          该方法为服务的主入口,主要就是分发处理各种 HTTP 方法,因为是发布数据查询服务,所以这里只演示了 GET方法。

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

          (4)添加 GET 方法,并将 server 作为入参

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

          (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:  LIKE LINE OF lt_fields.
            LOOP AT lt_fields ASSIGNING . "FIELD-SYMBOL().
              TRANSLATE -name TO UPPER CASE.
              CASE -name.
                WHEN 'CARRID'.
                  CLEAR ls_selopt.
                  ls_selopt-sign = 'I'.
                  ls_selopt-option = 'EQ'.
                  ls_selopt-low = -value.
                  APPEND ls_selopt TO s_CARRID.
                WHEN 'CONNID'.
                  CLEAR ls_selopt.
                  ls_selopt-sign = 'I'.
                  ls_selopt-option = 'EQ'.
                  ls_selopt-low = -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 服务发布。

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

          default_host,右键 → 新的子元素

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

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

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

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

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

          保存,返回

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

          右键,激活服务

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

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

          3.3、访问服务

          右键,测试服务

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

          弹出浏览器,获取到 Url,以及Json 结果

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

          拷贝 Url 到 Postman 工具中,测试条件查询

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

          至此,SAP RESTful 服务发布完成。

          3.4、删除服务

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

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

          4、SAP ODATA 服务发布

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

          5、SAP PO 服务发布

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

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

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


    免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

    目录[+]