定义:
建一张用于测试的自检表< ZTEST_CURD_TABLE>,录入一些初始数据
参照这个表建立一个简单的Gateway Service用于测试
编码:
创建好后转到 ABAP Workbench,重定义CRUD,添加相关的代码
ADD:ETPERSONSET_CREATE_ENTITY
DATA:ls_requst_input_data TYPE ZCL_ZTRAINING_DEMO_mpc=>TS_ETPERSON ,
ls_table TYPE ZTEST_CURD_TABLE .
io_data_provider->READ_ENTRY_DATA( importing ES_DATA = ls_requst_input_data ).
ls_table-ID = ls_requst_input_data-ID .
ls_table-name = ls_requst_input_data-NAME .
ls_table-PHONE = ls_requst_input_data-PHONE.
ls_table-ADDRESS = ls_requst_input_data-ADDRESS .
INSERT ZTEST_CURD_TABLE FROM ls_table .
IF sy-SUBRC eq 0 .
ER_ENTITY = ls_requst_input_data .
ENDIF.
UPDATE: ETPERSONSET_UPDATE_ENTITY
DATA: LS_KEY TYPE /IWBEP/S_MGW_NAME_VALUE_PAIR ,
LV_ID TYPE /IWBEP/S_MGW_NAME_VALUE_PAIR-VALUE,
ls_requst_input_data TYPE ZCL_ZTRAINING_DEMO_mpc=>TS_ETPERSON ,
ls_table TYPE ZTEST_CURD_TABLE .
CLEAR: LS_KEY , ls_table.
READ TABLE IT_KEY_TAB INTO LS_KEY WITH KEY NAME = 'Id' .
LV_ID = LS_KEY-VALUE.
IF LV_ID is NOT INITIAL.
io_data_provider->READ_ENTRY_DATA( importing ES_DATA = ls_requst_input_data ).
UPDATE ZTEST_CURD_TABLE SET ID = ls_requst_input_data-ID
NAME = ls_requst_input_data-NAME
PHONE = ls_requst_input_data-PHONE
ADDRESS = ls_requst_input_data-ADDRESS
WHERE ID = LV_ID .
IF SY-SUBRC EQ 0 .
ER_ENTITY = ls_requst_input_data .
ENDIF.
ENDIF.
READ:ETPERSONSET_GET_ENTITY
DATA: LS_KEY TYPE /IWBEP/S_MGW_NAME_VALUE_PAIR ,
LV_VALUE TYPE /IWBEP/S_MGW_NAME_VALUE_PAIR-VALUE.
CLEAR LS_KEY .
READ TABLE IT_KEY_TAB INTO LS_KEY WITH KEY NAME = 'Id' .
LV_VALUE = LS_KEY-VALUE.
IF LV_VALUE is NOT INITIAL.
SELECT SINGLE * FROM ZTEST_CURD_TABLE
INTO CORRESPONDING FIELDS OF er_entity
WHERE ID = LV_VALUE.
ENDIF.
SEARCH:ETPERSONSET_GET_ENTITYSET
SELECT *
INTO CORRESPONDING FIELDS OF TABLE ET_ENTITYSET
FROM ZTEST_CURD_TABLE .
DELETE:ETPERSONSET_DELETE_ENTITY
DATA: LS_KEY TYPE /IWBEP/S_MGW_NAME_VALUE_PAIR ,
LV_ID TYPE /IWBEP/S_MGW_NAME_VALUE_PAIR-VALUE.
DATA LV_FLAG TYPE C .
CLEAR LS_KEY .
READ TABLE IT_KEY_TAB INTO LS_KEY WITH KEY NAME = 'Id' .
LV_ID = LS_KEY-VALUE.
CHECK LV_ID IS NOT INITIAL .
DELETE FROM ZTEST_CURD_TABLE WHERE ID = LV_ID .
IF SY-SUBRC NE 0.
LV_FLAG = 'X'.
ENDIF.
IF LV_FLAG EQ 'X'.
ROLLBACK WORK .
MESSAGE 'DELETE DATA FAILE' TYPE 'E' .
ELSE.
COMMIT WORK .
ENDIF.
测试:
T-CODE: /IWFND/MAINT_SERVICE 打开SAP Gateway客户端,找到对应的服务
查询测试:HTTP Method :GET,点击EntitySets,选择创建好的EntitySets,点击执行
返回 status-code为200,测试成功,如果在Request URI后加上显示格式/?$format=json,数据会以JSON的格式显示
读取测试:HTTP Method :GET,更改Request URI ,点击执行
返回 status_code为200,测试成功
创建测试:先执行读取操作,然后点击 USE AS Request
复制了Requestrian后改掉生成的主键以及其他信息,修改Request URI ,HTTP Method 改成POST,点击Execute
进入调试的外部断点
返回status_code:201 ,~status_reason : Created
查看底表
更新测试:(005数据为例)更新与创建比较类似,HTTP Method 改成PUT,点击Execute
返回status_code:204 ,~status_reason No Content
重新读取 ‘005’这条数据,地址已经更改成功,~status_code 200 ,~status_reason OK
删除测试: ‘005‘为例 ,HTTP Method 改成DELETE,点击Execute,~status_code 204 ,~status_reason No Content,删除成功
重新读取 ‘005’这条数据,~status_code 404 ,~status_reason Not Found,读取失败已删除
都完成测试后,这个服务就没有问题了