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_SuccessorTskReadyToStart, I_PPM_Task) and exposes 2 fields with key field TaskUUID.

Data Sources (2)

SourceAliasJoin Type
P_PPM_SuccessorTskReadyToStart SuccessorReadyToWork 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 (2)

KeyFieldSource TableSource FieldDescription
KEY TaskUUID I_PPM_Task TaskUUID
Task I_PPM_Task ExternalId
@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

/* 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,
      Task.ExternalId as Task,
     cast ( case
      // Task has no predeccessors which blocks its start

         //when SuccessorNotReadyToWork.SuccessorTaskUUID is null then

       when SuccessorReadyToWork.IsTaskReadyToStart = 'X' 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
        when SuccessorReadyToWork.SuccessorTaskUUID is not null and SuccessorReadyToWork.IsTaskReadyToStart = ' ' then
              ' '
         when Task.TaskProcessingStatus = '10' or Task.TaskProcessingStatus = '11' then
           'X'
        else
      // Task has at least 1 predecessor not ready to start

              ' '
      end as xfeld preserving type ) as IsTaskReadyToStart

}