** gv_jsonDATA ztrexjson TYPE REF TO cl_trex_json_serializer.DATA ztrexjsonret TYPE REF TO zcl_trex_json_deserializer.DATA: http_client TYPE REF TO if_http_client .DATA: z_len TYPE i,z_sysid TYPE sysysid.* URL地址DATA: z_url TYPE string .DATA: z_url1 TYPE string .* 返回的MEAASGEDATA: z_return TYPE string,lv_msg TYPE string.DATA: lv_str TYPE char4 .CLEAR:gv_json,gv_msg,gt_send[].LOOP AT it_data INTO iw_data.ref_exit_zero:iw_data-MATNR.gs_send-material_Code = iw_data-matnr.gs_send-cCount = iw_data-menge.gs_send-material_Name = iw_data-maktx.CONCATENATE iw_data-budat+0(4) '-' iw_data-budat+4(2) '-' iw_data-budat+6(2) INTO gs_send-cDate.APPEND gs_send TO gt_send.CLEAR: gs_send,gv_msg.ENDLOOP.CHECK gt_send[] IS NOT INITIAL.gv_json = zcl_json=>serialize( data = gt_send[] compress = abap_true pretty_name = zcl_json=>pretty_mode-camel_case ).CHECK gv_json IS NOT INITIAL.CHECK gv_json IS NOT INITIAL.z_sysid = sy-sysid.z_len = STRLEN( gv_json ) .SELECT SINGLE zurl zurl1 INTO (z_url,z_url1) FROM ztpm002WHERE progname = 'ZPP_SAP2MES_FH' AND zsysid = z_sysidAND sys_detail = 'MES'.CONCATENATE z_url z_url1 INTO z_url.CHECK z_url IS NOT INITIAL."创建客户端请求CALL METHOD cl_http_client=>create_by_urlEXPORTINGurl = z_urlIMPORTINGclient = http_client.http_client->propertytype_logon_popup = http_client->co_enabled .CALL METHOD http_client->request->set_header_fieldEXPORTINGname = 'CONTENT-TYPE'value = 'APPLICATION/JSON'.CALL METHOD http_client->request->set_method( 'POST' )."PUT"设置待传输内容CALL METHOD http_client->request->set_cdataEXPORTINGdata = gv_jsonoffset = 0length = z_len."发送请求CALL METHOD http_client->sendEXCEPTIONShttp_communication_failure = 1http_invalid_state = 2http_invalid_timeout = 4http_processing_failed = 3OTHERS = 5.IF sy-subrc <> 0 .http_client->get_last_error( IMPORTING message = lv_msg ).ENDIF."读取远程服务返回的处理过结果。CALL METHOD http_client->receiveEXCEPTIONShttp_communication_failure = 1http_invalid_state = 2http_processing_failed = 3.IF sy-subrc <> 0 .http_client->get_last_error( IMPORTING message = lv_msg ).ENDIF.* 获取返回的数据z_return = http_client->response->get_cdata( ).CALL METHOD http_client->close.IF z_return IS NOT INITIAL AND z_return+0(1) = '{' .REPLACE ALL OCCURRENCES OF REGEX '"(\w+)"(\s*:\s*)'IN z_return WITH '$1$2'.CREATE OBJECT ztrexjsonret.CALL METHOD ztrexjsonret->deserialize(EXPORTING json = z_returnIMPORTING abap = gs_return ). * CLEAR:lw_return. * CALL METHOD ztrexjsonret->deserialize * EXPORTING * json = lo_output-rtn_msg * IMPORTING * abap = lw_return.ENDIF."写日志IF gs_return-success = '1'.LOOP AT it_data INTO iw_data.iw_data-status = 'S'.iw_data-RESULTDATA = '操作成功'.iw_data-zcdte = sy-datum.iw_data-zcime = sy-uzeit.iw_data-zcnme = sy-uname.MOVE-CORRESPONDING iw_data TO gs_ztpp072.APPEND gs_ztpp072 TO gt_ztpp072.MODIFY it_data FROM iw_data.ENDLOOP.ELSEIF gs_return-success = '0'.LOOP AT it_data INTO iw_data.iw_data-status = 'E'.iw_data-RESULTDATA = gs_return-msg.iw_data-zcdte = sy-datum.iw_data-zcime = sy-uzeit.iw_data-zcnme = sy-uname.MOVE-CORRESPONDING iw_data TO gs_ztpp072.APPEND gs_ztpp072 TO gt_ztpp072.MODIFY it_data FROM iw_data.ENDLOOP.ENDIF.IF gt_ztpp072[] IS NOT INITIAL.MODIFY ztpp072 FROM TABLE gt_ztpp072[].COMMIT WORK.ENDIF.
摘自:https://blog.csdn.net/beyond911/article/details/120613497