SAP直发数据到外围系统
** gv_json DATA 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 . * 返回的MEAASGE DATA: 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 ztpm002 WHERE progname = 'ZPP_SAP2MES_FH' AND zsysid = z_sysid AND sys_detail = 'MES'. CONCATENATE z_url z_url1 INTO z_url. CHECK z_url IS NOT INITIAL. "创建客户端请求 CALL METHOD cl_http_client=>create_by_url EXPORTING url = z_url IMPORTING client = http_client. http_client->propertytype_logon_popup = http_client->co_enabled . CALL METHOD http_client->request->set_header_field EXPORTING name = 'CONTENT-TYPE' value = 'APPLICATION/JSON'. CALL METHOD http_client->request->set_method( 'POST' )."PUT "设置待传输内容 CALL METHOD http_client->request->set_cdata EXPORTING data = gv_json offset = 0 length = z_len. "发送请求 CALL METHOD http_client->send EXCEPTIONS http_communication_failure = 1 http_invalid_state = 2 http_invalid_timeout = 4 http_processing_failed = 3 OTHERS = 5. IF sy-subrc <> 0 . http_client->get_last_error( IMPORTING message = lv_msg ). ENDIF. "读取远程服务返回的处理过结果。 CALL METHOD http_client->receive EXCEPTIONS http_communication_failure = 1 http_invalid_state = 2 http_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_return IMPORTING 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

浙公网安备 33010602011771号