Quantcast
Channel: SCN : All Content - SAP Gateway
Viewing all articles
Browse latest Browse all 2823

Search String using Get_Entityset and Adding additional Fields at Gateway Level...

$
0
0

This Document is to understand the Search String Concept in Get_Entityset. This doc will be helpful for those who are new to Odata gateway..

 

Task#1: Fetching Data based on Search String:

get_search_String( ) is a standard method to capture the Search string Value

        using IO_TECH_REQUEST_CONTEXT

 

IO_TECH_REQUEST_CONTEXT is one of the standard parameter of Get_Entityset method. By using that parameter we can capture the search string with get_search_string() method.

 

Create a Project:

 

Create an EntityType using an Abap DDIC Structure.

 

 

 

 

Choose the Required fields from the structure to create Entity type.


 

 

Choose Userid as key field.

 

Save the project and click on “Generate Runtime Objects”.

 

Now Go to Data Provider Extension class and choose change and Select Get_Entityset method, then Redefine.

 

Here we have 2 standard parameters in Get_Entityset for capturing the search string Input i.e IV_SEARCH_STRING and IO_TECH_REQUEST_CONTEXT and ET_ENTITYSET for displaying the output.

 

Implement the below code:

 

 

data  lt_user TYPE ZCL_ZPROJECT1_MPC=>TT_USER.

data  searchstring TYPE  STRING.

 

searchstring = IO_TECH_REQUEST_CONTEXT->GET_SEARCH_STRING( ).

 

  select * from zuserinfo 

            into  corresponding fields of  table lt_user

            where FIRSTNAME  =  searchstring.

  

      ET_ENTITYSET  = lt_user.

 

Activate the class, Register the service and Maintain the Service.

 

Now we will test the Search string using the Gateway Client.

 

Provide

/sap/opu/odata/sap/ZPROJECT1_SRV/zuserSet?search=PAVAN

and Execute.

Here

 

/sap/opu/odata/sap/ZDBPROJECT4_SRV/zuserSet?search=PAVAN

                                                                    entityset  Keyword value

                                                

 

You’ll get the Records based on Search String Value from DDIC Table we used.

 

Note: In this Scenario, Get_Entityset method is executed, but not Get_Entity method.

 

 

Task#2: Fetching the data based on Conditions by generating NEW COLUMNS at Gateway service level:

 

I want to generate some new Columns when my Gateway service is Executed  and when frontend users are accessing the service from UI5 applications.

 

Apart from the existing 8 columns in the table, I want to generate 2more columns like Status and Currency along with execution of Service based on conditions.

 

 

Even we can do the same at Front-end level, but let’s do this at service level.

 

Create New Project.

 

Create Data Model with Reference to DDIC Structure.

 

 

Apart from the above fields, I want to add 2more fields in Entity set Properties as Status and Currency.

 

Click Append Row and add 2 more fields.


 

Now, If you check the syntax it will throw the below error.


To Avoid this Error, go to Entity and Remove the Abap Structure.

 

 

As we added new fields in Service level which are not exiting in DDIC table, we need to remove the mapping and check.

 

 

Note : STATUS ,  CURRENCY  is not physically available in the data base

          so, STATUS , CURRENCY can be generated virtually at SERVICE LEVEL

 

NOTE : Inside ENTITY TYPE,  based on requirement, we can add new fields/properties

but we need to "remove the ABAP DDIC STRUCTURE"

 

 

Save the Project.

click on "GENERATE RUNTIME OBJECTS".

 

open DATA PRovider EXTENSION CLASS, choose change,

 

select  GET_ENTITYSET method and click on "REDEFINE".

 

Implement the below code.


  data  lt_itab  TYPE  ZCL_ZPROJECT2_MPC=>TT_USER.
data  lt_itab2  TYPE  ZCL_ZPROJECT2_MPC=>TT_USER.

data  ls_itab  TYPE  ZCL_ZPROJECT2_MPC=>TS_USER.

select  * from ZUSERINFO  into
corresponding fields of  table  lt_itab.


Loop  at lt_itab  into ls_itab.

if ls_itab-SALARY  < 12000.

ls_itab-STATUS  = 'Basic'.

elseif  ls_itab-SALARY  >=  12000 and ls_itab-SALARY  <= 30000.

ls_itab-STATUS  'AVERAGE'.

elseif  ls_itab-SALARY > 30000.

ls_itab-STATUS  = 'GOOD'.

endif.

if ls_itab-COUNTRY  = 'INDIA'.

ls_itab-CURRENCY  'INDIAN RUPEE'.

elseif  ls_itab-COUNTRY  = 'US'.

ls_itab-CURRENCY  'US DOLLAR'.

endif.


append ls_itab  to lt_itab2.

endloop.

ET_ENTITYSET  lt_itab2.

 

Activate the class.

Register the service and Maintain the service.

Click on Go to Gateway Client and provide

/sap/opu/odata/SAP/ZDBPROJECT55_SRV/userSet

and execute.

              HTTP Response:


 


In the above HTTP Response, Status and Currency field values got executed from the Code and based on conditions we implemented.

 

This is a simple and small approach of Generating new columns which might be helpful for you in multiple scenarios.


Viewing all articles
Browse latest Browse all 2823

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>