SAP RESTful 服务接口对比起WebService类型的接口,算是目前比较流行且推荐的,今天咱们就来介绍下如何快速创建RESTful 服务接口,以便完成高效的工作。
一、创建接口服务类
首先需要在TCODE-SE24 创建一个服务类:
在该类的接口中继承http:
然后双击下图中方法,编写通用代码:
代码如下:
DATA lv_method TYPE string.
lv_method = server->request->get_method( ).
CASE lv_method.
WHEN 'GET'.
me->get( server ).
WHEN 'POST'.
WHEN OTHERS.
server->response->set_status( code = 405 reason = '请求方法暂不支持,请联系管理员!' ).
ENDCASE.
再创建一个GET方法,双击get便会自动创建其方法,代码如下:
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.
创建好后点激活该服务类。
二、创建接口服务
输入TCODE-【SICF】,在其服务下新建一个子元素
创建服务元素:
然后把刚刚创建的类添加到处理器清单,点击保存
回到上一个界面对其进行激活
然后再点测试服务,这样就会出现对应的API地址
三、测试服务接口
一般我测试接口比较喜欢用postman去进行测试,打开postman,将刚才生成的API地址放进去:
可以看到200的返回码,这说明调取接口数据成功,至此,API接口创建完成