Implement your first OData Service in SAP Netweaver Gateway

4
5557

In our first sap netweaver gateway how to guides we have modeled the OData service. In this tutorial we are going to implement the service i.e. writing the actual business logic to pull the data from the back-end system.

[adsenseyu2]

1. Go to Gateway Service builder SEGW and expand the Service Implementation node of the service.

1

2. Under this node you will find five methods for each Entity Set.

  1. Create – Includes the business logic to create data in the back-end system.
  2. Delete – to delete the data from the back-end system.
  3. GetEntity(Read) – to read the single record details from back-end system.
  4. GetEntitySet(Query) – to read the list of data from the back-end system
  5. Update- to update the data into back-end system.

Example: The service we are going to implement is Sales Order related. So to get the list of sales orders from the back-end system we should write the abap code in GetEntitySet (Query) method. To read the single sales order details we should write the abap code in GetEntity (Read) method.

3. First we are going to implement the method GetEntitySet (Query) method to get the list of sales orders from the back-end system. To do so right click on GetEntitySet(Query) → Go to ABAP Workbench.

1

4. As we are going to implement the method ignore the popup and click on continue

1

5. You will be navigated to DPC_EXT class and find the method SALESORDERSET_GET_ENTITYSET to write the code.

1

6. Select the method SALESORDERSET_GET_ENTITYSET method and click on redefine button on the top.

1

7. You will find some commented code in the method when you redefine ignore that and write the below code to fetch the sales order using BAPI.

DATA:      ls_max_rows   TYPE bapi_epm_max_rows,
           lt_salesorder TYPE TABLE OF bapi_epm_so_header,
           ls_salesorder TYPE bapi_epm_so_header,
           ls_entityset  TYPE zcl_zdemo_gw_srv_mpc=>ts_salesorder.

    ls_max_rows-bapimaxrow = 20.
    CALL FUNCTION 'BAPI_EPM_SO_GET_LIST'
      EXPORTING
        max_rows     = ls_max_rows
      TABLES
        soheaderdata = lt_salesorder.
    IF lt_salesorder IS NOT INITIAL.
      LOOP AT lt_salesorder INTO ls_salesorder.
        MOVE-CORRESPONDING ls_salesorder TO ls_entityset.
        APPEND ls_entityset TO et_entityset.
      ENDLOOP.
    ENDIF.

8. Save and activate the method SALESORDERSET_GET_ENTITYSET and then class ZCL_SL_EPM_DEMO_DPC_EXT. Go back to the Service Builder.

This completes the service implementation of the service ZSL_EPM_DEMO. In our next tutorial we will register and test the service in SAP Netweaver Gateway system

Stay tuned to us for more SAP Netweaver Gateway tutorials.Please feel free to comment and let us know your feedback.

Thank you.

like-128

  • Kevin

    Where is the source code for zcl_zdemo_gw_srv_mpc ?
    I am unable to proceed further because I don’t have this custom class.
    Otherwise, great tutorials so far!

    • I faced the same problem… use ZCL_ZSL_EPM_DEMO_MPC=>TS_salesorder instead.

      • Kevin

        Makes sense…. thanks Rahul!

    • sandeep rai

      Hi Kevin it is there in your “MPC” Artifacts. goto Runtime Artifacts – > expnad the folder -> and open your MPC file . this file contain 2 types – 1) table type (TT_xxx) and 2) table structure (TS_xxx) of the ABAP table which you have imported in your program. If you want to see the entire code you can see it inside -> Method tab -> DEFINE (method name).