BOPF Creation Using CDS Views & ODATA Publish
In these blog I am going to help you ,
How to create the BOPF Objects automatically using CDS views.
How to Publish Odata Service in the Back End.
Overview of BOPF: https://archive.sap.com/documents/docs/DOC-45425
Overview of CDS: https://blogs.sap.com/2016/09/26/core-data-services-cds-in-sap-s4-hana/
Kindly go through above links to know more about CDS & BOPF
i.e These is the new ABAP Development.
Creating the business object using the cds views to enable ODATA service enabled:
1.Root node creation for example : ZBO_MARA (Root node)
For the root node need to specify the annotation: @ObjectModel.modelCategory: #BUSINESS_OBJECT
Zbo_mara is the Root node and created the associations with zbo_marc and zekpo nodes
@ObjectModel.compositionRoot: true @ObjectModel.modelCategory: #BUSINESS_OBJECT @AbapCatalog.sqlViewName: 'zbo_mara1' @AbapCatalog.compiler.compareFilter: true @AccessControl.authorizationCheck: #CHECK @EndUserText.label: 'marac' @ObjectModel.writeActivePersistence: 'mara' @ObjectModel.transactionalProcessingEnabled: true @ObjectModel.createEnabled: true @ObjectModel.updateEnabled: true @ObjectModel.deleteEnabled: true @OData.publish: true define view Zbo_mara as select from mara as ma association [0..*] to Zbo_marc as mc on $projection.matnr = mc.matnr association [0..*] to Zekpo as ek on $projection.matnr = ek.matnr { ma.mandt, ma.matnr, ma.pstat,; /* Associations */ @ObjectModel.association.type: [#TO_COMPOSITION_CHILD ] mc, ek }
After activation, the CDS, there is a new BOPF. You have to generate the classes and activate it.
Then use CRUD Template in Web IDE.
Business object created in the back end,Please find the attached screen shot:
Double click on the BO , Popup get opens with information message (Business object is generated from the CDS VIEW)
ZBO_MARA bo got created in the back end:
2.Child node Node creation zbo_marc association with the root node and zekpo
@AbapCatalog.sqlViewName: 'Zbo_marc1' @AbapCatalog.compiler.compareFilter: true @AccessControl.authorizationCheck: #NOT_REQUIRED @EndUserText.label: 'material detail data' @Search.searchable: true @ObjectModel.semanticKey: [ 'Matnr', 'Werks' ] @ObjectModel.representativeKey: 'Werks' @ObjectModel.writeActivePersistence: 'marc' @ObjectModel.createEnabled: true @ObjectModel.deleteEnabled: true @ObjectModel.updateEnabled: true @ObjectModel.transactionalProcessingEnabled: true define view Zbo_marc as select from marc association [0..*] to Zbo_mara as _Ma on $projection.matnr = _Ma.matnr association [0..*] to Zekpo as ek on $projection.werks = ek.werks { @Search.defaultSearchElement: true key matnr, key marc.werks, @ObjectModel.association.type: [#TO_COMPOSITION_PARENT,#TO_COMPOSITION_ROOT] _Ma, @ObjectModel.association.type: [#TO_COMPOSITION_CHILD] ek }
Child node ZBO_MARC created in the back end with the associated associations to the root node(ZBO_MARA) & parent node(ZBO_MARA)
3. Node creation zekpo association with the root node(zbo_mara) and parent node (zbo_marc)
@AbapCatalog.sqlViewName: 'zekpo_1' @AbapCatalog.compiler.compareFilter: true @AccessControl.authorizationCheck: #CHECK @EndUserText.label: 'purchase order' @Search.searchable: true @ObjectModel.semanticKey: [ 'matnr' ] @ObjectModel.representativeKey: 'matnr' @ObjectModel.writeActivePersistence: 'ekpo' @ObjectModel.createEnabled: true @ObjectModel.deleteEnabled: true @ObjectModel.updateEnabled: true @ObjectModel.transactionalProcessingEnabled: true define view Zekpo as select from ekpo association [0..*] to Zbo_mara as _Mc on $projection.matnr = _Mc.matnr association [0..*] to Zbo_marc as _mrc on $projection.matnr = _mrc.matnr { ebeln, @Search.defaultSearchElement: true werks, matnr, @ObjectModel.association.type: [#TO_COMPOSITION_ROOT] _Mc, @ObjectModel.association.type: [#TO_COMPOSITION_PARENT] _mrc }
Child node ZEKPO created in the back end with the associated associations to the root node(ZBO_MARA) & parent node(ZBO_MARC)
Register the OData service in /iwfnd/maint_service.
To register the OData service we need to add the service follow the steps mentioned in the link
https://help.sap.com/saphelp_nw74/helpdata/de/bb/2bfe50645c741ae10000000a423f68/frameset.htm
New NetWeaver Information at SAP.com
Very Helpfull




