REPORT  zpw_webservice.

*&---------------------------------------------------------------------*
*&      Selection Screen
*&---------------------------------------------------------------------*
PARAMETERS : p_cnt TYPE t005t-landx .

*&---------------------------------------------------------------------*
*&      Types and Data
*&---------------------------------------------------------------------*
DATA:  http_client    TYPE REF TO if_http_client ,
       http_url       TYPE string                ,
       p_content      TYPE string                .

*&---------------------------------------------------------------------*
*&      Start of Selection
*&---------------------------------------------------------------------*
START-OF-SELECTION .

* Build the url string based on input
  CONCATENATE 'http://www.webservicex.net/globalweather.asmx'
  '/GetCitiesByCountry?CountryName='
  p_cnt
  INTO http_url .

* Creation of new IF_HTTP_Client object
  CALL METHOD cl_http_client=>create_by_url
    EXPORTING
      url                = http_url
    IMPORTING
      client             = http_client
    EXCEPTIONS
      argument_not_found = 1
      plugin_not_active  = 2
      internal_error     = 3
      OTHERS             = 4.

  http_client->request->set_header_field( name  = '~request_method'
  value = 'GET' ).
* Send the request
  http_client->send( ).

* Reterive the result
  CALL METHOD http_client->receive
    EXCEPTIONS
      http_communication_failure = 1
      http_invalid_state         = 2
      http_processing_failed     = 3
      OTHERS                     = 4.

  p_content = http_client->response->get_cdata( ).
  REPLACE  ALL OCCURRENCES OF '&lt;' IN p_content WITH '<' .
  REPLACE  ALL OCCURRENCES OF '&gt;' IN p_content WITH '>' .

*&---------------------------------------------------------------------*
*&      Processing string
*&---------------------------------------------------------------------*

  DATA : moff  TYPE syst-tabix ,
         moff1 TYPE syst-tabix ,
         len   TYPE syst-tabix .

  DO .
    FIND '<City>' IN SECTION OFFSET moff OF p_content IGNORING CASE MATCH OFFSET moff .
    IF sy-subrc = 0 .
      moff = moff + 6 .
      FIND '</City>' IN SECTION OFFSET moff OF p_content IGNORING CASE MATCH OFFSET moff1 .
      len = moff1 - moff .
      WRITE : / p_content+moff(len) .
    ELSE.
      EXIT.
    ENDIF.
  ENDDO .



Serkan AKKAVAK
Computer Engineer
ABAP Developer & SAP S/4 HANA Logistics Team Lead
Contact : serkurumsal@yandex.com