diff --git a/suppliers/srv/external/API_BUSINESS_PARTNER.js b/suppliers/srv/external/API_BUSINESS_PARTNER.js new file mode 100644 index 00000000..d092f316 --- /dev/null +++ b/suppliers/srv/external/API_BUSINESS_PARTNER.js @@ -0,0 +1,11 @@ +const cds = require("@sap/cds"); + +module.exports = cds.service.impl(function () { + const { A_BusinessPartner } = this.entities; + + this.after("UPDATE", A_BusinessPartner, (data, req) => + this.tx(req).emit("BusinessPartner.Changed", { + BusinessPartner: data.BusinessPartner + }) + ); +}); diff --git a/suppliers/srv/mashup.cds b/suppliers/srv/mashup.cds index 11087d77..89cbaded 100644 --- a/suppliers/srv/mashup.cds +++ b/suppliers/srv/mashup.cds @@ -53,3 +53,12 @@ annotate S4.Suppliers with @cds.persistence:{table,skip:false}; extend projection CatalogService.ListOfBooks with { supplier.name as supplier } + +// Extend S4 service with modeled event +extend service S4 { + @type: 'sap.s4.beh.businesspartner.v1.BusinessPartner.Changed.v1' + event BusinessPartner.Changed { + BusinessPartner: S4.A_BusinessPartner:BusinessPartner; + } +} + diff --git a/suppliers/srv/mashup.js b/suppliers/srv/mashup.js index a77b238c..a6ef1d5a 100644 --- a/suppliers/srv/mashup.js +++ b/suppliers/srv/mashup.js @@ -35,9 +35,9 @@ module.exports = async()=>{ // called by server.js }) // Subscribe to changes in the S4 origin of Suppliers data - S4bupa.on ('BusinessPartners/Changed', async msg => { //> would be great if we had batch events from S/4 - let replicas = await SELECT('ID').from (Suppliers) .where ('ID in', msg.businessPartners) - return replicate (replicas.map(each => each.ID)) + S4bupa.on ('BusinessPartner.Changed', async msg => { //> would be great if we had batch events from S/4 + let replica = await SELECT.one('ID').from (Suppliers) .where ({ID: msg.data.BusinessPartner}) + return replicate (replica.ID) }) /**