A_ProjectStatus

DDL: A_PROJECTSTATUS Type: view_entity COMPOSITE

Project status

A_ProjectStatus is a Composite CDS View that provides data about "Project status" in SAP S/4HANA. It reads from 1 data source (I_ProjectData_2) and exposes 9 fields with key fields ProjectInternalID, StatusCode. It has 2 associations to related views. It is exposed through 1 OData service (API_PROJECT_V3).

Data Sources (1)

SourceAliasJoin Type
I_ProjectData_2 _ProjectData inner

Associations (2)

CardinalityTargetAliasCondition
[0..*] I_UserStatusText _UserStatusText _StatusObject.StatusProfile = _UserStatusText.StatusProfile and _StatusObject.StatusCode = _UserStatusText.UserStatus
[1..1] A_Project_3 _Project $projection.ProjectInternalID = _Project.ProjectInternalID

Annotations (9)

NameValueLevelField
AccessControl.authorizationCheck #CHECK view
EndUserText.label Project status view
Metadata.ignorePropagatedAnnotations true view
ObjectModel.usageType.serviceQuality #D view
ObjectModel.usageType.sizeCategory #XL view
ObjectModel.usageType.dataClass #MIXED view
VDM.viewType #COMPOSITE view
VDM.lifecycle.contract.type #PUBLIC_REMOTE_API view
OData.entityType.name ProjectStatus_Type view

OData Services (1)

ServiceBindingVersionContractRelease
API_PROJECT_V3 API_PROJECT_V3 V4 C2 C1

Fields (9)

KeyFieldSource TableSource FieldDescription
KEY ProjectInternalID I_ProjectData_2 ProjectInternalID
KEY StatusCode _StatusObject StatusCode
StatusObject _StatusObject StatusObject
StatusProfile _StatusObject StatusProfile
StatusIsActive _StatusObject StatusIsActive
IsUserStatus _StatusObject IsUserStatus
StatusShortNameendasStatusShortName
StatusNameendasStatusName
_Project _Project
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'Project status'
@Metadata.ignorePropagatedAnnotations: true
@ObjectModel.usageType:{
  serviceQuality: #D,
  sizeCategory: #XL,
  dataClass: #MIXED
}
@VDM: {
    viewType: #COMPOSITE,
    lifecycle.contract.type: #PUBLIC_REMOTE_API
}
@OData.entityType.name:'ProjectStatus_Type'

define view entity A_ProjectStatus
  as select distinct from  I_StatusObjectStatus as _StatusObject
    inner join             I_ProjectData_2      as _ProjectData    on _ProjectData.ProjectObject = _StatusObject.StatusObject
    left outer to one join I_StatusCodeText     as _StatusCodeText on  _StatusObject.StatusCode = _StatusCodeText.StatusCode
                                                                   and _StatusCodeText.Language = $session.system_language

  //Get user status short name and description

    left outer to one join I_StatusProfile                as _StatusProfile                on _StatusObject.StatusProfile = _StatusProfile.StatusProfile

  association [0..*] to I_UserStatusText             as _UserStatusText          on  _StatusObject.StatusProfile =  _UserStatusText.StatusProfile
                                                                                 and _StatusObject.StatusCode    =  _UserStatusText.UserStatus
  association [1..1] to A_Project_3 as _Project on $projection.ProjectInternalID = _Project.ProjectInternalID
{
  key _ProjectData.ProjectInternalID,
  key _StatusObject.StatusCode,
      _StatusObject.StatusObject,
      _StatusObject.StatusProfile,
      _StatusObject.StatusIsActive,

      _StatusObject.IsUserStatus as IsUserStatus,

      case _StatusObject.IsUserStatus
        when 'X' then
          case
            when _UserStatusText[Language = $session.system_language].UserStatusShortName is not initial and _UserStatusText[Language = $session.system_language].UserStatusShortName <> '' then
              _UserStatusText[Language = $session.system_language].UserStatusShortName
            else _UserStatusText[Language = _StatusProfile.MasterLanguage].UserStatusShortName
          end
        else _StatusCodeText.StatusShortName
      end                                                     as StatusShortName,

      case _StatusObject.IsUserStatus
        when 'X' then
          case
            when _UserStatusText[Language = $session.system_language].UserStatusShortName is not initial and _UserStatusText[Language = $session.system_language].UserStatusShortName <> '' then
              _UserStatusText[Language = $session.system_language].UserStatusName
            else _UserStatusText[Language = _StatusProfile.MasterLanguage].UserStatusName
          end
        else _StatusCodeText.StatusName
      end                        as StatusName,

      _Project


}
where
  _StatusCodeText._StatusCode.StatusIsHidden = ''