C_PPM_TaskSuccessor
Task Successor
C_PPM_TaskSuccessor is a Consumption CDS View that provides data about "Task Successor" in SAP S/4HANA. It reads from 3 data sources (I_PPM_SingleResponsibleForObj, I_PPM_TaskRelationship, I_PPM_TaskText) and exposes 13 fields with key fields TaskUUID, PredecessorTaskUUID. It has 4 associations to related views.
Data Sources (3)
| Source | Alias | Join Type |
|---|---|---|
| I_PPM_SingleResponsibleForObj | bupa | left_outer |
| I_PPM_TaskRelationship | rel | from |
| I_PPM_TaskText | text | left_outer |
Associations (4)
| Cardinality | Target | Alias | Condition |
|---|---|---|---|
| [0..*] | I_PPM_AuthznByUsrH | _AuthUser | _AuthUser.ReferencedObjectUUID = $projection.TaskUUIDRaw and _AuthUser.UserID = $session.user and ( _AuthUser.Activity = 'Admin' or _AuthUser.Activity = 'Write' or _AuthUser.Activity = 'Read' ) |
| [0..*] | I_PPM_AuthznBySubstitH | _AuthSubst | _AuthSubst.ReferencedObjectUUID = $projection.TaskUUIDRaw and _AuthSubst.UserID = $session.user and ( _AuthSubst.Activity = 'Admin' or _AuthSubst.Activity = 'Write' or _AuthSubst.Activity = 'Read' ) |
| [0..*] | I_PPM_AuthznByUserRoleH | _AuthRole | _AuthRole.ReferencedObjectUUID = $projection.TaskUUIDRaw and _AuthRole.UserID = $session.user and ( _AuthRole.Activity = 'Admin' or _AuthRole.Activity = 'Write' or _AuthRole.Activity = 'Read' ) |
| [0..*] | I_PPM_AuthznByUsrGrpH | _AuthGroup | _AuthGroup.ReferencedObjectUUID = $projection.TaskUUIDRaw and _AuthGroup.UserID = $session.user and ( _AuthGroup.Activity = 'Admin' or _AuthGroup.Activity = 'Write' or _AuthGroup.Activity = 'Read' ) |
Annotations (13)
| Name | Value | Level | Field |
|---|---|---|---|
| EndUserText.label | Task Successor | view | |
| VDM.viewType | #CONSUMPTION | view | |
| AbapCatalog.sqlViewName | CPPMTASKSUCC | view | |
| AbapCatalog.compiler.compareFilter | true | view | |
| AccessControl.authorizationCheck | #CHECK | view | |
| AccessControl.personalData.blocking | #REQUIRED | view | |
| ClientHandling.algorithm | #SESSION_VARIABLE | view | |
| ObjectModel.usageType.serviceQuality | #D | view | |
| ObjectModel.usageType.sizeCategory | #XL | view | |
| ObjectModel.usageType.dataClass | #MIXED | view | |
| UI.headerInfo.typeName | Project Task | view | |
| UI.headerInfo.typeNamePlural | Project Tasks | view | |
| Consumption.semanticObject | ProjectTask | view |
Fields (13)
| Key | Field | Source Table | Source Field | Description |
|---|---|---|---|---|
| KEY | TaskUUID | |||
| KEY | PredecessorTaskUUID | |||
| TaskUUIDRaw | I_PPM_TaskRelationship | SuccessorTaskUUID | ||
| ObjectName | I_PPM_TaskText | ObjectName | ||
| clientNULLendasLatestStartDate | Latest Start | |||
| BusinessPartnerName | I_PPM_SingleResponsibleForObj | BusinessPartnerName | Responsible | |
| BusinessPartnerUUID | I_PPM_SingleResponsibleForObj | BusinessPartnerUUID | ||
| EPPMSettingsDefaultValue | EPPMSettingsDefaultValue | |||
| _BusinessUser | I_PPM_SingleResponsibleForObj | _BusinessUser | ||
| _AuthUser | _AuthUser | |||
| _AuthSubst | _AuthSubst | |||
| _AuthRole | _AuthRole | |||
| _AuthGroup | _AuthGroup |
@EndUserText.label: 'Task Successor'
@VDM.viewType: #CONSUMPTION
@AbapCatalog.sqlViewName: 'CPPMTASKSUCC'
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #CHECK
@AccessControl.personalData.blocking: #REQUIRED
@ClientHandling.algorithm: #SESSION_VARIABLE
@ObjectModel.usageType.serviceQuality: #D
@ObjectModel.usageType.sizeCategory: #XL
@ObjectModel.usageType.dataClass: #MIXED
@UI.headerInfo:{
typeName: 'Project Task',
typeNamePlural: 'Project Tasks'
}
@Consumption.semanticObject: 'ProjectTask'
define view C_PPM_TaskSuccessor
as select from I_PPM_TaskRelationship as rel
left outer join I_PPM_SingleResponsibleForObj as bupa on bupa.ReferencedObjectUUID = rel.SuccessorTaskUUID
left outer join I_PPM_TaskText as text on text.TaskUUID = rel.SuccessorTaskUUID
// associations to authorization views
association [0..*] to I_PPM_AuthznByUsrH as _AuthUser
on _AuthUser.ReferencedObjectUUID = $projection.TaskUUIDRaw
and _AuthUser.UserID = $session.user
and ( _AuthUser.Activity = 'Admin' or _AuthUser.Activity = 'Write' or _AuthUser.Activity = 'Read' )
association [0..*] to I_PPM_AuthznBySubstitH as _AuthSubst
on _AuthSubst.ReferencedObjectUUID = $projection.TaskUUIDRaw
and _AuthSubst.UserID = $session.user
and ( _AuthSubst.Activity = 'Admin' or _AuthSubst.Activity = 'Write' or _AuthSubst.Activity = 'Read' )
association [0..*] to I_PPM_AuthznByUserRoleH as _AuthRole
on _AuthRole.ReferencedObjectUUID = $projection.TaskUUIDRaw
and _AuthRole.UserID = $session.user
and ( _AuthRole.Activity = 'Admin' or _AuthRole.Activity = 'Write' or _AuthRole.Activity = 'Read' )
association [0..*] to I_PPM_AuthznByUsrGrpH as _AuthGroup
on _AuthGroup.ReferencedObjectUUID = $projection.TaskUUIDRaw
and _AuthGroup.UserID = $session.user
and ( _AuthGroup.Activity = 'Admin' or _AuthGroup.Activity = 'Write' or _AuthGroup.Activity = 'Read' )
{
@UI.hidden: true
@Consumption.semanticObject: 'ProjectTask'
key bintohex(rel.SuccessorTaskUUID) as TaskUUID,
@UI.hidden: true
key bintohex(rel.PredecessorTaskUUID) as PredecessorTaskUUID,
@UI.hidden: true
rel.SuccessorTaskUUID as TaskUUIDRaw,
@UI.lineItem: { position: 10, importance: #HIGH }
@EndUserText: {
label: 'Element',
quickInfo: 'Element'
}
text.ObjectName,
@UI.lineItem: { position: 20, importance: #HIGH }
@EndUserText.label: 'Latest Start'
case
//Scheduled start not visualized for duration zero
when rel._SuccessorTask.ProjectElementDuration = 0 then
// needed to make the date disappear on the UI.
tstmp_to_dats(
cast('000000000000' as /s4ppm/tv_latest_start),
abap_system_timezone( $session.client,'NULL' ),
$session.client,
'NULL' )
else
tstmp_to_dats(
rel._SuccessorTask.LatestStartDateTime,
abap_system_timezone( $session.client,'NULL' ),
$session.client,
'NULL' )
end as LatestStartDate,
@UI.lineItem: { position: 30, importance: #HIGH }
@EndUserText.label: 'Responsible'
bupa.BusinessPartnerName,
@UI.hidden: true
bupa.BusinessPartnerUUID,
@UI.hidden: true
EPPMSettingsDefaultValue,
// never expose the following associations, only used for authorization checks
@UI.hidden:true
bupa._BusinessUser,
@UI.hidden:true
_AuthUser,
@UI.hidden:true
_AuthSubst,
@UI.hidden:true
_AuthRole,
@UI.hidden:true
_AuthGroup
}
Learn More
- What Is a CDS View in SAP S/4HANA?
- Types of CDS Views: Basic, Composite, Consumption, and Transactional
- SAP Tables vs CDS Views — Key Differences
- Understanding Data Lineage in SAP S/4HANA
- VDM (Virtual Data Model) in SAP S/4HANA Explained
- CDS View Annotations — A Complete Guide
- CDS View Field Mapping and Associations
- Understanding the SAP S/4HANA Data Model
- CDS View Extensions and Custom Fields in SAP S/4HANA
- Released APIs and Stability Contracts in SAP S/4HANA