@AbapCatalog.sqlViewName: 'SADL_V_E_SOUI'
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'CDS View Testing UI Annotations'
@Search.searchable: true
@ObjectModel:{
compositionRoot: true,
transactionalProcessingEnabled: true,
writeActivePersistence: 'SADL_V_E_SOUI'
}
@ObjectModel.semanticKey: ['SalesOrder']
@VDM.viewType: #BASIC
@ObjectModel.createEnabled
@ObjectModel.deleteEnabled
@ObjectModel.updateEnabled
@UI.headerInfo:{
typeName: 'Sales Order',
typeNamePlural: 'Sales Orders',
typeImageUrl: 'ImageUrl',
title: { type: #STANDARD, value: 'SalesOrder' },
description: { type: #WITH_URL, value: 'OpportunityID', url: 'https://sap.com/bilder/bildchen.img' }
}
@UI.chart:[
{ qualifier: 'donutqualifier',
chartType:#DONUT,
title: 'Top Sales Orders',
dimensions: ['SalesOrder'],
dimensionAttributes:[
{dimension: 'SalesOrder', role: #CATEGORY}
],
measures:['GrossAmount'],
measureAttributes:[
{measure: 'GrossAmount', role: #AXIS_1, asDataPoint: true}
],
actions:[
{dataAction: 'MPC_EXT:Do_something', label: 'Do something', invocationGrouping:#CHANGE_SET, type:#FOR_ACTION }
]
},
{ chartType:#LINE,
// qualifier: 'linequalifier',
title: 'Top Sales Orders',
dimensions: ['SalesOrder'],
dimensionAttributes:[
{dimension: 'SalesOrder', role: #SERIES}
],
measures:['TaxAmount', 'NetAmount', 'GrossAmount'],
measureAttributes:[
{measure: 'TaxAmount', role: #AXIS_1, asDataPoint},
{measure: 'NetAmount', role: #AXIS_2},
{measure: 'GrossAmount', role: #AXIS_3}
],
actions:[
{type:#FOR_ACTION, dataAction: 'BOPF:Do_something', label: 'Do something', invocationGrouping:#CHANGE_SET}
// ,{ label: 'Knoedel' }
]
},
{ qualifier: 'bubblequalifier',
chartType:#BUBBLE,
title: 'Top Sales Orders',
dimensions: ['SalesOrder' ],
dimensionAttributes:[
{dimension: 'SalesOrder', role: #CATEGORY}
],
measures:['TaxAmount', 'NetAmount', 'GrossAmount'],
measureAttributes:[
{measure: 'TaxAmount', role: #AXIS_1},
{measure: 'NetAmount', role: #AXIS_2, asDataPoint},
{measure: 'GrossAmount', role: #AXIS_3}
],
actions:[
{type:#FOR_ACTION, dataAction: 'BOPF:Do_something', label: 'Do something', invocationGrouping:#CHANGE_SET}
]
}
]
@UI.selectionVariant:{
text: 'Selection Variant 1',
filter: 'CurrencyCode = "EUR" AND
NetAmount between "100.50" AND "5000.50" and
DeliveryStatus = "D" and
LastChangedDateTime > "20160101000000.0000000"'
}
@UI.textArrangement: #TEXT_ONLY
@OData: {
publish : true,
entitySet.name : 'ExpSalesOrder'
}
define view Sadl_V_Exp_SO_UI
as select from snwd_so
{
@UI.lineItem: { position: 10, label: 'Sales Order' }
@Search.ranking: #HIGH
key snwd_so.so_id as SalesOrder,
@UI.selectionField:{position: 10}
@UI.textArrangement: #TEXT_ONLY
@ObjectModel.text.element: 'CurrencyText'
@Semantics.currencyCode: true
snwd_so.currency_code as CurrencyCode,
'CurrText' as CurrencyText,
@Semantics.amount.currencyCode: 'CurrencyCode'
@ObjectModel.mandatory
@EndUserText.label: 'Customer Name'
// @UI.identification: [{position:10, importance:#HIGH, type: #STANDARD},
// {position:20, importance:#HIGH, type: #FOR_INTENT_BASED_NAVIGATION}
// ]
@UI.lineItem: { position: 20, label: 'Gross Amount' }
@UI.dataPoint: { title: 'GrossAmount',
description: 'The gross amount',
longDescription: 'The gross amount of the sales order',
valueFormat:{scaleFactor:1000,numberOfFractionalDigits:0},
referencePeriod:{description: 'Reference period'}
}
// @DefaultAggregation: #SUM
snwd_so.gross_amount as GrossAmount,
@UI.lineItem: { position: 30, label: 'Net Amount' }
@Semantics.amount.currencyCode: 'CurrencyCode'
@UI.dataPoint: { title: 'NetAmount', valueFormat:{scaleFactor:1000,numberOfFractionalDigits:1} }
@UI.selectionField:{position: 20}
// @DefaultAggregation: #SUM
snwd_so.net_amount as NetAmount,
@UI.lineItem: { position: 40, label: 'Tax Amount' }
@Semantics.amount.currencyCode: 'CurrencyCode'
@UI.dataPoint: { valueFormat:{scaleFactor:1000,numberOfFractionalDigits:1} }
// @DefaultAggregation: #SUM
snwd_so.tax_amount as TaxAmount,
@UI.lineItem: { position: 50, label: 'Life Cycle Status' }
// @ObjectModel.foreignKey.association: '_LifecycleStatus'
snwd_so.lifecycle_status as LifecycleStatus,
// @ObjectModel.foreignKey.association: '_BillingStatus'
snwd_so.billing_status as BillingStatus,
// @ObjectModel.foreignKey.association: '_DeliveryStatus'
@UI.selectionField:{position: 30}
// @Consumption.filter.defaultValue: 'D'
// @Consumption.filter.defaultValueHigh: 'F'
@Consumption.filter: { selectionType: #INTERVAL, defaultValue: 'D', defaultValueHigh: 'F' }
snwd_so.delivery_status as DeliveryStatus,
@Search.defaultSearchElement: true
@Search.fuzzinessThreshold: 0.8
@ObjectModel.readOnly: true
@ObjectModel.mandatory: false
snwd_so.op_id as OpportunityID,
@ObjectModel.readOnly: true
snwd_so.created_at as CreationDateTime,
@ObjectModel.readOnly: true
@UI.selectionField:{position: 40}
// @Consumption.filter.defaultValue: '20160101000000.0000000'
// @Consumption.filter.defaultValueHigh: '20170101000000.0000000'
@Consumption.filter: { selectionType: #INTERVAL, defaultValue: '20160101000000.0000000', defaultValueHigh: '20170101000000.0000000' }
snwd_so.changed_at as LastChangedDateTime,
@Consumption.filter.hidden: true
@UI.masked
snwd_so.dummy,
snwd_so.buyer_guid as bp_guid
}
/*+[internal] {
"BASEINFO":
{
"FROM":
[
"SNWD_SO"
],
"ASSOCIATED":
[],
"BASE":
[],
"VERSION":0
}
}*/