I try do do a DB project with SAP cap. I want to display all entities associated with the Parent entity. If the Association is one to one it works fine. But if it is one to many it doesn't display anything.
--I have following Schema definition:
entity Company{
key ID : Integer @title: 'Company ID';
cName : String @title: 'Company name';
pers: Association to many Person on pers.comp = $self; //association to one works
}
entity Person{
key ID : Integer @title: 'ID';
pName: String @titel: 'Name';
comp: Association to Company;
}
--And following fiori Annotations:
annotate Admin.Company with @(
UI.LineItem:[
{$Type: 'UI.DataField', Value: cName},
],
UI.HeaderInfo:{
TypeName: 'Company',
TypeNamePlural: 'Companys'
},
);
//Details view:
annotate Admin.Company with @(
UI: {
HeaderInfo: {
Description: {Value: ID}
},
HeaderFacets: [
{$Type: 'UI.ReferenceFacet', Target: '@UI.FieldGroup#Comp'},
],
Facets: [
{$Type: 'UI.ReferenceFacet', Target: '@UI.FieldGroup#Pers'}
],
FieldGroup#Comp: {
Data: [
{Value: cName},
]
},
FieldGroup#Pers: {
Data: [
{Value: pers.pName},
]
},
});
The Admin Service is just a projection on the given entities.
Does anyone know what I have to change to get pers.Name
displayed in a list or something like that?
As already mentioned if I change in Schema definition 'association to many' into 'association to one' it works. But I want it to have more than one entity associated.
If you are using the Fiori Elements List Report Object Page template I think you can only use a 1:1 association. This is the intended design of the floorplan (List → Detail). How should Fiori Elements know which of the "many" person items should be bound to the one detail view.
However, what you can and probably want to do is binding the detail view to the selected company item and create a field group. There you can display a table which refers to a different entity. So, you keep your
schema.cds
as it currently is but change yourannotation.cds
:It might be that the code above doesn't work right away because I didn't test it. But I created a working example with the Northwind OData V2 Service using the customer entity for the list view and the order entity in a table in the detail view. You can recreate the example by running the Fiori List Report Object Page wizard with the OData service URL
https://services.odata.org/Northwind/Northwind.svc/
and the main entityCustomer
. When the generation of the project is finished you can replace the content of theannotation.xml
with the following:I hope this solves your problem. If you have any questions feel free to ask.