Skip to Content
Technical Articles
Author's profile photo Ujjwal Singh

Exploring/Understanding Gateway Service Builder (SEGW)

Introduction

Open Data Service (ODATA Service) is an Open Protocol to share data. ODATA will let client access information exposed by any data source. Even a simple web browser can access data through ODATA Service. It will use well know technologies like HTTP, JSON etc.

ODATA Service can be used freely without license or Contract. It is also extensible which allows to add data types from ABAP Dictionary.

SEGW is the transaction to build a service in SAP.  Building Service involves several steps and here in this document we will understand all the segments available or appear when we generate a service which is later used to generate ODATA.

Below segments can be seen when we are creating a project in SEGW.

Entity Types:

It is like structure or table type which we create in our ABAP reports.

Properties and Navigation Properties comes under this only, that hold name of columns or fields and the connection respectively.

Entity Sets:   

It is table which we create in our reports by giving reference to the structure and this will hold physical value like other tables. e.g type standard table of (ref. to a structure).

Navigation: 

Define connection between one entity to another. Remember this only defines the connection/path.

Association: 

This defines the relation between two entity set for which path is defined.

Note:

Navigation helps in defining the connection/path and Association defines what would be the relation like 1:1, 1: N, N: 1 or N: N.

Association Set:

This comes in picture when we have to perform operation like Joining or need different combination of data from all entity set. e.g. If there is table inside table then that can be defined here.

Service Implementation: 

This tells us about the services that can be performed with the entity.

Under Service Implementation node following two GetEntity (Read) and GetEntitySet (Query) can be found along with Create, Delete and Update.

GetEntity: To read one record of data i.e. record specific to an entry.

This is like SELECT SINGLE in our ABAP Report

GetEntitySet: To read more than one record.

This is similar to SELECT *

Runtime Artifacts: This node has following 6 sections.

DPC (Data Provider Class) :

Original codes that gets generated after the project is registered (register is similar to activate in our report programs) are available here in the DPC section.

DPC_EXT (DPC Extension) :

DPC is extended here, all custom logics are added here in DPC_EXT section.

MPC (Model Provider Class) : Table structures can be changed at runtime.

e.g. If header has 40 columns but at runtime only 20 needs to be displayed.

another example, if we need to change the data color to red blue or any.

MDL : Final model will be available in MDL.

SRV : 

Once Project is created and OData service is  registered a ‘Service Name’ will be generated that is hold by SRV.

While accessing this project from FIORI or UI5 application this service name will be used.

Service Maintenance: 

When project is generated then we can register or maintain the service from Service Maintenance.

Assigned Tags

      6 Comments
      You must be Logged on to comment or reply to a post.
      Author's profile photo Michelle Crapo
      Michelle Crapo

      Nice recap!  I like that I can use this as a index and quickly find what section I'm looking for - read a bit about it.  It would also provide hints to get to some in depth information.  It would be very cool if you could follow up with some blogs on what you have used this for and the steps you took to work out that requirement.  But I know - time is always an issue.

      I mainly use SEGW for PDF forms.  What's interesting in those is you extend and redefine.    I did a very quick search for the PDF Forms and here is another nice blog to read.

      Michelle

      Author's profile photo Ujjwal Singh
      Ujjwal Singh
      Blog Post Author

      Thank you Michelle.

      I will share the use cases for this, where I have implemented the same.

      Author's profile photo Prabhjot Bhatia
      Prabhjot Bhatia

      Hi Michelle Crapo ,

      It's nice to know that you are using SEGW for Adobe forms.

      Could you please confirm one thing if we can create a custom Adobe form using SEGW ?

      There is only one blog that you shared on that and it's also talk about enhancing a standard one.

      Please share some facts and tips to use this cool feature in Adobe forms.

      Thanks and regards,

      Prabhjot

      Author's profile photo Michelle Crapo
      Michelle Crapo

      Sure - this will be a long response.  This is for a new form:

      1. Go to SEGW - Click enter and enter the project you would like to open.  In your case you are probably creating a new project.
      2. Double click on your project and create all your Enitity types, associations, basically every thing under that tab.  Your runtime artifacts will be your classes - look at some that are already created on the system in the standard projects.  It will help a lot.  For the most part each entity will have 5 methods: Create, Delete, GetEntity, GetEntitySet and Update.  Form will use the GetEntity for headers and GetEntity set for item level or tables of data.
      3. Make sure the gateway service has all the fields needed in the form.
      4. Go to SE11 to add any new fields.
      5. Go to SEGW
        1. Select the properties for each entity.  Fill in the information.
      6. Check and then generate the project.
      7. Go to SE24 and change your classes/methods.
        1. Find your entities.
        2. Create the logic
      8. In SFP you create your new form.  You might have one that is close that you can create.  Make sure the name starts with ZZ1_
      9. Go to Fiori to maintain form templates.  You'll see your new form.
      10. Select the template and download the form. It will give you two files.  XSD and XDP
      11. Open Adobe LifeCycle Designer.
      12. Open the  XSD.
      13. Create a new data connection to your system.
      14. When done with your form click finish.
      15. Return to the Fiori Tile Maintain Form Templates.
      16. Click update and select your form.
      17. Use OPD to link the form to be printed.   If you have a custom program - don't worry about this step.

      I believe I have all the steps here.   At some point I'll try to write a blog with pictures.  I did a quick search and didn't really find one.

       

      Author's profile photo Prabhjot Bhatia
      Prabhjot Bhatia

      Thanks a lot for your input.

      Actually i was looking for this option " Adobe form using Fragments" on my On-Premise system.

      I know it's quite possible in cloud environment using Fiori tiles but just exploring if we can use this in any On-premise system or not.

      Author's profile photo Pooja Goel
      Pooja Goel

      Hi,

      Can you please explain how can we make changes at runtime?

       

      MPC (Model Provider Class): Table structures can be changed at runtime.

       

      e.g. If header has 40 columns but at runtime only 20 needs to be displayed.

      Any example to support this would be helpful. Can you please explain the difference in different types of Project Types

       

       

       

      Thanks

      Pooja