Sunday, December 1, 2013

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
  '/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 .

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 ;)



 

No comments:

Post a Comment