栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

SAP发送数据到外围系统接口

SAP发送数据到外围系统接口

文章目录
      • 1.Introduction
      • 2.code

1.Introduction

This is an interface .(data From sap to mes ). The process is that we convert data format(sap data to jason data and jason data to sap data). The outer system interface is restful(java)

2.code
** 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.
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/304603.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号