Application Development Blog Posts
Learn and share on deeper, cross technology development topics such as integration and connectivity, automation, cloud extensibility, developing at scale, and security.
cancel
Showing results for 
Search instead for 
Did you mean: 
37,733
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
7 Comments
Labels in this area