I_TaskReadyToStart

DDL: I_TASKREADYTOSTART SQL: TASKREADYTOSTART Type: view COMPOSITE

PPM Project Task Ready To Start

I_TaskReadyToStart is a Composite CDS View that provides data about "PPM Project Task Ready To Start" in SAP S/4HANA. It reads from 1 data source (I_PPM_Task) and exposes 2 fields with key field TaskUUID.

Data Sources (1)

SourceAliasJoin Type
I_PPM_Task Task from

Annotations (9)

NameValueLevelField
AbapCatalog.sqlViewName TASKREADYTOSTART view
AbapCatalog.compiler.compareFilter true view
AccessControl.authorizationCheck #MANDATORY view
EndUserText.label PPM Project Task Ready To Start view
VDM.viewType #COMPOSITE view
ClientHandling.algorithm #SESSION_VARIABLE view
ObjectModel.usageType.dataClass #MIXED view
ObjectModel.usageType.serviceQuality #C view
ObjectModel.usageType.sizeCategory #XL view

Fields (2)

KeyFieldSource TableSource FieldDescription
KEY TaskUUID I_PPM_Task TaskUUID
Task I_PPM_Task ExternalId
@AbapCatalog.sqlViewName: 'TASKREADYTOSTART'
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #MANDATORY
@EndUserText.label: 'PPM Project Task Ready To Start'
@VDM.viewType: #COMPOSITE
@ClientHandling.algorithm: #SESSION_VARIABLE
@ObjectModel: {
    usageType: {
      dataClass:       #MIXED,
      serviceQuality:  #C,
      sizeCategory:    #XL
    }
}

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

  left outer to many join I_SuccessorTaskReadyToStart 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

}
group by Task.TaskUUID,
Task.ExternalId,
Task.TaskProcessingStatus,
SuccessorReadyToWork.SuccessorTaskUUID,
SuccessorReadyToWork.IsTaskReadyToStart