SAP发布HTTP接口
附上HTTP的一些资料,对于有些abaper来说可能不太懂HTTP
1、https://www.runoob.com/http/http-tutorial.html
2、https://www.runoob.com/json/json-tutorial.html
一、创建类
1、进入SE24
2、类->接口添加IF_HTTP_EXTENSION
3、实现接口的HANDLE_REQUEST方法,并在源代码里编写代码,然后激活
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_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"表示请求成功,否则就是失败
落霞与孤鹜齐飞,秋水共长天一色
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示