前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >matinal:SAP ABAP 关于SAP系统中如何集成HTTPS的若干功能总结篇【第一篇】

matinal:SAP ABAP 关于SAP系统中如何集成HTTPS的若干功能总结篇【第一篇】

作者头像
matinal
发布2024-04-03 09:17:46
890
发布2024-04-03 09:17:46
举报
文章被收录于专栏:SAP TechnicalSAP Technical

🚀欢迎来到本文🚀 🍉个人简介:matinal,目前职业是IT行业,一个正在慢慢前行的普通人。 🏀系列专栏:涵盖SAP各模块,Python,Excel,人工智能等 💡 其他专栏:一些平时学习的技术,感兴趣的小伙伴可以看看。 🍔公众号:matinal 🎁希望各位→点赞👍 + 收藏⭐️ + 留言📝 ​ ⛱️万物从心起,心动则万物动🏄‍♂️

前言:SAP ABAP 关于SAP系统中如何集成HTTPS的若干功能总结篇,这是第一篇。本篇主要介绍SAP中创建http服务,所以,如果你了解并熟知,请略过本篇。 🦙(工作遇到傻逼,千万要远离。道路千万条,远离傻逼第一条)

1990年互联网诞生之初,就已经开始用超文本传输协议 HTTP 传输数据,这也是为什么现在网页地址都是以 http 开头的原因。但是HTTP协议传输数据是明文传输,任意的人抓包就能看到传输的数据,这显然不安全。1994年,Netscape 公司用加密协议增加了 HTTP,开始在 HTTP 的基础上加入 SSL 即安全套接层(Secure Socket Layer)。称为 "HTTP over SSL" 或者 "HTTP Secure",也就是我们现在熟知的 HTTPS。

HTTPS 其实是一个“非常简单”的协议,RFC 文档很小,只有短短的 7 页,里面规定了新的协议名“https”,默认端口号 443,至于其他的什么请求 - 应答模式、报文结构、请求方法、URI、头字段、连接管理等等都完全沿用 HTTP,没有任何新的东西。

也就是说,除了协议名“http”和端口号 80 这两点不同,HTTPS 协议在语法、语义上和 HTTP 完全一样,优缺点也“照单全收”(当然要除去“明文”和“不安全”)。

HTTP 协议一般指 HTTP(超文本传输协议)。

超文本传输协议(英语:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议,是因特网上应用最为广泛的一种网络传输协议,所有的 WWW 文件都必须遵守这个标准。

HTTP 是为 Web 浏览器与 Web 服务器之间的通信而设计的,但也可以用于其他目的。

HTTP 是一个基于 TCP/IP 通信协议来传递数据的(HTML 文件、图片文件、查询结果等)。

下面进入正文


一、创建类

1、进入SE24

2、类->接口添加IF_HTTP_EXTENSION

3、实现接口的HANDLE_REQUEST方法,并在源代码里编写代码,然后激活

代码语言:javascript
复制
  METHOD if_http_extension~handle_request.
    TYPES: BEGIN OF ty_data,
             matnr TYPE matnr,
             maktx TYPE maktx,
           END OF ty_data,
           BEGIN OF ty_mat,
             matnr TYPE matnr,
           END OF ty_mat.

    DATA: lt_data TYPE TABLE OF ty_data,
          lt_mat  TYPE TABLE OF ty_mat,
          ls_mat  TYPE ty_mat.

    DATA: lr_mat  TYPE RANGE OF matnr,
          lrs_mat LIKE LINE OF lr_mat.

    DATA: lt_form_fields   TYPE tihttpnvp, "请求url参数
          lt_header_fields TYPE tihttpnvp, "请求头部数据
          lv_method        TYPE string,    "请求类型
          lv_request       TYPE string,    "请求json数据
          lv_response      TYPE string.    "返回json数据

    "请求类型
    lv_method = server->request->get_header_field( name = '~request_method' ).

    "请求url参数
    server->request->get_form_fields( CHANGING fields = lt_form_fields ).

    "请求头部数据
    server->request->get_header_fields( CHANGING fields = lt_header_fields ).

    "请求json数据
    lv_request = server->request->get_cdata( ).

    "json转abap
    /ui2/cl_json=>deserialize( EXPORTING json = lv_request
                               CHANGING data = lt_mat ).

    "将内表数据转成range用作查询条件
    LOOP AT lt_mat INTO ls_mat.
      lrs_mat-sign = 'I'.
      lrs_mat-option = 'EQ'.
      lrs_mat-low = ls_mat-matnr.
      APPEND lrs_mat TO lr_mat.
    ENDLOOP.

    CASE lv_method.
      WHEN 'GET'.

        SELECT matnr maktx INTO CORRESPONDING FIELDS OF TABLE lt_data
               FROM makt
               UP TO 20 ROWS
               WHERE spras = sy-langu
               AND matnr IN lr_mat.

        "abap转换json
        /ui2/cl_json=>serialize( EXPORTING data   = lt_data
                                 RECEIVING r_json = lv_response ).

        "返回json数据给调用端
        server->response->set_cdata( EXPORTING data = lv_response ).

        "请求响应
        server->response->set_status( code = 200 reason = 'OK' ).
      WHEN OTHERS.

        "如果不是get请求,则返回错误
        server->response->set_status( code = 405 reason = 'ERROR' ).

    ENDCASE.



  ENDMETHOD.

二、配置服务

1、进入SICF,运行后,选中sap,鼠标右键点击"新的子元素"

2、填写服务名称,勾"服务是管理服务"

3、输入描述内容,不用设置集团和账号密码

4、在处理类清单里添加前面创建的类后保存

5、激活服务

三、用Postman测试http接口

1、用"测试服务"获取完整的http接口

2、Postman添加请求

3、备注一下请求的名称,选择好请求类型GET,填好URL(需要在接口后面增加?sap-client=202来决定是取哪个集团数据)

4、在Authorization里选择授权类型,并输入SAP登陆的账号密码

5、因为前面创建的类代码里是接收Json数据来做后面的逻辑处理,所以在Body里选择row和JSON,并按照Json的格式要求输入要查询的料号

6、点Send请求SAP的接口获取要查询出来的料号数据,如果HTTP的状态码是"200"表示请求成功,否则就是失败


怎么样,在了解此篇文章有何感想?

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024-04-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
测试服务
测试服务 WeTest 包括标准兼容测试、专家兼容测试、手游安全测试、远程调试等多款产品,服务于海量腾讯精品游戏,涵盖兼容测试、压力测试、性能测试、安全测试、远程调试等多个方向,立体化安全防护体系,保卫您的信息安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档