In this blog, I will tell how to create basic annotation, odata service which will hold the annotations and then consume it into a smart template application.
Creating service to read data form table , import and map annotation libarary
Step 1 : Open any system on your logon.
Use tCode se80 to open your object.
now see the fields of table. it will tell the data type we will use later. let say our table is ZEMPLOYEE (where Z is for customer name spacing).
Now we have table with four fields.
We need something that will link our table with odata service and here comes the role of SERVICE GATEWAY. (we use tcode segw to work on service gateways).
When we work on service gateways we define the MPC(data model definition) which defines our data fields. entities, their properties and relations.
So now we are going to define the model defination.
In our work bench use tcode segw to start working on service gateways.
2. Create a new project with following fields
choose the package , For me its $TMP for temporaty package.
So we created a project. Cogo 🙂
Let’s give definition to it.
follow the picture now.
steps : go-to Data model
- create an Entry type
- We give the entry set name. this will be used later as setter to receive data,
- In ABAP structure name choose your table ( here i will use ZEMPLOYEE ).
- Once the Entry type is set . You can see its child. Double click the property under entryType
- The insert row in yellow will be used to define the properties.
- The name will be name you give to particular column .
- ABAP field name will be field name from your table.
- complete all the fields.
Now we will import the annotation library ( we call it vocabulary).
- Choose the vocabulary as : “SAP UI ANNOTATIONS” this is for the UI definitions.
- Now comes the part where we need to take care and keep in mind what we are going to make.
- In our entry type Expand it and find annotations folder.
- double click on it . we can see the following fields. ( lets assume we are going to create a table)
- For each collection we will choose its type and value.
- Type will tell what kind of field it is, value will specify the name we assign (it will appear as column name , value will be linked to our entry types-> property.
- now the mapping will be like the following picture
- after all the mappings our line item will look like this.
So with this our annotation definition is completed.
Now we need to do something so that our data definition starts getting data from table and show somewhere along with the annotation we gave.
The time has come when we will register whatever we made as a service. We are going to register it and guess what, after registering we will be having our odata service.
- we will create the runtime artificat. which will have model defination and service defination
- Now we wll register our service :
- the odata service information can be choosed now.
- Well we are done here . Click on maintain to maintain the service in our gateway
- A new window will open , choose the SAP gateway client form left side corner.
- It will lead to following tab. if we execute it we can see our annotations. lets see how it looks like. (Note : we only defined anntotations for our table , not yet got the data for our odata service).
- What happens when we try to get our entry type. well we have’nt done anything to get data from table . it is going to throw some error let’s see that.
We did the data definition in MPC (the previous steps) . But have not done anything to fetch data from table , so we are getting this error.
To read data we need to implement data provider class (DPC).
the following steps will do this for us.
- we have our runtime artificates right. open it and double click on _DPC_EXT .
- press yes . we are going to implement our data provider class to get data from the table.
- We will redifine our dpc to read data (note we will ne changing the get entity set to read all data, for specific data we can choose get entity.
- now we need wo write code to read data from table and pass to entity set . I used the following code.
DATA lt_zemployeeset TYPE TABLE OF zemployee. SELECT * UP TO 10 ROWS FROM zemployee INTO TABLE lt_zemployeeset. APPEND LINES OF lt_zemployeeset TO et_entityset.
- the code snippet is like this now :
- Let’s save and acitvate it.
Hey we did it. we have data in our odata service because we defined the data provider class.
Let’s go back to our service gateway and check the service…
hurrey we got data in our service without any error.
Now the time to see what we did to convert into a result. We will create our first smart template project.
- open webide
- create a new project
- choose the list report application
- give names .
- choose “com” as application hierarchy.
- choose the data connection .
- select the selected service metadata.
- choose the odata collection and you are good to go.
Run the project as a web applicaiton . press go to see our data. yeah we did it. its up and running.