C_PPM_TaskSuccessor

DDL: C_PPM_TASKSUCCESSOR SQL: CPPMTASKSUCC Type: view CONSUMPTION

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)

SourceAliasJoin Type
I_PPM_SingleResponsibleForObj bupa left_outer
I_PPM_TaskRelationship rel from
I_PPM_TaskText text left_outer

Associations (4)

CardinalityTargetAliasCondition
[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)

NameValueLevelField
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)

KeyFieldSource TableSource FieldDescription
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
}