P_EvtBsdRevnRecProjectIssue

DDL: P_EVTBSDREVNRECPROJECTISSUE Type: view_entity CONSUMPTION Package: FINS_REV_REC_PECRUN

Event based rev. rec. project issue

P_EvtBsdRevnRecProjectIssue is a Consumption CDS View that provides data about "Event based rev. rec. project issue" in SAP S/4HANA. It reads from 5 data sources (P_EvtBsdRevnRecProjectAppLog, I_CompanyCode, I_EvtBasedRevnRecgnEvalArea, P_Trrmonaccprin, I_WBSElementBasicData) and exposes 25 fields with key field ApplicationLog. It has 1 association to related views. Part of development package FINS_REV_REC_PECRUN.

Data Sources (5)

SourceAliasJoin Type
P_EvtBsdRevnRecProjectAppLog AppLog from
I_CompanyCode CompanyCode inner
I_EvtBasedRevnRecgnEvalArea EvalAreaUse inner
P_Trrmonaccprin Trrmonaccprin inner
I_WBSElementBasicData WBSElement inner

Associations (1)

CardinalityTargetAliasCondition
[0..1] I_EntProjectResponsiblePerson _EntProjectResponsiblePerson $projection.WBSElementInternalID = _EntProjectResponsiblePerson.WBSElementInternalID

Annotations (7)

NameValueLevelField
AccessControl.authorizationCheck #NOT_REQUIRED view
EndUserText.label Event based rev. rec. project issue view
ObjectModel.usageType.serviceQuality #D view
ObjectModel.usageType.sizeCategory #L view
ObjectModel.usageType.dataClass #MIXED view
VDM.viewType #CONSUMPTION view
VDM.private true view

Fields (25)

KeyFieldSource TableSource FieldDescription
KEY ApplicationLog P_EvtBsdRevnRecProjectAppLog ApplicationLog
WBSElement I_WBSElementBasicData WBSElement
WBSElementExternalID I_WBSElementBasicData WBSElementExternalID
ProjectInternalID I_WBSElementBasicData ProjectInternalID
ProjectExternalID
WBSElementInternalID I_WBSElementBasicData WBSElementInternalID
FiscalPeriod P_EvtBsdRevnRecProjectAppLog FiscalPeriod
FiscalYear P_EvtBsdRevnRecProjectAppLog FiscalYear
ApplicationLogHandle P_EvtBsdRevnRecProjectAppLog ApplicationLogHandle
NumberOfOpenErrorMessages P_EvtBsdRevnRecProjectAppLog NumberOfOpenErrorMessages
ToFiscalYearPeriod
FiscalYearPeriod
ProfitCenter I_WBSElementBasicData ProfitCenter
Ledger I_EvtBasedRevnRecgnEvalArea Ledger
AccountingPrinciple P_Trrmonaccprin acc_principle
CompanyCode I_CompanyCode CompanyCode
CompanyCodeName I_CompanyCode CompanyCodeName
FiscalYearVariant I_CompanyCode FiscalYearVariant
Prefix P_EvtBsdRevnRecProjectAppLog Prefix
ResultAnalysisInternalID I_WBSElementBasicData ResultAnalysisInternalID
ExternalNumber P_EvtBsdRevnRecProjectAppLog ExternalNumber
WBSElementObject P_EvtBsdRevnRecProjectAppLog WBSElementObject
ResponsiblePerson _EntProjectResponsiblePerson PersonWorkAgreement
PersonFullName
_EntProjectResponsiblePerson _EntProjectResponsiblePerson
@AccessControl.authorizationCheck: #NOT_REQUIRED
@EndUserText.label: 'Event based rev. rec. project issue'

@ObjectModel.usageType.serviceQuality: #D
@ObjectModel.usageType.sizeCategory: #L
@ObjectModel.usageType.dataClass: #MIXED

@VDM.viewType: #CONSUMPTION
@VDM.private: true

define view entity P_EvtBsdRevnRecProjectIssue
  as select from           P_EvtBsdRevnRecProjectAppLog as AppLog
    inner join             I_WBSElementBasicData        as WBSElement          on WBSElement.WBSElementObject = AppLog.WBSElementObject

    inner join             I_CompanyCode                as CompanyCode         on CompanyCode.CompanyCode = AppLog.CompanyCode

  //AppLog.AccountingPrinciple contains EvaluationArea, in future will the field Applog.AccountingPrinciple contain Ledger only

    inner join             I_EvtBasedRevnRecgnEvalArea  as EvalAreaUse         on  EvalAreaUse.CompanyCode        = AppLog.CompanyCode
                                                                               and EvalAreaUse.EvtBsdRevnEvalArea = AppLog.AccountingPrinciple

    inner join             P_Trrmonaccprin              as Trrmonaccprin       on  Trrmonaccprin.rldnr = EvalAreaUse.Ledger
                                                                               and Trrmonaccprin.bukrs = AppLog.CompanyCode
                                                                               and Trrmonaccprin.abgsl = WBSElement.ResultAnalysisInternalID


    //left outer to one join I_PersonWorkAgreement_1      as PersonWorkAgreement on PersonWorkAgreement.PersonWorkAgreement = WBSElement.ResponsiblePerson


    left outer to one join        P_RAIntegEBRRWBSElement      as RAIntegObjEBRR      on RAIntegObjEBRR.WBSElementInternalID = WBSElement.WBSElementInternalID
    
    // Responsible person for WBS Element

    association [0..1] to I_EntProjectResponsiblePerson as _EntProjectResponsiblePerson on $projection.WBSElementInternalID = _EntProjectResponsiblePerson.WBSElementInternalID


{
  key    AppLog.ApplicationLog,
         WBSElement.WBSElement,           //prps.posid

         WBSElement.WBSElementExternalID,           
         WBSElement.ProjectInternalID,    //prps.psphi

//         WBSElement._Project.Project,     //proj.pspid

         WBSElement._Project.ProjectExternalID,     
         WBSElement.WBSElementInternalID, //prps.pspnr


         AppLog.FiscalPeriod,
         AppLog.FiscalYear,
         AppLog.ApplicationLogHandle,
         AppLog.NumberOfOpenErrorMessages,
         concat(AppLog.FiscalPeriod, concat('.', AppLog.FiscalYear) ) as ToFiscalYearPeriod,
         concat(AppLog.FiscalYear, AppLog.FiscalPeriod)               as FiscalYearPeriod,
         WBSElement.ProfitCenter,

         EvalAreaUse.Ledger                                           as Ledger,
         Trrmonaccprin.acc_principle                                  as AccountingPrinciple,

         CompanyCode.CompanyCode,
         CompanyCode.CompanyCodeName,
         CompanyCode.FiscalYearVariant,
         AppLog.Prefix,
         WBSElement.ResultAnalysisInternalID,
         AppLog.ExternalNumber,
         AppLog.WBSElementObject, //balhdr.extnumber.objnr



         //WBSElement.ResponsiblePerson,

         //PersonWorkAgreement.PersonFullName,


//         cast(  case

//                  when WBSElement.ResponsiblePerson = '00000000' or WBSElement.ResponsiblePerson is null

//                     then WBSElement._EntProjectResponsiblePerson.PersonWorkAgreement

//                   else

//                     WBSElement.ResponsiblePerson

//                 end as ps_s4_vernr preserving type )                 as ResponsiblePerson,

         _EntProjectResponsiblePerson.PersonWorkAgreement             as ResponsiblePerson,
            
//

//         cast(  case

//                  when WBSElement.ResponsiblePerson = '00000000' or WBSElement.ResponsiblePerson is null

//                     then WBSElement._EntProjectResponsiblePerson._WorkforcePerson.PersonFullName

//                   else

//                     WBSElement.ResponsiblePersonName

//                 end as ad_namtext preserving type )                  as PersonFullName,

         _EntProjectResponsiblePerson._WorkforcePerson.PersonFullName,

         //for access control

         _EntProjectResponsiblePerson
         
         
}
where
      AppLog.Prefix                   = 'PR'
  and WBSElement.WBSElementInternalID is not null
  and ( RAIntegObjEBRR.PerformanceObligation is null
  or  RAIntegObjEBRR.PerformanceObligation is initial )