Simple Code to consume Web service using SAP
ABAP
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 '<' IN p_content WITH '<' .
REPLACE ALL OCCURRENCES OF '>' 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 .
In this code processing of XML string is done using FIND statement. SAP has introduced command CALL
TRANSFORMATION since Basis release 6.10 for XML processing. This command CALL TRANSFORMATION
process the whole XML string based on defined transformation and return it in variable/internal table.
Transformations can be defined using transaction SE80. Ok I am leaving this topic for next blog ;)