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:
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.
No comments:
Post a Comment