METHOD if_http_extension~handle_request.TYPES:BEGINOF parameter,name TYPE string,value TYPE string,ENDOF parameter.TYPES:BEGINOF ty_material,werks TYPE marc-werks, "工厂matnr TYPE mara-matnr, "物料maktx TYPE makt-maktx, "物料描述matkl TYPE mara-matkl, "物料组attyp TYPE mara-attyp, "物料类别ENDOF ty_material.DATA: lt_fields TYPE tihttpnvp,lv_header_query TYPE string,lv_data TYPE string,lv_html TYPE string.DATA: gt_material TYPETABLEOF ty_material.FIELD-SYMBOLS<fs_field>LIKELINEOF lt_fields.server->request->get_header_fields( "拿出请求头的部分CHANGINGfields = lt_fields).lv_data = server->request->if_http_entity~get_cdata(). "把请求体内BODY那部分给拿出来READTABLE lt_fieldsWITHKEY name ='~query_string'ASSIGNING<fs_field>."把请求头部分的参数拿出来,就是地址栏后面的参数IF sy-subrc EQ0.DATA: ls_parameter TYPE parameter,lt_parameter TYPETABLEOF parameter.DATA: lv_str TYPE string,lt_res TYPETABLEOF string.DATA:row TYPE i,row1 TYPE i.DATA: s_length TYPE i,s_rlength TYPE i.DATA: s_material TYPE string,gj_material TYPE string.DATA: s_matnr TYPE mara-matnr.SPLIT<fs_field>-value AT'&'INTOTABLE lt_res.LOOPAT lt_res INTODATA(ls_res).SEARCH ls_res FOR'='.IF sy-subrc =0.s_length =strlen( ls_res ).row = sy-fdpos.row1 = sy-fdpos +1.s_rlength = s_length - row1.IFls_res(row)='matnr'.s_matnr = ls_res+row1(s_rlength).ELSE.s_matnr =''.ENDIF.ENDIF.CLEAR ls_parameter.ENDLOOP.s_matnr =|{ s_matnr ALPHA=IN}|. "添加前导0row =strlen( s_matnr ). "计算总长度row1 = row -18. "计算需要左移的长度SHIFT s_matnr BY row1 PLACESLEFT. "向左移动:总长度 -18 的长度SELECTb~werks,a~matnr,c~maktx,a~matkl,a~attypFROM mara AS aLEFTJOIN marc AS b ON a~matnr = b~matnrLEFTJOIN makt AS c ON a~matnr = c~matnrWHERE a~matnr = @s_matnrINTOTABLE @gt_material."数据转成json格式CALLMETHODcl_fdt_json=>data_to_jsonEXPORTINGia_data = gt_materialRECEIVINGrv_json = gj_material.ENDIF.server->response->set_cdata(EXPORTINGdata = gj_material "将返回参数放在请求体返回).ENDMETHOD.