前言
SE24创建 服务处理类,作为IF_HTTP_EXTENSION接口实现类- 实现
IF_HTTP_EXTENSION~HANDLE_REQUEST方法 - 进行数据处理 SICF发布服务Web请求测试服务SRT_LOG查看错误日志
SE24 创建 Class
TCode SE24 创建 服务处理类

选择 Class,Next

填入描述信息,Save 保存

实现 接口 IF_HTTP_EXTENSION

实现方法
切换到 Methods 页签,双击 IF_HTTP_EXTENSION~HANDLE_REQUEST 方法进入 源码 页面

-
实现方法,激活

实现逻辑源码如下:
METHOD if_http_extension~handle_request.
DATA: lr_json_ser TYPE REF TO cl_trex_json_serializer,
lr_json_des TYPE REF TO cl_trex_json_deserializer.
DATA: lv_json_string TYPE string.
DATA: gt_t005u TYPE TABLE OF t005u.
DATA: lv_request TYPE string.
DATA: BEGIN OF ls_request,
spras TYPE spras,
land1 TYPE land1,
END OF ls_request.
DATA lt_request LIKE STANDARD TABLE OF ls_request." 该内表格式要和外部传入参数格式一致
*&--- 获取调用时候传入的参数
CLEAR: lt_request.
lv_json_string = server->request->get_cdata( ). " 获取传入的 JSON 格式数据
/ui2/cl_json=>deserialize( " 把 JSON 格式的转化为 ABAP 内表, 把 LV_JSON_STRING 放入 LT_REQUEST 里面
EXPORTING
json = lv_json_string
pretty_name = /ui2/cl_json=>pretty_mode-camel_case
CHANGING
data = ls_request ).
APPEND ls_request TO lt_request.
*&--- 设置返回数据格式
CALL METHOD server->response->if_http_entity~set_content_type
EXPORTING
content_type = 'application/json'.
*&--- 获取要返回的数据
IF lt_request[] IS NOT INITIAL.
CLEAR: gt_t005u.
SELECT *
INTO TABLE gt_t005u
FROM t005u
UP TO 5 ROWS
FOR ALL ENTRIES IN lt_request
WHERE spras = lt_request-spras
AND land1 = lt_request-land1.
ENDIF.
*&--- 要返回的数据转换成 JSON 格式
CLEAR: lv_json_string.
CREATE OBJECT lr_json_ser
EXPORTING
data = gt_t005u[].
CALL METHOD lr_json_ser->serialize.
CALL METHOD lr_json_ser->get_data
RECEIVING
rval = lv_json_string.
*&--- 设置返回数据
server->response->set_cdata(
EXPORTING
data = lv_json_string " Character data
).
ENDMETHOD.
SICF 发布服务
TCode: SICF

创建自定义服务
default_host/sap下创建Sub-Element

填写 Element 名称,点击确定

元素 Service 配置

配置刚刚创建的 服务实现类,然后 保存

激活服务

测试服务
获取 URL,这里我们以 Postman 测试为例
这里需要注意拿到的
URL中的Domain和Port会存在问题
- 直接访问对应
IP/ 修改本地hosts文件,做一下本地解析(具体可参见我的「SAP 发布 OData Service」文章中有介绍 / 或者自行 Google)- 端口号可能有误,需自行判断修改

程序中打 外部断点 测试查看

成功接收并转化值

响应码 200,返回查询结果

该博客介绍了Java服务的创建、发布与测试流程。先通过SE24创建服务处理类并实现接口和方法,业务逻辑是获取并返回JSON格式数据;接着用SICF发布服务,配置服务实现类;最后进行服务测试,注意获取数据、端口号等可能存在的问题。
1万+

被折叠的 条评论
为什么被折叠?



