Application Development Blog Posts
Learn and share on deeper, cross technology development topics such as integration and connectivity, automation, cloud extensibility, developing at scale, and security.
cancel
Showing results for 
Search instead for 
Did you mean: 
naresh_bammidi
Contributor

As you all aware of that creation of SOA (System oriented architecture) web service using FM. Now let's create a REST(Representational state transfer) web service which is getting much attention now a days.

Recently I have been given with a requirement to create a REST( Representational state transfer) web service which returns the sales order details in XML format.

Business requirement: Consumer want to get the details of sales order from the SAP by passing the sales order number as ID through URL.

What is REST ful web service?

It's a named resource which can be accessed using the URL containing the ID (In our case Sales order number ) of the resource in distributed environment.

Eg: http://eccehp4.myserver.com:8000/sap/bc/zrest_service/0000004969

With the help of SCN and Wiki documents I have created Web service as below.

Step1: Create a handler class which is having the business logic to get the sales order details

           Go to se24 enter the class name

Step 2: Now we need to implement the interface IF_HTTP_EXTENSION


You can see the method HANDLE_REQUEST from the interface IF_HTTP_EXTENSION.We will use this method in future to implement business logic.

Step 3:Write below code in the HANDLE_REQUEST method


Source code:

method IF_HTTP_EXTENSION~HANDLE_REQUEST.

  data:lv_path type string,

       lv_data type string,

       lt_data type table of string.

  types:begin of ty_head,

        VBELN type vbak-VBELN,

        KUNNR type vbak-KUNNR,

        VKORG type vbak-VKORG,

        end of ty_head.

  data:ls_head type ty_head,

       lt_list type table of BAPIORDERS,

       ls_list type BAPIORDERS,

       XML_OUT type string.

* get the request attributes

  lv_path = server->REQUEST->get_header_field( name = '~PATH_INFO' ).

  SHIFT lv_path LEFT BY 1 PLACES.

* Get the sales order details

  select single vbeln

                kunnr

                vkorg

           into ls_head

           from vbak

          where vbeln = lv_path.

* Convert the data to  XML format

  CALL TRANSFORMATION ID

               SOURCE TAB = ls_head

           RESULT XML XML_OUT

              OPTIONS XML_HEADER = 'WITHOUT_ENCODING'.

* Set the converted data to Browser

  server->response->set_cdata( data = XML_OUT ).

endmethod.

Step4: Go to transaction SICF and click on Execute button


Step 5: Create a child node under the services hierarchy by right click on the node. I have created services in the following path

Default host->SAP->bc

Step 6: Enter the service name click to continue


Added service will be under the respective hierarchy as below

Step 7: Double click on the service zrest_service then below screen will appear


Step 8: Go to Handler list tab and give the handler name which we created earlier as ZCL_SALES_ORDER_HANDLER

Step 9: Save and activate the service as below


Step 10: Now test the service


Step 11:Give sales order number in URL and click F5


Note: To debug the web service you have to put external break point in the method HANDLE_REQUEST

Reference Link :  Building Mash-Ups and simplifying Application Integration withRESTful Web Services in SAP ABAP

2 Comments