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 '<' 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 ;)
No comments:
Post a Comment