2

I am pretty new to the SAP environment and couldn't find a suitable solution to the following problem in the community forum or using the samples/templates/API docs or SAP books, thus I am asking this question.

My Problem: I created a CDS-View with Annotations (for a table and a chart) and linked it using my service to an own SAPUI5 application. While the SmartTable is created without any problems, the SmartChart is giving me the following error: TypeError: can't convert undefined to object RoleFitter.js

I looked up the error and it seems like something is not correct in the annotations file. However, I couldn't find an error and since it is auto-generated from the CDS-View Annotations I am a little confused (the SmartTable is working and I can add/change UserText Annotations without any problem).

Furthermore, when I use the created CDSView wit a standard SAP template (e.g. in cards in an Overview Page Template) it works just fine. For any solutions or hints I am super thankful since this is bothering me a lot and I don't understand why the SmartTable is working but the chart isn't. Thanks in advance!

CDSView:

@AbapCatalog.sqlViewName: 'ZYSS20MSGITEST3'
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #NOT_REQUIRED
@EndUserText.label: 'Test view 3'

@UI: {headerInfo: {
    typeName:'Test3',
    title:{
    type: #STANDARD,
    label: 'Suche'
    }
}
}
@UI.chart: [{
    qualifier: 'OccupiedSeats',
    chartType: #COLUMN,
    dimensions:  [ 'FlightCode' ],
    measures:  [ 'MaximumCapacity', 'EconomyOccupiedSeats', 'BusinessOccupiedSeats', 'FirstOccupiedSeats' ]
}]
define view ZY_SS20_MSGI_TEST3
  as select from sflight
{
      @UI.lineItem: [ { position: 10 } ]
  key concat(carrid, connid) as FlightCode,
      @UI.lineItem: [ { position: 30 } ]
      seatsmax               as MaximumCapacity,
      @UI.lineItem: [ { position: 40 } ]
      seatsocc               as EconomyOccupiedSeats,
      @UI.lineItem: [ { position: 50 } ]
      seatsocc_b             as BusinessOccupiedSeats,
      @UI.lineItem: [ { position: 60 } ]
      seatsocc_f             as FirstOccupiedSeats
}

Dashboard.controller.js:

sap.ui.define([
    "sap/ui/core/mvc/Controller"
], function(Controller) {
    "use strict";

    return Controller.extend("ZY_SS20_MSGI_TESTN.controller.Dashboard", {
        
        onInit: function() {
            this._oModel = new sap.ui.model.odata.ODataModel("/sap/opu/odata/sap/ZY_SS20_MSGPROGRESSSRV_SRV/", true);
            this.getView().setModel(this._oModel);
        }

    });
Dashboard.view.xml:
<mvc:View controllerName="ZY_SS20_MSGI_TESTN.controller.Dashboard" xmlns:html="http://www.w3.org/1999/xhtml" xmlns:mvc="sap.ui.core.mvc" xmlns:smartChart="sap.ui.comp.smartchart"
    xmlns:data="http://schemas.sap.com/sapui5/extension/sap.ui.core.CustomData/1" xmlns:smartFilterBar="sap.ui.comp.smartfilterbar" xmlns:smartTable="sap.ui.comp.smarttable"
    displayBlock="true" xmlns="sap.m">
    <App>
        <pages>
            <Page title="{i18n>title}">
                <content>
                    <VBox fitContainer="true">
                    <smartFilterBar:SmartFilterBar
                        id="smartFilterBar" entitySet="ZY_SS20_MSGI_TEST3" />
                    <smartTable:SmartTable id="mySmartTable"
                    entitySet="ZY_SS20_MSGI_TEST3" smartFilterId="smartFilterBar"
                    tableType="Table" useExportToExcel="true"
                    useVariantManagement="false" useTablePersonalisation="false"
                    header="Throughput" showRowCount="true" enableAutoBinding="true"
                    initiallyVisibleFields="FlightCode,MaximumCapacity,EconomyOccupiedSeats,BusinessOccupiedSeats,FirstOccupiedSeats">
                    </smartTable:SmartTable>
                    <smartChart:SmartChart entitySet="ZY_SS20_MSGI_TEST3" 
                    enableAutoBinding="true" id="mySmartChart" useVariantManagement="false" 
                    useChartPersonalisation="false" header="Test"></smartChart:SmartChart>
                    </VBox>
                </content>
            </Page>
        </pages>
    </App>
</mvc:View>
Philipp
  • 21
  • 2

1 Answers1

0

The problem seems to be that you are providing a qualifier to the chart annotation but not specifying the same to the SmartChart control. Try adding this property to your SmartChart tag:

data:chartQualifier="OccupiedSeats"
Rishabh Gour
  • 170
  • 1
  • 13