@AbapCatalog.sqlViewName: 'CCAMYOPNWL'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@VDM.viewType: #CONSUMPTION
@AccessControl.personalData.blocking: #BLOCKED_DATA_EXCLUDED
@ObjectModel.usageType.serviceQuality: #C
@ObjectModel.usageType.sizeCategory: #XXL
@ObjectModel.usageType.dataClass: #TRANSACTIONAL
@ClientHandling.algorithm: #SESSION_VARIABLE
@ObjectModel: {
semanticKey: ['CAWorklistUUID'],
representativeKey: 'CAWorklistUUID',
uniqueIdField: 'CAWorklistUUID'
// transactionalProcessingDelegated: true,
// // enable crud
// createEnabled: true
}
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'My Open Worklist'
@Search.searchable: true
@UI.presentationVariant: [{
// qualifier: 'TableQualifier',
sortOrder: [{by: 'CAWorklistNumber', direction: #ASC }],
visualizations: [{type: #AS_LINEITEM, qualifier:'DefaultLineItem' }],
requestAtLeast: ['CAWorklistNumber',
'CAWorklistUUID',
'CAWorklistNumberOfInProcItems',
'CAWorklistProgressPercent',
'CAActionText',
'CAWorklistText',
'CAWorklistDueDate',
'CAWorklistProgressCriticality',
'CAWorklistDueDateCriticality',
'CAWorklistOpenAmountInDC']
}]
//Page Header
@UI: {
headerInfo: {
typeName: 'Worklist',
typeNamePlural: 'Worklists',
title: { value: 'CAWorklistTitle' },
description: { value: 'CAWorklistNumber' }
}
}
//Smart Variant for defining different Tabs
@UI.selectionVariant: [{qualifier: 'open', text: 'Open', filter: 'CAWorklistProgressPercent LT 100' },
{qualifier: 'closed', text: 'Closed', filter: 'CAWorklistProgressPercent EQ 100' }]
//defining the main C-View with associations to other Views-
define view C_CAMyOpenWorklistHeader
with parameters
@EndUserText.label:'DisplayCurrency'
@Consumption.valueHelpDefinition: [{entity: { name: 'I_Currency', element: 'Currency'}}]
P_DisplayCurrency : waers_kk
as select from I_CAWorklistHeader as _WLHead
join P_CAWorklistTotals2( P_DisplayCurrency: $parameters.P_DisplayCurrency) as _TotalAmount on _WLHead.CAWorklistUUID = _TotalAmount.CAWorklistUUID
association [0..*] to C_CAMyOpenWorklistItem as _WorklistItems on $projection.CAWorklistUUID = _WorklistItems.CAWorklistUUID
association [0..1] to C_CAInvcgUserContact as _CreatedByContact on $projection.CreatedByUser = _CreatedByContact.ContactCardID
{
//Object Page facets
@UI.facet: [
{id: 'OpenAmount' , purpose: #HEADER, label: 'Open Amount' , type: #DATAPOINT_REFERENCE, targetQualifier: 'CAWorklistOpenAmountInDC', targetElement: '_TotalAmount'},
{id: 'ClosedAmount' , purpose: #HEADER, label: 'Closed Amount' , type: #DATAPOINT_REFERENCE, targetQualifier: 'CAWorklistClosedAmountInDC'},
{id: 'Status', purpose: #HEADER, label: 'Status', type: #DATAPOINT_REFERENCE, targetQualifier: 'CAWorklistProgressPercent'},
{id: 'lineItems', type : #LINEITEM_REFERENCE, label: 'Open Worklist Items', targetElement: '_WorklistItems', position: 40, purpose: #STANDARD}
]
@UI.hidden: true
@Semantics.uuid
key _WLHead.CAWorklistUUID,
@Search: { defaultSearchElement: true, ranking: #HIGH, fuzzinessThreshold: 0.7 }
@UI.fieldGroup: [{ qualifier: 'dummy', position: 1 }]
_WLHead.CAWorklistNumber,
@ObjectModel.text.element: ['CAInternalAppText']
@UI: {
lineItem: [{position: 1, importance: #HIGH, qualifier:'DefaultLineItem'}],
textArrangement: #TEXT_FIRST
}
@EndUserText.label: 'Source Application'
@Search: { defaultSearchElement: true, ranking: #HIGH, fuzzinessThreshold: 0.7 }
_WLHead.CAInternalAppCode,
@UI.hidden: true
// @UI: {
// lineItem: [{position: 1, importance: #HIGH}]
// }
@Search: { defaultSearchElement: true, ranking: #HIGH, fuzzinessThreshold: 0.7 }
@EndUserText.label: 'Source Application Text'
_WLHead._FioriID._Text[1:Language = $session.system_language].CAInternalAppText as CAInternalAppText,
@UI: {
lineItem: [{position: 2, importance: #HIGH, qualifier:'DefaultLineItem' }]
}
@Search: { defaultSearchElement: true, ranking: #HIGH, fuzzinessThreshold: 0.7 }
_WLHead.CAWorklistTitle,
@UI: {
lineItem: [{position: 3, label: 'Due Date', criticality: 'CAWorklistDueDateCriticality', qualifier:'DefaultLineItem'}]
}
_WLHead.CAWorklistDueDate,
@ObjectModel.text.element: ['CAWorklistPriorityText']
@UI.hidden: true
_WLHead.CAWorklistPriority,
@UI: {
lineItem: [{position: 4}],
textArrangement: #TEXT_ONLY
}
@Semantics.text
@EndUserText.label: 'Priority'
_WLHead._Priority._Text[1:Language = $session.system_language].CAWorklistPriorityText as CAWorklistPriorityText,
@ObjectModel.text.element: ['CAWorklistActionText']
@UI.hidden: true
_WLHead.CAClarificationActionCode,
@UI: {
lineItem: [{position: 5}],
textArrangement: #TEXT_ONLY
}
@Semantics.text
@EndUserText.label: 'Action'
_WLHead._Action._Text[1:Language = $session.system_language].CAWorklistActionText as CAWorklistActionText,
@UI: {
lineItem: [{position: 6, type: #AS_DATAPOINT, importance: #HIGH, criticality: 'CAWorklistProgressCriticality', label: 'Completed in %', qualifier:'DefaultLineItem'}],
dataPoint: {
visualization: #PROGRESS,
targetValue: 100,
criticality: 'CAWorklistProgressCriticality',
title: 'Completed in %',
valueFormat.numberOfFractionalDigits: 0
}
}
@EndUserText.label: 'Worklist Progress'
fltp_to_dec(_TotalAmount.CAWorklistProgressPercent as abap.dec(5,0) ) as CAWorklistProgressPercent,
@Semantics.amount.currencyCode: 'DisplayCurrency'
@DefaultAggregation: #SUM
@UI: {
lineItem: [{position: 7, label: 'Open Amount', importance: #HIGH, qualifier:'DefaultLineItem'}],
dataPoint: {title: 'Open Amount'}
}
@EndUserText.label: 'Open Amount'
_TotalAmount.CAWorklistOpenAmountInDC as CAWorklistOpenAmountInDC,
//
@Semantics.amount.currencyCode: 'DisplayCurrency'
//@DefaultAggregation: #SUM
@UI: {
lineItem: [{position: 8, label: 'Amount In Process', importance: #HIGH, qualifier:'DefaultLineItem'}]
}
_TotalAmount.CAWorklistInProcessAmountInDC,
//
@Semantics.amount.currencyCode: 'DisplayCurrency'
// @DefaultAggregation: #SUM
@UI: {
lineItem: [{position: 9, label: 'Closed Amount', importance: #HIGH, qualifier:'DefaultLineItem'}]
}
@UI.dataPoint.title: 'Closed Amount'
_TotalAmount.CAWorklistClosedAmountInDC,
@ObjectModel: { text.element: [ 'CreatedByUserName' ] }
_WLHead.CreatedByUser,
@UI.hidden: true
_CreatedByContact.FullName as CreatedByUserName,
_WLHead.CreationDate,
@UI.hidden: true
@Semantics.currencyCode: true
$parameters.P_DisplayCurrency as DisplayCurrency,
@UI.hidden: true
@EndUserText.label: 'Total Amount'
@Semantics.amount.currencyCode: 'DisplayCurrency'
@DefaultAggregation: #SUM
currency_conversion( amount => _TotalAmount.CAWorklistAmountInDC,
source_currency => _TotalAmount.TransactionCurrency,
round => 'X',
target_currency => :P_DisplayCurrency,
exchange_rate_date => _TotalAmount.CAExchangeRateDate,
error_handling => 'SET_TO_NULL') as CAWorklistAmountInDC,
@Consumption.semanticObject: 'Text'
@UI: {
hidden: true
// lineItem: [{position: 10, importance: #HIGH, qualifier:'DefaultLineItem'}]
}
_WLHead.CAWorklistText,
@EndUserText.label: 'Open Items'
_TotalAmount.CAWorklistNumberOfOpenItems,
@EndUserText.label: 'Items In Process'
_TotalAmount.CAWorklistNumberOfInProcItems,
@EndUserText.label: 'Completed Items'
_TotalAmount.CAWorklistNumberOfClosedItems,
@UI.hidden: true
@EndUserText.label: 'Due Date Criticality'
_WLHead.CAWorklistDueDateCriticality,
@UI.hidden: true
@EndUserText.label: 'Progress Criticality'
case
when _TotalAmount.CAWorklistOpenAmountInDC = 0 then 3
else 2
end as CAWorklistProgressCriticality,
//Associations
_WorklistItems,
_CreatedByContact
}
where
_WLHead.CreatedByUser = $session.user