This blog explain how can we use CL_HTTP_CLIENT to call OData service in a target system. This can only be used for a simple OData serivce with minimal parameters.

CL_HTTP_CLIENT can be used  to perform the HTTP communication in ABAP.

There are two options to create an object of type CL_HTTP_CLIENT:

  1. Create by destination: A HTTP destination is pre-created in the SM59 transaction, where the information about the authentication and the service URI for the REST service access is stored.

    The factory method CL_HTTP_CLIENT=>CREATE_BY_DESTINATION is used in this case to instantiate the ABAP HTTP object.

  2. Create by URL: All required connection datails are specified on object construction, i.e. without any link to a destinat

    DATA: lo_http_client TYPE REF TO if_http_client,
                 lv_service TYPE string.
    *-------------------------------------------------------------------------------*
    ***This service returns the count of the entityset
    
    lv_service = 'http://server.company.com:port/sap/opu/odata/SAP/*SRV/*Set/$count
    
    *** Use CL_HTTP_CLIENT to consume the OData service using the method "create_by_url"
    cl_http_client=>create_by_url(
         EXPORTING
           url                = lv_service
         IMPORTING
           client             = lo_http_client
         EXCEPTIONS
           argument_not_found = 1
           plugin_not_active  = 2
           internal_error     = 3
           OTHERS             = 4 ).
     
    *** Call the following method to autheticate the user/password and client for the remote connection.
    CALL METHOD LO_HTTP_CLIENT->AUTHENTICATE(
       EXPORTING
         CLIENT = '200'
         USERNAME = '*'
         PASSWORD = '*'
         LANGUAGE = 'E'
         )
    **** Send the request
       lo_http_client->send(
         EXCEPTIONS
           http_communication_failure = 1
           http_invalid_state         = 2 ).
    
    *** Receive the respose
      lo_http_client->receive(
         EXCEPTIONS
           http_communication_failure = 1
           http_invalid_state         = 2
           http_processing_failed     = 3 ).
    
    *** Read the result 
      CLEAR lv_result .
       lv_result = lo_http_client->response->get_cdata( ).
     write: lv_result.
    
    
    
    
    
    

    ion.

    The factory method CL_HTTP_CLIENT=>CREATE_BY_URL is used to in this case to instantiate the ABAP HTTP object.

In the above example we are returning a number.

Disadvantage of this approach is that it can be used with the parameters that can be passed in the URL as input.

To report this post you need to login first.

Be the first to leave a comment

You must be Logged on to comment or reply to a post.

Leave a Reply