Technology Blogs by Members
Explore a vibrant mix of technical expertise, industry insights, and tech buzz in member blogs covering SAP products, technology, and events. Get in the mix!
cancel
Showing results for 
Search instead for 
Did you mean: 
NikhilPuri
Explorer
4,545

EP3: Event Handlers in SAP CAPM


Node.js APIs is both for design-time as well as runtime usage. All APIs can be accessed through the singleton CDS facade object.
const cds = require('@sap/cds')

These APIs are the center of all cds operations, for example, the cds command line interface is just a thin wrapper around these APIs.

Event handlers in SAP CAPM



  1. srv.on (event, entity?, handler)

  2. srv.before (event, entity?, handler)

  3. srv.after (event, entity?, handler)

  4. srv.reject (event, entity?)


srv.on (event, entity?, handler) 


Handlers registered with this method are run in sequence, with each handler being able to terminate the sequence.

srv.before (event, entity?, handler)


Registers a handler to run before the ones registered with .on(), that is, before the generic handlers. Commonly used to add custom input validations.

srv.after (event, entity?, handler)


Registers a handler to run after the generic handler. To be more precise: It runs on the results returned by the generic handler

srv.reject (event, entity?) 


Registers a generic handler that automatically rejects incoming request with a standard error message. You can specify multiple events and entities.

Let's implement some of the events in our application


Providing Service Implementations


In Node.js, the easiest way to provide implementations for services is thru equally named .js files placed next to a service definition’s .cds file
./srv
- cat-service.cds # service definitions
- cat-service.js # service implementation

 



Adding Custom Event Handlers


Service implementations essentially consist of one or more event handlers. Copy this into srv/cat-service.js to add custom event handlers.

Let’s implement the business logic now. write the below code.



module.exports = function (srv){
srv.after ('READ','Employee', each => {
if(each.status == 'A'){
each.status = 'Act';
}
})
}

If server listening is stopped,Execute cds watch again from the Terminal to see the output in new tab. Otherwise, refresh the browser and check the output.


 

Episode 1: Click here for Episode 1

Episode 2: Click here for Episode 2

Git Setup: Click here for Git Setup

Connect Hana cloud with SAP Business Application Studio: Click Here for Connection Blog

 

I hope everyone enjoyed this blog, Please don’t forget to put comment and stay connected for more episodes.?

 

Regards

Nikhil Puri

 

 

 

 

 
1 Comment
former_member729305
Participant
0 Kudos
Hi nikhil_puri,

 

thank you for this blog and the detailed information!

I am currently wondering how to change a data field entry for a single recort within a list report like

srv.on('CREATE', 'Books', async (req)){

req.field = "test"

})

 

the field "field" is empty initially and should be filled with "test" automatically by creation. the req.field in console.log is filled with "test" but the data record afterwards inside the app is still empty.

Do you by coincidence know how to solve that?

I would be very grateful for an answer.

 

Best Regards

Max
Labels in this area