Technology Blogs by SAP
Learn how to extend and personalize SAP applications. Follow the SAP technology blog for insights into SAP BTP, ABAP, SAP Analytics Cloud, SAP HANA, and more.
cancel
Showing results for 
Search instead for 
Did you mean: 

                                OData Service – You must have heard the buzzword umpteen times. And, if that is so you also would be aware of all the benefits it boasts of – Ease of consumption, Industry standard, Open specification promise and many more.

                            The more important question, however, is how do you build one without going through the complexity or learning curve? Especially if you have worked with SAP Business Suite frameworks like GenIL / BOL, you already have the business logic wrapped in those Object Oriented APIs. While building your application you just want to access the business logic bundled in those APIs via an OData Service. Have you ever wondered, if it were possible to achieve this

ü  With least knowledge about OData specification

ü  Without the need to know, how and what to map between GenIL and OData

ü  And to top it all, without writing a single line of code

Sounds unbelievingly amazing, right? Well then, without much ado, let me show you how you can do it!

SAP NetWeaver Gateway Service Builder – Redefine GenIL Wizard

                                Our latest offering from SAP NetWeaver Gateway, “Service Builder” (transaction “SEGW”) comes loaded with capabilities wit respect to developing OData services for SAP Business Suite Data. Overall introduction to service builder is available at (http://scn.sap.com/community/netweaver-gateway/blog/2012/09/07/the-new-gateway-service-builder-how-t...).

                                In order to create an OData Service directly from a GenIL object, you have to use the wizard “Redefine -> GenIL Service” from Service Builder tool. You can locate it in the context menu of “Project -> Data Model -> Redefine”.

Pre-requisite:

GenIL Integration with Gateway requires the following software components:

1.       IW_GIL 100

2.       IW_BEP 200 SP4

3.       WEBCUIF 7.0 SP3(minimum release of WEBCUIF)

4.       IW_FND 250(Gateway Hub) SP3

NOTE:  Software components mentioned in point 1, 2 & 3 need to be deployed on the same system.

As you can see from the menu, in a similar fashion you can also generate an OData service directly from SPI framework (ABBIDs) or from BW (MDX and Easy Query). In this blog I will focus on GenIL.

Step 1 of Wizard: Select the GenIL component

                                I want to create an OData service for CRM Account.  In the first step of the wizard  I choose the GenIL component “SAMPLE” which contains Account object. An input value help lists all the GenIL components available locally in the system.

I choose Next.

Step 2 of Wizard: Generate OData service

                                Second step of the wizard prompts me to enter the Transport attributes and names for all runtime artifacts. I keep default name proposals derived from the project name and add service description.

When I choose next, in the background, the GenIL objects are transformed into corresponding OData artifacts. The metadata information is available in Model Provider Class whereas the runtime implementation is generated in Data Provider Class. This operation will consume some time. Model transformation is successful and in the next screen I see the OData model generated from SAMPLE GenIL component.

Step 3 of Wizard: Redefine the generated model

                                Details about the operations supported, mapping between GenIL and OData Model etc. can be found in the SAP Help Portal documentation.

              In my service I want to only show basic details of Account and the related OrderPartners. So, in the 3rd screen, I chose entity  Account from the entire tree. Also I have chosen association between Account and OrderPartner. I press Finish button.

A model gets created with selected entity, properties and associations. In addition the missing ends of association are also pulled in, in case they are not already selected. So even though I had chosen only Account, entity OrderPartner has also been added to the model along with its properties. Apart from this the related Entity Sets, Association Sets, Navigation Properties, Referential constraints are also added to the model.

               

In a nutshell, I provided minimum requirement in the form of Entity, Property and Association selection, whereas the tool programmatically created a complete OData model by calculating dependencies.

Step 4 (Optional): Redefine Names and Labels

                                Many a time the backend names which are automatically taken over to create Service are not very user friendly. In those cases developer can go ahead and change the name too. In addition  labels can also be added to the artifacts.

                                At the end of Step 3 of wizard as mentioned above the model is created in service builder project. However, all the artifacts are in read-only mode. In order to enable edit functionality on Name and Label, I select the appropriate cell, or the row, or multiple rows and choose the Redefine button  from toolbar at the top of mass edit view.

This will switch the selected cells to edit mode and I can enter a desirable name or label.

I can use the Undo button  to undo my changes. In addition, Undo Identical button   will switch the cells which did not undergo any change into read-only mode again. This is especially helpful in mass operations. I save my changes.

Step 5: Register Service

Now that I am done with my changes I need to register once more the service since it has been redefined. In order to do this I select the Generate button from the main menu on top of navigation tree.

I get a pop-up dialog with name proposal for redefined MPC/DPC classes.

I see if I do not need to retain the original service created in Step 2 I can go ahead with Overwrite Option.

 

However, in my case I want to retain the original service which contains all the GenIL objects as a parent OData service and have different projections of it. So I uncheck the Overwrite box and give a new service name. Next time, when I have to create another service with a different set of fields from the same GenIL component, I can directly do it via Redefine -> GW Service.

Step 6: Service Activation

The last step remaining in this development process is to activate the registered service in Gateway Hub system. To do this I expand the Service Maintenance node. I see the list of GW Hub systems connected. I choose the only available system and click Register button.

Once my service is registered successfully, I can see the traffic light green.

My service is now ready to execute. I call the browser to see all collections are returned successfully. THAT’S IT!!!

So you see, I did not write a single line of code, and yet created a full-fledged working service in few clicks.

Redefine Gateway Service Wizard

                                Sometimes you are not done with your complete selection in the first attempt. In that case you can go ahead and extend your current model by adding artifacts from the same GenIL Component using this wizard.

The items you had previously added appear disabled to let you know what is already in.

Other Redefine Options

                Apart from this there are two other options available for redefinition.

1.       OData services from SAP Service Provider Infrastructure (SPI) framework– All the steps are same as GenIL. Details about prerequisites, mapping and constraints can be found in SAP Help Portal documentation

2.       OData Services from SAP BW framework – Details about prerequisites, mapping and constraints can be found in SAP Help Portal documentation

10 Comments