P_PPM_TaskReadyToStart

DDL: P_PPM_TASKREADYTOSTART SQL: PPPMTSKRDYTOST Type: view COMPOSITE

P_PPM_TaskReadyToStart is a Composite CDS View in SAP S/4HANA. It reads from 2 data sources (P_PPM_TaskNotReadyToStart, I_PPM_Task) and exposes 1 field with key field TaskUUID.

Data Sources (2)

SourceAliasJoin Type
P_PPM_TaskNotReadyToStart SuccessorNotReadyToWork left_outer
I_PPM_Task Task from

Annotations (9)

NameValueLevelField
VDM.viewType #COMPOSITE view
VDM.private true view
AbapCatalog.sqlViewName PPPMTSKRDYTOST view
AccessControl.authorizationCheck #PRIVILEGED_ONLY view
ClientHandling.algorithm #SESSION_VARIABLE view
ObjectModel.usageType.serviceQuality #X view
ObjectModel.usageType.sizeCategory #L view
ObjectModel.usageType.dataClass #MIXED view
ObjectModel.representativeKey TaskUUID view

Fields (1)

KeyFieldSource TableSource FieldDescription
KEY TaskUUID I_PPM_Task TaskUUID
@VDM.viewType: #COMPOSITE
@VDM.private: true
@AbapCatalog.sqlViewName: 'PPPMTSKRDYTOST'
@AccessControl.authorizationCheck: #PRIVILEGED_ONLY
@ClientHandling.algorithm: #SESSION_VARIABLE
@ObjectModel.usageType.serviceQuality: #X
@ObjectModel.usageType.sizeCategory:  #L
@ObjectModel.usageType.dataClass:  #MIXED
@ObjectModel.representativeKey: 'TaskUUID'

/*  Specification: 1 record is returned for every task */
define view P_PPM_TaskReadyToStart as select 
             from I_PPM_Task as Task
// A task is ready to start if it has no predecessor 

/*  left outer join P_PPM_SuccessorTskReadyToStart as SuccessorReadyToWork 
               on Task.TaskUUID                              = SuccessorReadyToWork.SuccessorTaskUUID
              and SuccessorReadyToWork.PredecessorTaskUUID   is null                                  */
                            
/* Or when defined as successor in relationships, the relation shows that all its predecessors are in states 
   that enable the start of the successor */
  left outer join P_PPM_TaskNotReadyToStart      as SuccessorNotReadyToWork 
               on Task.TaskUUID                              = SuccessorNotReadyToWork.SuccessorTaskUUID

{
  key Task.TaskUUID,
     cast ( case
      // Task has no predeccessors which blocks its start

         when SuccessorNotReadyToWork.SuccessorTaskUUID is null then 
/*       when SuccessorReadyToWork.PredecessorTaskExternalId = ' ' then */
          case
      // check status 'released'

            when Task.TaskProcessingStatus = '10' or Task.TaskProcessingStatus = '11' then
                  'X'
     //  check status 'blocked' 

/*          when Task.TaskProcessingStatus = '20' or Task.TaskProcessingStatus = '21' then
              ' ' */
            else
              ' ' 
          end    
        
        else
      // Task has at least 1 predecessor not ready to start 

              ' '
      end as xfeld preserving type ) as IsTaskReadyToStart

}
/*+[internal] {
"BASEINFO":
{
"FROM":
[
"I_PPM_TASK",
"P_PPM_TASKNOTREADYTOSTART"
],
"ASSOCIATED":
[],
"BASE":
[],
"ANNO_REF":
[],
"SCALAR_FUNCTION":
[],
"VERSION":0,
"ANNOREF_EVALUATION_ERROR":""
}
}*/