@AbapCatalog.sqlViewName: 'CQLTYTSKPROC'
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #CHECK
@AccessControl.personalData.blocking: #NOT_REQUIRED
@VDM.viewType: #CONSUMPTION
@EndUserText.label: 'Process Quality Task'
@ClientHandling.algorithm: #SESSION_VARIABLE
@ObjectModel: {
semanticKey: [ 'QualityTask' ],
representativeKey: 'QualityTaskInternalId',
usageType: {
dataClass: #TRANSACTIONAL,
sizeCategory: #L,
serviceQuality: #A },
// Begin Draft 2.0
compositionRoot: true,
transactionalProcessingDelegated: true,
draftEnabled: true,
createEnabled: true,
updateEnabled: 'EXTERNAL_CALCULATION',
deleteEnabled: true
}
@UI.headerInfo: {
typeName: 'Quality Task',
typeNamePlural: 'Quality Tasks',
title: {value: 'QualityTask', label: 'Quality Task'},
description: {value: 'QualityTaskText'}
}
@UI.presentationVariant.requestAtLeast: [ 'DefectInternalID', 'ProbSolvingProc', 'ProbSolvingProcStp', 'ProbSolvingProcCause', 'QltyTskFllwUpActnConfignVal', '_QltyTskProcProcsrNotes.QualityTaskProcessorNotes', '_QltyTskProcProcsrNotes.QualityTaskProcsrNotesPreview',
'_QualityTaskProcessCalc.QltyTaskOriginSemanticObject', '_QualityTaskProcessCalc.QltyTaskOriginObject', '_QualityTaskProcessCalc.QualityTaskOriginText',
'_QltyTskProcFllwActnSglParam.ItemCounter', 'QltyTskProcgIsCtrldByTskOrigin' ]
@AccessControl.privilegedAssociations: [ '_CreatedByUserContactCard', '_LastChangedByUserContactCard', '_CompletedByUserContactCard' ]
@Consumption.semanticObject: 'QualityTask'
@Metadata.allowExtensions: true
define view C_QualityTaskProcess as select from I_QualityTaskTP
//=== associations to other QM views
association [0..1] to C_QltyTskProcProcsrNotes as _QltyTskProcProcsrNotes on $projection.QualityTaskInternalId = _QltyTskProcProcsrNotes.QualityTaskInternalId
and $projection.MasterLanguage = _QltyTskProcProcsrNotes.Language
and _QltyTskProcProcsrNotes.ItemCounter = 1
association [0..1] to C_QltyTaskDetailedDescription as _QltyTaskDetailedDescription on $projection.QualityTaskInternalId = _QltyTaskDetailedDescription.QualityTaskInternalId
and $projection.MasterLanguage = _QltyTaskDetailedDescription.Language
and _QltyTaskDetailedDescription.ItemCounter = 2
association [0..1] to C_QltyTskProcFllwActnSglParam as _QltyTskProcFllwActnSglParam on $projection.QualityTaskInternalId = _QltyTskProcFllwActnSglParam.QualityTaskInternalId
and _QltyTskProcFllwActnSglParam.ItemCounter = 1
association [0..*] to C_QltyTskProcFllwActnTblParam as _QltyTskProcFllwActnTblParam on $projection.QualityTaskInternalId = _QltyTskProcFllwActnTblParam.QualityTaskInternalId
// Workaround for auto-update of status text after status change action execution
// association [0..*] to I_QualityTaskStatusText as _QualityTaskStatusText on $projection.QualityTaskLifecycleStatus = _QualityTaskStatusText.QualityTaskLifecycleStatus
association [1..1] to C_QualityTaskProcessCalc as _QualityTaskProcessCalc on $projection.QualityTaskInternalId = _QualityTaskProcessCalc.QualityTaskInternalId
association [0..1] to C_QltyTaskProcessDefectInfo as _QltyTaskProcessDefectInfo on $projection.DefectInternalID = _QltyTaskProcessDefectInfo.DefectInternalID
association [0..1] to C_QltyTaskProbSolvingProcInfo as _QltyTaskProbSolvingProcInfo on $projection.ProbSolvingProc = _QltyTaskProbSolvingProcInfo.ProbSolvingProc
and $projection.ProbSolvingProcStp = _QltyTaskProbSolvingProcInfo.ProbSolvingProcStp
{
//=== Key Fields
key QualityTaskInternalId,
//=== Common Fields
@ObjectModel.readOnly: true
QualityTask,
QualityTaskOrigin,
QualityTaskType,
@ObjectModel.mandatory: true
QualityTaskText,
@Consumption.valueHelpDefinition: [{ entity: {name: 'I_QltyBPWithUserStdVH', element: 'BusinessPartner' } }]
QualityTaskProcessor,
@Consumption.valueHelpDefinition: [
{ entity: { name: 'I_QualityTaskStatus',
element: 'QualityTaskLifecycleStatus' }
}]
QualityTaskLifecycleStatus,
@Consumption.filter.hidden: true
QualityTaskArchivingStatus,
MasterLanguage,
//UX Inc
@Consumption.filter: { selectionType: #INTERVAL }
NotifTaskPlannedEndDate,
@Consumption.filter.hidden: true
NotifTaskPlannedEndTime,
@ObjectModel.readOnly: true
//UX Inc
@Consumption.filter: { selectionType: #INTERVAL }
NotifTaskCompletionDate,
NotifTaskCompletionTime,
@ObjectModel.readOnly: true
NotifTaskCompletedByUser,
@Consumption.filter.hidden: true
NotifTaskTimeZone,
//=== Code
@Consumption.filter.hidden: true
QualityTaskCodeCatalog,
@Consumption.valueHelpDefinition: [
{ entity: { name: 'I_QltyTskCodeGroupStdVH',
element: 'QualityTaskCodeGroup' }
}]
QualityTaskCodeGroup,
@Consumption.valueHelpDefinition: [
{ entity: { name: 'I_QltyTskCodeStdVH',
element: 'QualityTaskCode' },
additionalBinding: [{ localElement: 'QualityTaskCodeGroup',
element: 'QualityTaskCodeGroup' }]
}]
QualityTaskCode,
//=== Follow-Up Action
@Consumption.valueHelpDefinition: [
{ entity: { name: 'I_QltyTaskFollowUpActionVH', element: 'QltyTaskFollowUpAction'} }
]
QltyTaskFollowUpAction,
QltyTaskFllwUpActionSts,
@ObjectModel.virtualElement: true
@ObjectModel.virtualElementCalculatedBy: 'ABAP:CL_D_QT_SET_FOA_CONFIG'
QltyTskFllwUpActnConfignVal,
//=== Administrative Data
ChangedDateTime,
//UX Inc
@Consumption.filter: { selectionType: #INTERVAL }
CreationDate,
CreationTime,
@ObjectModel.foreignKey.association: [ { exclude } ]
//we suppress the foreignKey relation. the field is used as selected fields and therefore it seems that Fiori Elements tries to fetch the metadata of the corresponding entity type which fails because access is privileged only.
//suppressing the foreignKey relation avoids this error
CreatedByUser,
//UX Inc
@Consumption.filter: { selectionType: #INTERVAL }
LastChangeDate,
@Consumption.filter.hidden: true
LastChangeTime,
LastChangedByUser,
//UX Inc
@Consumption.filter.hidden: true
QltyTskProcgIsCtrldByTskOrigin,
//=== Reference Object Fields
DefectInternalID,
ProbSolvingProc,
ProbSolvingProcStp,
ProbSolvingProcCause,
////====Time Recording for Task
@Consumption.filter.hidden: true
@EndUserText.label: 'Time Effort'
@Semantics.quantity.unitOfMeasure: 'QltyTaskTimeBasedEffortUoM'
QltyTaskTimeBasedEffort,
@Consumption.filter.hidden: true
@Consumption.valueHelpDefinition: [{ entity: {name: 'C_QltyTskProcTimeUnitVH', element: 'UnitOfMeasure' } }]
QltyTaskTimeBasedEffortUoM,
// the Defect will be directly extracted out of the Defect Internal Id to avoid a join
/*
@Consumption.filter.hidden: true
@ObjectModel.readOnly: true
cast( substring(DefectInternalID,2,11) as qdefectid preserving type ) as Defect,*/
//=== Expose associations
@ObjectModel.association.type: [ #TO_COMPOSITION_CHILD ]
@Consumption.filter.hidden: true
_QltyTskProcProcsrNotes,
@ObjectModel.association.type: [ #TO_COMPOSITION_CHILD ]
@Consumption.filter.hidden: true
_QltyTaskDetailedDescription,
@ObjectModel.association.type: [ #TO_COMPOSITION_CHILD ]
@Consumption.filter.hidden: true
_QltyTskProcFllwActnSglParam,
@ObjectModel.association.type: [ #TO_COMPOSITION_CHILD ]
@Consumption.filter.hidden: true
_QltyTskProcFllwActnTblParam,
@Consumption.filter.hidden: true
_QualityTaskProcessor,
@Consumption.filter.hidden: true
_QualityTaskStatus,
@Consumption.filter.hidden: true
_QltyTaskArchivingStatus,
@Consumption.filter.hidden: true
_CreatedByUserContactCard,
@Consumption.filter.hidden: true
_CompletedByUserContactCard,
@Consumption.filter.hidden: true
_LastChangedByUserContactCard,
@Consumption.filter.hidden: true
_QaulityTaskTimeZone,
@Consumption.filter.hidden: true
_QltyTskCodeGroup,
@Consumption.filter.hidden: true
_QltyTskCode,
@Consumption.filter.hidden: true
_QltyTaskFollowUpAction,
@Consumption.filter.hidden: true
_QltyTaskFllwUpActionSts,
@Consumption.filter.hidden: true
_QualityTaskProcessCalc,
// @Consumption.filter.hidden: true //--> Allow filter in general, but annotate each field in the target with 'filter.hidden: true' which shall not be used as filter field
_QltyTaskProcessDefectInfo,
// @Consumption.filter.hidden: true //--> Allow filter in general, but annotate each field in the target with 'filter.hidden: true' which shall not be used as filter field
_QltyTaskProbSolvingProcInfo
// Workaround for auto-update of status text after status change action execution
// @Consumption.filter.hidden: true
// _QualityTaskStatusText
} where IsDeleted <> 'X'
/*+[internal] {
"BASEINFO":
{
"FROM":
[
"I_QUALITYTASKTP"
],
"ASSOCIATED":
[
"C_QLTYTASKDETAILEDDESCRIPTION",
"C_QLTYTASKPROBSOLVINGPROCINFO",
"C_QLTYTASKPROCESSDEFECTINFO",
"C_QLTYTSKPROCFLLWACTNSGLPARAM",
"C_QLTYTSKPROCFLLWACTNTBLPARAM",
"C_QLTYTSKPROCPROCSRNOTES",
"C_QUALITYTASKPROCESSCALC",
"I_QLTYBPWITHUSER",
"I_QLTYTASKARCHIVINGSTATUS",
"I_QLTYTASKFLLWUPACTIONSTS",
"I_QLTYTASKFOLLOWUPACTION",
"I_QLTYTSKCODE",
"I_QLTYTSKCODEGROUP",
"I_QUALITYTASKSTATUS",
"I_TIMEZONE",
"I_USERCONTACTCARD"
],
"BASE":
[
"I_QUALITYTASKTP"
],
"ANNO_REF":
[],
"SCALAR_FUNCTION":
[],
"VERSION":0,
"ANNOREF_EVALUATION_ERROR":""
}
}*/