SAP调用外部Restful接口

前言

业务需求描述

需要调用外部的Restful接口传输SAP的数据。

二、代码示例

代码如下(示例):

REPORT ZTEST_CM001.
DATA: LEN         TYPE        I, "发送报文长度
      LEN_STRING  TYPE        STRING,
      URL         TYPE        STRING, "接口地址
      HTTP_CLIENT TYPE REF TO IF_HTTP_CLIENT, "http客户端
      POST_STRING TYPE        STRING,
      RESULT      TYPE        STRING.
DATA: IT_HEADER  TYPE TIHTTPNVP.
DATA:
  serializer TYPE REF TO cl_trex_json_serializer,
  lv_json     TYPE string.
DATA: BEGIN OF ls_kv,
        username  TYPE string,
        password TYPE string,
      END OF ls_kv.
DATA:LT_KV LIKE TABLE OF LS_KV.
LS_KV-username = 'IGKg8elR/1tnTbdVEz92mtV0IwTn7JIYXlFZaoGZv+pQryfg3fJM/ggjAt3s3hqZKakqRe+ULj7Mmu2rhgSxvnK2YM8PQaQqTo/urogMBaFEKnalLfWDdIGrE/F9yaaFT3cWP1f/HL6T70PuhJhr4/h4/QH7fiO5+Y+13JOBxMQ='.
ls_kv-password = 'Y57KClQ9AcDEQPgjBIshNFbrFd03dlzdbUn7kLyJ4tTjoRDuqAZ2Zj6mbX505bw+uO0148OQrGOWEnlYEAgM+gbs244UagqXn3NkH/y8v3NW6J0ZkoiZBd1JwHLf/AA33fD4aUjkd7JTZaZw3a5a4Dgpbyk6x3iJzSQKGSlaL9I='.
CREATE OBJECT serializer
  EXPORTING
    data = ls_kv.

serializer->serialize( ).

lv_json = serializer->get_data( ).
START-OF-SELECTION.
  URL = 'https://www.bidding.csg.cn:8080/api/WZGYL/scp-supplier-erp/auth/get_access_token'.
  "'http://10.X.X.X:8081/api/test/gettest'.

  "创建http客户端
  CALL METHOD CL_HTTP_CLIENT=>CREATE_BY_URL
    EXPORTING
      URL                = URL
    IMPORTING
      CLIENT             = HTTP_CLIENT
    EXCEPTIONS
      ARGUMENT_NOT_FOUND = 1
      PLUGIN_NOT_ACTIVE  = 2
      INTERNAL_ERROR     = 3
      OTHERS             = 4.
  "设定传输请求内容格式以及编码格式
  HTTP_CLIENT->REQUEST->SET_CONTENT_TYPE( CONTENT_TYPE = 'application/json; charset=utf-8' ).
  "设置http method 为Post
  HTTP_CLIENT->REQUEST->SET_METHOD( IF_HTTP_REQUEST=>CO_REQUEST_METHOD_POST ).
  "IF_HTTP_ENTITY~CO_REQUEST_METHOD_GET

  "设置待传输内容长度
  LEN = STRLEN( lv_json ).
  "设置调用方法
  CALL METHOD HTTP_CLIENT->REQUEST->SET_header_FIELD
    EXPORTING
      NAME  = 'sign'
      VALUE = 'nL4P52yTnkiT7pV5ZxpA0t4/d8iD02/SrWrXJM4Cktk='.
  "设置传入字符串
  CALL METHOD HTTP_CLIENT->REQUEST->SET_CDATA
    EXPORTING
      DATA   = lv_json
      OFFSET = 0
      LENGTH = LEN.
  "发送
  CALL METHOD HTTP_CLIENT->SEND
    EXCEPTIONS
      HTTP_COMMUNICATION_FAILURE = 1
      HTTP_INVALID_STATE         = 2
      HTTP_PROCESSING_FAILED     = 3
      HTTP_INVALID_TIMEOUT       = 4
      OTHERS                     = 5.

  "接收
  CALL METHOD HTTP_CLIENT->RECEIVE
    EXCEPTIONS
      HTTP_COMMUNICATION_FAILURE = 1
      HTTP_INVALID_STATE         = 2
      HTTP_PROCESSING_FAILED     = 3.
  IF sy-subrc = 0.

  ENDIF.
  "提取返回字符串
  RESULT = HTTP_CLIENT->RESPONSE->GET_CDATA( ).
  "将字符串中的回车符替换,否则abap将会识别为#
  REPLACE ALL OCCURRENCES OF REGEX '\n' IN RESULT WITH ''.
  "获取接口返回的数据
*  RESULT = HTTP_CLIENT->RESPONSE->GET_CDATA( ).

  WRITE: RESULT.
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐