Skip to Content
Author's profile photo Anand V D

How to persist custom data in SAP PI java table – Part 1


In this blog, we will have a look on how to store and retrieve data in SAP PI on java database in a custom table. And perform CRUD (Create, Read,Update and Delete) of records in the custom table. Also, I will show how to expose this functionality as a web service of that other local applications can easily access the data stored in the custom table and perform operations on the table (after authentication of course).

Why store data:

There can be many use cases to store data and retrieve data from SAP PI database tables, for example, to store key attributes of set of interfaces for administration or store business error details of set of interfaces for tracking purpose.

Why on java stack:

In dual stack PI systems, data persistence can be achieved in ABAP stack or Java stack. However, in single stack PI systems (SAP Process Orchestration),  data persistence can be achieved only in Java stack. Also, by persisting data on java stack in dual stack systems, interfaces can be PO ready.


Let’s assume that PI is interfacing ticketing tool, and we want to store all the tickets operations (like create, update, close etc.) made on all tickets through PI. Later we can check for any particular ticket what operations were made through PI.

Step 1: Create new table using Java dictionary.

Open NWDS and Select Window > Open Perspective > Other > Dictionary


Create new project. Select File > New > Other


Select Development Infrastructure > Development Component


Select Dictionary in Development Component Type and Click Next


Select MyComponents and Click Next


Provide development component name and click Finish


In Dictionary Explorer, Expand Dictionaries > Local Dictionary > Database Tables and right click and select Create Table


Give a prefix and suffix and select Finish


Add columns to the table and save


Right-click on project, Select Development Component > Build


Right-click on project, Select Development Component > Deploy


Verify the table created in SAP PI NWA > Troubleshooting > Database > Open SQL Data Browser


STEP 2: Create Entity Bean for the table created

Create new project in NWDS


Select Development Infrastructure > Development Component and click Next


Select J2EE > EJB Module and click Next


Select MyComponents and Click Next


Provide Development Component Name and click Next


Select Java EE Version 5.0 and click Finish


Switch to Java EE perspective


In project explorer, Expand to ejbModule and Right-click on it and select New Class


Provide package name and Class name. Implement Serializable interface and click Finish


Add @Entity, @Table annotations to entity bean class. Add @Id annotation to all primary key fields. The attributes of the class should be exactly same as columns of the database table. The table name should be same as the table created in java dictionary


Since our primary key is composite (more than 1 column) we have to create composite key class and implement Serializable interface. Right click on EJB project and select New > Class and provide package name and class name and Implement Serializable interface


Add all the primary key fields in this key class


Generate getters and setters for the primary key class attributes


Select all attributes and click OK


The primary key class should look like this


Generate getters and setters method for entity bean class


Add default default serial version ID and IdClass annotation to the entity bean class


Add a NamedQuery to the entity bean. Provide a name to this named query so that we can call this query later. This query will return all the rows in the table


Next steps are available in part-2

Assigned Tags

      You must be Logged on to comment or reply to a post.
      Author's profile photo Anupam Ghosh
      Anupam Ghosh

      Hi Anand,

                        This is a beautiful blog with clearly explained steps.

      Thank you for writing this.



      Author's profile photo Vikas Singh
      Vikas Singh

      Nice blog. However, in order to display tables in SQL browser you may need to deploy a UME action . Something like this :

      <?xml version="1.0" encoding="UTF-8" standalone="no"?>







      <PERMISSION class="" NAME="ReadTables" VALUE="Z_*" />



      Author's profile photo Bhavesh Kantilal
      Bhavesh Kantilal

      Hello Vikas, Anand, Any guide on how to Deploy this UME Action?



      Author's profile photo Anand V D
      Anand V D
      Blog Post Author

      Hi Bhavesh,

      You need to create UME permissions project in NWDS and edit actions.xml file in it and deploy it into Java AS.

      Then you need to create UME role for the deployed action. Then assign the created role to user who wants display access to the table entries.



      Author's profile photo Jon Nyholt
      Jon Nyholt

      Thanks for sharing these instructions. One suggestion I found is that it's easier to create the Entity Bean by using the New / Entities From Tables menu option (right-clicking on the ejb source folder).

      The Entities From Tables option will auto-generate the java code and you don't have to worry about manually adding all the java methods.

      Author's profile photo Rajesh PS
      Rajesh PS

      Hello Experts,

      Bhavesh Kantilal, Vikas Singh, Anupam Ghosh, Anand V D

      Your valuable thoughts/suggestions on this please. Many Thanks in Advance..!


      Author's profile photo Afanador Molano Carlos Fernando
      Afanador Molano Carlos Fernando


      After perform this guide on the deployment steap, looks lie I have't sufficient priviledges to deploy it, could you provide me a list of roles or grants needed to complete the task?

      Thanks in advance,

      Carlos A