SAP使用HTTP请求网络放行

复制代码
*&---------------------------------------------------------------------*
*& Report ZHF_TEST4
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zhf_test4.

DATA ls_res TYPE zsfi0007b.

PERFORM frm_get_kdmat USING ls_res.

BREAK-POINT.

*&---------------------------------------------------------------------*
*& Form FRM_GET_KDMAT
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
FORM frm_get_kdmat USING p_ls_res TYPE zsfi0007b.


  DATA:lv_out_json  TYPE string,
       lv_resp_json TYPE string.
  DATA:lv_error   TYPE c,     "推送处理状态
       lv_message TYPE string.

*OUT_JSON
  TYPES: BEGIN OF ty_out_json,
           odn       TYPE likp-vbeln,     ""ODN单号
           reserver0 TYPE lips-posnr,     ""ODN项次
         END OF ty_out_json.
  DATA:lt_out_json TYPE TABLE OF ty_out_json,
       ls_out_json TYPE ty_out_json.

  lt_out_json = VALUE #(
  ( odn = '8100083168'  reserver0 = '10' )
  ).
  READ TABLE lt_out_json INTO ls_out_json INDEX 1.


  "转换成json格式
  "http://blog.chinaunix.net/uid-571885-id-5055553.html
  "compress = abap_true:Skip empty elements
  lv_out_json = /ui2/cl_json=>serialize( data = ls_out_json
                                         compress = abap_false
                                         pretty_name = /ui2/cl_json=>pretty_mode-none "全大写
                                        ).

*调用接口推送 设置HTTP接口地址
  DATA lv_oms_url TYPE string.

  SELECT SINGLE url
  INTO lv_oms_url
  FROM ztcm001
  WHERE zinfname = 'ZSDI0201_EDI'.

  lv_oms_url = 'https://luxcase-ica.casetekcorp.com:8082/api/iscm/iscmSapOdnApi'.

  IF lv_oms_url IS INITIAL.
    p_ls_res-mtype = 'E'.
    MESSAGE s053(fdt_hrf) INTO lv_message."URL 为空
    p_ls_res-msg = lv_message.
    RETURN.
  ENDIF.


* Call Http Porxy object
  DATA: lo_http_client TYPE REF TO if_http_client,
        lv_service     TYPE string.      "调用地址

  lv_service = lv_oms_url.

  "创建客户端请求
  CALL METHOD cl_http_client=>create_by_url
    EXPORTING
      url                = lv_service
    IMPORTING
      client             = lo_http_client
    EXCEPTIONS
      argument_not_found = 1
      plugin_not_active  = 2
      internal_error     = 3
      OTHERS             = 4.
  IF sy-subrc NE 0.
    MESSAGE ID sy-msgid TYPE sy-msgty
        NUMBER sy-msgno
          WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4
          INTO lv_message.

    p_ls_res-mtype = 'E'.
    p_ls_res-msg = lv_message.
    RETURN.
  ENDIF.


  "跳过登录提示,匿名访问
  lo_http_client->propertytype_logon_popup = lo_http_client->co_disabled.

  "设定传输请求内容格式以及编码格式
  CALL METHOD lo_http_client->request->set_header_field
    EXPORTING
      name  = 'Content-Type'
      value = 'application/JSON'.

  "设定调用服务 post
  lo_http_client->request->set_method( if_http_request=>co_request_method_post ).

  "设置待传输内容
  DATA lv_len TYPE i.
  lv_len = strlen( lv_out_json ).

  CALL METHOD lo_http_client->request->set_cdata
    EXPORTING
      data   = lv_out_json
      offset = 0
      length = lv_len.

*-Respon 返回 数据结构

  TYPES: BEGIN OF ty_data,
           sales_no             TYPE likp-vbeln,                          ""ODN单号
           reserver0            TYPE lips-posnr,                          ""ODN项次
           item_code            TYPE lips-matnr,                          ""交货料号
           customer_part_number TYPE vbap-kdmat,                          ""客户料号
         END OF ty_data.
  TYPES:ty_t_data TYPE STANDARD TABLE OF ty_data WITH DEFAULT KEY.

  TYPES: BEGIN OF typ_respon_json,
           code(3)  TYPE c,
           msg(255) TYPE c,
           data     TYPE ty_t_data,
         END OF typ_respon_json.

  DATA: ls_json_respon TYPE typ_respon_json.

  "发送请求
  lo_http_client->send(
    EXCEPTIONS
      http_communication_failure = 1
      http_invalid_state         = 2 ).

  IF sy-subrc NE 0.
    "操作失败,获取失败原因
    lo_http_client->get_last_error(
      IMPORTING
        message = lv_message ).

    p_ls_res-mtype = 'E'.
    p_ls_res-msg = lv_message.
    RETURN.
  ENDIF.

  "读取远程服务返回的处理过结果。
  DATA lv_respon_json TYPE string.      "结果返回报文

  lo_http_client->receive(
    EXCEPTIONS
      http_communication_failure = 1
      http_invalid_state         = 2
      http_processing_failed     = 3 ).

  IF sy-subrc NE 0 .
    lo_http_client->get_last_error(
      IMPORTING
        message = lv_message ).

    p_ls_res-mtype = 'E'.
    p_ls_res-msg = lv_message.
    RETURN.
  ELSE.
    "读取返回内容
    lv_respon_json = lo_http_client->response->get_cdata( ).
  ENDIF.


  IF lv_error IS INITIAL.
    IF lv_respon_json IS NOT INITIAL."解析 Json字符串
      /ui2/cl_json=>deserialize(
        EXPORTING
          json = lv_respon_json
        CHANGING
          data = ls_json_respon ).

    ENDIF.
  ENDIF.

ENDFORM.

提示错误

failed: NIECONN_REFUSED(-10)

OS01

申请网络放行,需要提供SAP的网络掩码XX.XX.XX.0/24,目标IP,目标端口号

相关推荐
摇滚侠3 小时前
《On Java 中文版 基础卷》阅读笔记 实现隐藏 12
java·数据库·笔记
silvamux_5 小时前
10款模型写种草笔记:可发布性、返工来源与成本数据缺口复盘
java·数据库·笔记
蒸蒸yyyyzwd6 小时前
kafka、redis、mysql不熟悉问题总结
笔记·八股
hgy89696 小时前
深度学习(小白笔记)——迁徙
人工智能·笔记·深度学习
摇滚侠6 小时前
《On Java 中文版 基础卷》阅读笔记 实现隐藏 11
java·笔记·python
前进的李工9 小时前
Agent 学习笔记 02:Harness 与工作流怎么理解
笔记·学习·agent·工作流·harness
海鸥-w11 小时前
数据库冗余字段设计笔记
java·数据库·笔记·oracle
滴啦嘟啦哒11 小时前
【具身笔记】【原理探究】一、对PI05源码的实践笔记
笔记·python·vla·具身
览讯冷却13 小时前
冷却塔噪声的健康危害与法规要求的技术梳理
经验分享·笔记·科技·其他·百度·制造·业界资讯
Dory_Youth14 小时前
电脑的搜索功能不能用,一搜就黑屏闪退
运维·笔记