Создание REST (HTTP) клиента на ABAP

Первое что нам нужно сделать это создать HTTP соединение, чтобы это сделать вызываем транзакцию sm59 ,в транзакции нажимаем кнопку создание нового соединения

sm59_step_1_1.png

Далее создаем новое соединение и указываем следующие параметры:

  • RFC-адрес:ZCBR_TEST -Этот адрес мы будем указывать в abap программе
  • Тип соединения:G - Тип G означает что мы создаем HTTP соединение
  • Описание 1:На ваше усмотрение
  • Целевой хост:Тут указываем домен rest сервиса
  • ПрефПути:Тут указываем путь rest сервиса на указанном домене

sm59_step_2.png

Далее сохраняете соединение, и после чего можете тестировать нажав на кнопку Тест соеденения.
sm_59_step3.png

Если тестирование прошло успешно ,то можно создавать программу, ниже код программы которая вызывает созданное соединение и записывает результат во внутреннею таблицу в виде xml файла

  1. *&---------------------------------------------------------------------*
  2. *& Report Z_CBR_TEST
  3. *&
  4. *&---------------------------------------------------------------------*
  5. *&
  6. *&
  7. *&---------------------------------------------------------------------*
  8.  
  9. REPORT Z_CBR_TEST.
  10.  
  11. DATA: http_dest TYPE rfcdest VALUE 'ZCBR_TEST',"Тут указываем название созданного ранее http соединение в sm59
  12. client TYPE REF TO if_http_client,
  13. request TYPE REF TO if_http_request,
  14. rc TYPE sy-subrc,
  15. http_rc TYPE sy-subrc,
  16. xml_xstring TYPE xstring.
  17.  
  18. TYPES : BEGIN OF TY_TEXT,
  19. TEXT_FIELD(10000) TYPE C,
  20. END OF TY_TEXT.
  21.  
  22. TYPES : BEGIN OF TY_BINARY,
  23. BINARY_FIELD(10000) TYPE C,
  24. END OF TY_BINARY.
  25.  
  26. DATA : LV_XSTRING type XSTRING.
  27. DATA : LT_BINARY type table of TY_BINARY with header line.
  28. DATA : LT_TEXT type table of TY_TEXT with header line.
  29. DATA : XML_REQUEST type table of TY_TEXT with header line.
  30. DATA : T_XML_REQUEST type table of TY_TEXT with header line.
  31.  
  32. DATA:rest_table OCCURS 0 WITH HEADER LINE.
  33.  
  34. cl_http_client=>create_by_destination( EXPORTING
  35. destination = http_dest IMPORTING client = client ).
  36. request = client->request.
  37.  
  38. CALL METHOD client->request->set_method(
  39. if_http_request=>co_request_method_get ).
  40.  
  41.  
  42. CALL METHOD request->SET_FORM_FIELD
  43. EXPORTING
  44. NAME = 'date_req'"Тут указваем пареметр запроса
  45. VALUE = '07/08/2012'."Тут указываем значение параметра
  46.  
  47. *Параметров может быть несколько,Например:
  48. *
  49. *CALL METHOD request->SET_FORM_FIELD
  50. * EXPORTING
  51. * NAME = 'param1'
  52. * VALUE = 'value1'.
  53. *
  54. *
  55. *CALL METHOD request->SET_FORM_FIELD
  56. * EXPORTING
  57. * NAME = 'param2'
  58. * VALUE = 'value2'.
  59.  
  60. CALL METHOD client->send
  61. EXCEPTIONS
  62. http_communication_failure = 1
  63. http_invalid_state = 2
  64. http_processing_failed = 3
  65. http_invalid_timeout = 4
  66. OTHERS = 5.
  67.  
  68. IF sy-subrc <> 0.
  69.  
  70.  
  71. CALL METHOD client->receive
  72. EXCEPTIONS
  73. http_communication_failure = 1
  74. http_invalid_state = 2
  75. http_processing_failed = 3
  76. OTHERS = 4.
  77. rc = sy-subrc.
  78.  
  79. IF rc = 0.
  80. client->response->get_status( IMPORTING code = http_rc ).
  81. IF http_rc <> 200.
  82. CLEAR: xml_xstring.
  83. xml_xstring = client->response->get_data( ).
  84.  
  85.  
  86. client->close( ).
  87.  
  88. CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
  89. EXPORTING
  90. BUFFER = XML_xstring
  91. BINARY_TAB = LT_BINARY.
  92.  
  93.  
  94. CALL FUNCTION 'SCMS_BINARY_TO_TEXT'
  95. EXPORTING
  96. INPUT_LENGTH = 100000
  97. WRAP_LINES = 'X'
  98. ENCODING = '1504'
  99. BINARY_TAB = LT_BINARY
  100. TEXT_TAB = T_XML_REQUEST."В эту таблицу будет записан результат выполнения запроса , в нашем случаем это будет xml
  101.  
  102.  
  103. IF SY-SUBRC <> 0.
  104. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
  105. * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

В отладчике вы можете посмотреть содержимое таблицы:

sm59_step_4.png
Примечание:Пример чтения xml файлов вы можете найти вот по этой ссылки

Комментарии