Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

How to resolve this ICM_HTTP_CONNECTION_FAILED?

Former Member
0 Kudos

Hi Experts,

I am new to ICF framework.

I need to captured all the data information from WEB site( http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml ).

for this i have written in ABAP program(SE38) using IF_HTTP_CLENT.

1. CLIENT->SEND request sending is fine. but problem in receiving, i got this error ICM_HTTP_CONNECTION_FAILED.

2. if i missed any technical settings please let me know.

i have written below code.

please check and let me know.

*&---------------------------------------------------------------------*

*& Report  YSAT_WEBSERVICE

*&

*&---------------------------------------------------------------------*

*&

*&

*&---------------------------------------------------------------------*

REPORT YSAT_WEBSERVICE.

TYPE-POOLS: abap,ixml .

CLASS cl_ixml DEFINITION LOAD.

CONSTANTS: c_url TYPE string VALUE 'http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml' .

*----------------------------------------------------------------------*

*----------------------------------------------------------------------*

TYPES: BEGIN OF tp_alv_data_1 .

TYPES: time        TYPE datum_curc ,

        currency    TYPE waers_curc ,

        rate        TYPE p DECIMALS 5 .

TYPES: END OF tp_alv_data_1 .

*

TYPES: tp_alv_data_1_tab TYPE STANDARD TABLE OF tp_alv_data_1  .

*----------------------------------------------------------------------*

*----------------------------------------------------------------------*

SELECTION-SCREEN BEGIN OF BLOCK block04 WITH FRAME .

PARAMETERS: p_url TYPE alk_string NO-DISPLAY .

SELECTION-SCREEN COMMENT /1(79) h_url ..

SELECTION-SCREEN SKIP .

PARAMETERS: p_host TYPE alk_string .

PARAMETERS: p_port TYPE alk_string .

SELECTION-SCREEN SKIP .

PARAMETERS: p_debug TYPE debug_flg .

SELECTION-SCREEN END OF BLOCK block04 .

*----------------------------------------------------------------------*

INITIALIZATION.

   PERFORM at_initialization .

AT SELECTION-SCREEN .

   PERFORM at_selection_screen_input .

START-OF-SELECTION .

   PERFORM at_start_of_selection .

*----------------------------------------------------------------------*

FORM at_initialization .

   p_url = c_url .

   h_url = c_url .

   DATA: it_seltexts TYPE TABLE OF rsseltexts .

   DATA: st_seltexts LIKE LINE OF it_seltexts .

   st_seltexts-name = 'P_URL' .

   st_seltexts-kind = 'P' .

   st_seltexts-text = 'URL'  .

   APPEND st_seltexts TO it_seltexts .

   st_seltexts-name = 'P_HOST' .

   st_seltexts-kind = 'P' .

   st_seltexts-text = 'Proxy host'  .

   APPEND st_seltexts TO it_seltexts .

   st_seltexts-name = 'P_PORT' .

   st_seltexts-kind = 'P' .

   st_seltexts-text = 'Proxy port'  .

   APPEND st_seltexts TO it_seltexts .

   CALL FUNCTION 'SELECTION_TEXTS_MODIFY'

     EXPORTING

       program                     = sy-cprog

     TABLES

       seltexts                    = it_seltexts

     EXCEPTIONS

       program_not_found           = 1

       program_cannot_be_generated = 2

       OTHERS                      = 3.

ENDFORM .                    "at_initialization

*----------------------------------------------------------------------*

FORM at_selection_screen_input .

   p_url = c_url .

ENDFORM .                    "at_selection_screen_input

*----------------------------------------------------------------------*

FORM at_start_of_selection .

   DATA: response_string TYPE xstring .

   PERFORM do_xml_fetch_1

     CHANGING

       response_string .

   DATA: it_alv_data_1 TYPE tp_alv_data_1_tab  .

   PERFORM do_xml_parse_1

     USING

       response_string

     CHANGING

       it_alv_data_1 .

   PERFORM display_salv_table

     CHANGING

       it_alv_data_1 .

ENDFORM .                    "at_start_of_selection

*----------------------------------------------------------------------*

FORM do_xml_fetch_1

   CHANGING

     response_string_2 TYPE xstring .

   DATA: client TYPE REF TO if_http_client .

   TRANSLATE p_url  TO LOWER CASE .

   TRANSLATE p_host TO LOWER CASE .

   TRANSLATE p_port TO LOWER CASE .

   CALL METHOD cl_http_client=>create_by_url

     EXPORTING

       url                = p_url

       proxy_host         = p_host

       proxy_service      = p_port

     IMPORTING

       client             = client

     EXCEPTIONS

       argument_not_found = 1

       plugin_not_active  = 2

       internal_error     = 3

       OTHERS             = 4.

   CHECK sy-subrc EQ 0 .

   CALL METHOD client->send

     EXCEPTIONS

       http_communication_failure = 1

       http_invalid_state         = 2.

   CHECK sy-subrc EQ 0 .

   CALL METHOD client->receive

     EXCEPTIONS

       http_communication_failure = 1

       http_invalid_state         = 2

       http_processing_failed     = 3.

   CHECK sy-subrc EQ 0 .

   DATA: response_string_1 TYPE string .

   response_string_1 = client->response->get_cdata( ).

   TRY.

       CALL METHOD cl_bcs_convert=>string_to_xstring

         EXPORTING

           iv_string  = response_string_1

         RECEIVING

           ev_xstring = response_string_2.

     CATCH cx_bcs .

   ENDTRY.

ENDFORM .                    "do_xml_fetch_1

*----------------------------------------------------------------------*

FORM do_xml_parse_1

   USING

     xml_string TYPE xstring

   CHANGING

     it_alv_data_1 TYPE tp_alv_data_1_tab .

   IF xml_string IS INITIAL .

     RETURN .

   ENDIF .

   DATA: ob_ixml TYPE REF TO if_ixml.

   ob_ixml = cl_ixml=>create( ).

   DATA: streamfactory TYPE REF TO if_ixml_stream_factory.

   streamfactory = ob_ixml->create_stream_factory( ).

   DATA: istream TYPE REF TO if_ixml_istream.

   istream  = streamfactory->create_istream_xstring( string = xml_string ).

   DATA: document TYPE REF TO if_ixml_document.

   document = ob_ixml->create_document( ) .

   DATA: parser TYPE REF TO if_ixml_parser.

   parser = ob_ixml->create_parser( stream_factory = streamfactory

                                   istream        = istream

                                   document       = document ).

   parser->parse( ).

   DATA: length TYPE i .

   DATA: index  TYPE i .

   DATA: nodes  TYPE REF TO if_ixml_node_collection.

   DATA: node   TYPE REF TO if_ixml_node .

   nodes = document->get_elements_by_tag_name( name = 'Cube' ).

   length = nodes->get_length( ) .

   WHILE index LT length .

     node = nodes->get_item( index ).

* Parse a node .

     PERFORM do_xml_parse_2

         USING

           node

         CHANGING

           it_alv_data_1  .

     index = index + 1.

   ENDWHILE.

ENDFORM .                    "do_xml_parse_1

*----------------------------------------------------------------------*

FORM do_xml_parse_2

   USING

     node_i TYPE REF TO if_ixml_node

   CHANGING

     it_alv_data_1 TYPE tp_alv_data_1_tab .

   STATICS: st_alv_data_1 LIKE LINE OF it_alv_data_1 .

   DATA: attributes TYPE REF TO if_ixml_named_node_map .

   DATA: attribute  TYPE REF TO if_ixml_attribute .

   attributes = node_i->get_attributes( ) .

   CHECK attributes IS NOT INITIAL.

   DATA: node TYPE REF TO if_ixml_node .

   DATA: index  TYPE i .

   DATA: length TYPE i .

   DATA: name   TYPE string .

   DATA: value  TYPE string .

   FIELD-SYMBOLS: <value> TYPE ANY .

   length = attributes->get_length( ) .

   WHILE index LT length .

     node = attributes->get_item( index ) .

     attribute ?= node->query_interface( ixml_iid_attribute ) .

     name  = attribute->get_name( ) .

     value = attribute->get_value( ) .

     IF p_debug EQ abap_true .

       WRITE: / , name , ' = ' , value .

     ENDIF .

     TRANSLATE name TO UPPER CASE .

     ASSIGN COMPONENT name OF STRUCTURE st_alv_data_1 TO <value> .

* If the fields name are the same we can use this approach

     IF sy-subrc EQ 0 .

       CASE name .

         WHEN 'TIME' .

           REPLACE ALL OCCURRENCES OF '-' IN value WITH ''.

       ENDCASE .

       <value> = value .

     ENDIF .

* Explicit mapping of fields

*        CASE name .

*          WHEN 'CURRENCY' .

*            st_alv_data_1-currency  = value .

*          WHEN 'RATE' .

*            st_alv_data_1-rate  = value .

*          WHEN 'TIME' .

*            st_alv_data_1-time = value .

*        ENDCASE .

     index = index + 1.

   ENDWHILE .

* Time to add a line ?

   IF st_alv_data_1-currency IS NOT INITIAL AND

      st_alv_data_1-rate     IS NOT INITIAL .

     APPEND st_alv_data_1 TO it_alv_data_1 .

     CLEAR: st_alv_data_1-currency,st_alv_data_1-rate .

   ENDIF .

ENDFORM .                    "do_xml_parse_2

*----------------------------------------------------------------------*

FORM display_salv_table

   CHANGING

     it_table TYPE table .

   DATA: ob_salv_table TYPE REF TO cl_salv_table .

   TRY.

       cl_salv_table=>factory( IMPORTING r_salv_table = ob_salv_table

       CHANGING t_table = it_table ) .

     CATCH cx_salv_msg .

   ENDTRY.

   DATA: ob_salv_columns TYPE REF TO cl_salv_columns_table .

   ob_salv_columns = ob_salv_table->get_columns( ) .

   DATA: it_column_ref TYPE salv_t_column_ref .

   FIELD-SYMBOLS: <st_column_ref> LIKE LINE OF it_column_ref .

   it_column_ref = ob_salv_columns->get( ) .

   DATA: st_dd04v TYPE dd04v .

   LOOP AT it_column_ref ASSIGNING <st_column_ref> .

* Get some headings...

     IF <st_column_ref>-columnname EQ 'RATE' .

       CALL FUNCTION 'DDIF_DTEL_GET'

         EXPORTING

           name          = 'UKURS_CURR'

           langu         = 'E'

         IMPORTING

           dd04v_wa      = st_dd04v

         EXCEPTIONS

           illegal_input = 1

           OTHERS        = 2.

       <st_column_ref>-r_column->set_short_text( value = st_dd04v-scrtext_s ) .

       <st_column_ref>-r_column->set_medium_text( value = st_dd04v-scrtext_m ) .

       <st_column_ref>-r_column->set_long_text( value = st_dd04v-scrtext_l ) .

     ENDIF .

   ENDLOOP .

   ob_salv_table->display( ) .

ENDFORM .                    "display_alv


Regards

Shankar B

1 REPLY 1

Former Member
0 Kudos

Hi,

Have u checked your external link on Soap UI to see if it is working correctly ?

İf you did this you can check your   " http services" configuration on SMICM transaction.

Actually  you can ask about configuration to your basis team.

best regards.