@EndUserText.label: 'Billing Data for Invoicing Document'
@VDM.viewType: #COMPOSITE
@AbapCatalog.sqlViewName: 'IEINVDOCBILLDATA'
@AccessControl.authorizationCheck: #CHECK
@AccessControl.personalData.blocking: #('TRANSACTIONAL_DATA')
@ObjectModel.usageType.dataClass: #MIXED
@ObjectModel.usageType.serviceQuality: #D
@ObjectModel.usageType.sizeCategory: #XXL
@ClientHandling.algorithm: #SESSION_VARIABLE
define view I_UtilsInvcgDocBillingData
as select from I_UtilitiesInvoicingDocument as UtilitiesInvoicingDocument
inner join I_UtilsBillgDocInvcgHistory as UtilsBillgDocInvcgHistory on UtilsBillgDocInvcgHistory.UtilitiesInvoicingDocument = UtilitiesInvoicingDocument.UtilitiesInvoicingDocument
inner join I_UtilitiesBillingDocument as UtilitiesBillingDocument on UtilitiesBillingDocument.UtilitiesBillingDocument = UtilsBillgDocInvcgHistory.UtilitiesBillingDocument
inner join I_UtilitiesContract as UtilitiesContract on UtilitiesContract.UtilitiesContract = UtilitiesBillingDocument.UtilitiesContract
inner join I_UtilitiesInstallationHist as UtilitiesInstallationHist on UtilitiesInstallationHist.UtilitiesInstallation = UtilitiesContract.UtilitiesInstallation
inner join I_ContractAccountPartner as ContractAccountPartner on ContractAccountPartner.ContractAccount = UtilitiesInvoicingDocument.ContractAccount
and ContractAccountPartner.BusinessPartner = UtilitiesInvoicingDocument.BusinessPartner
left outer join I_ActvUtilsCAInvcgLockRsn as ActvUtilsCAInvcgLockRsn on ActvUtilsCAInvcgLockRsn.ContractAccount = UtilitiesInvoicingDocument.ContractAccount
left outer join I_ActvUtilsContrInvcgLockRsn as ActvUtilsContrInvcgLockRsn on ActvUtilsContrInvcgLockRsn.CABusinessLockObject = UtilitiesContract.UtilitiesContract
// left outer join I_UtilsInvcgDocOutsrtgData as UtilsInvcgDocOutsrtgData on UtilitiesInvoicingDocument.UtilitiesInvoicingDocument = UtilsInvcgDocOutsrtgData.UtilitiesInvoicingDocument
// and UtilsInvcgDocOutsrtgData.UtilsInvcgDocIsReldBackground = ''
left outer join I_UtilsInvcgDocOutsrtgDataCntr as UtilsInvcgDocOutsrtgDataCntr on UtilitiesInvoicingDocument.UtilitiesInvoicingDocument = UtilsInvcgDocOutsrtgDataCntr.UtilitiesInvoicingDocument
association [0..1] to I_UtilitiesPortionScheduleRecd as _UtilitiesPortionScheduleRecd on $projection.UtilitiesPortion = _UtilitiesPortionScheduleRecd.UtilitiesPortion
and $projection.UtilsPortionScheduleRecordDate = _UtilitiesPortionScheduleRecd.UtilsPortionScheduleRecordDate
association [0..1] to I_UtilsBillgDocIntAndExtPoD as _UtilsBillgDocIntAndExtPoD on $projection.UtilitiesBillingDocument = _UtilsBillgDocIntAndExtPoD.UtilitiesBillingDocument
association [0..1] to I_CAInvcgLockReason as _CAInvcgLockReason on $projection.CABusinessLockReason = _CAInvcgLockReason.CAInvcgLockReason
{
UtilitiesInvoicingDocument.UtilitiesInvoicingDocument,
@ObjectModel.foreignKey.association: '_UtilitiesBillingDocument'
UtilsBillgDocInvcgHistory.UtilitiesBillingDocument,
@ObjectModel.foreignKey.association: '_BusinessPartner'
UtilitiesInvoicingDocument.BusinessPartner,
UtilitiesInvoicingDocument.ContractAccount,
@ObjectModel.foreignKey.association: '_UtilitiesContract'
UtilitiesBillingDocument.UtilitiesContract,
@ObjectModel.foreignKey.association: '_CompanyCode'
UtilitiesContract.CompanyCode,
@ObjectModel.foreignKey.association: '_Division'
UtilitiesContract.UtilitiesDivision as Division,
@ObjectModel.foreignKey.association: '_UtilitiesInstallation'
UtilitiesContract.UtilitiesInstallation,
UtilitiesContract.UtilitiesMoveInDate,
UtilitiesContract.UtilitiesMoveOutDate,
@ObjectModel.foreignKey.association: '_UtilsAccountDetnCode'
UtilitiesContract.UtilitiesAccountDetnCode,
@ObjectModel.foreignKey.association: '_InvcUtilsContractsJointly'
UtilitiesContract.UtilsContrJointInvcType,
@ObjectModel.foreignKey.association: '_UtilsBillgOutsortingGroup'
UtilitiesContract.UtilsBillgOutsortingReason,
@ObjectModel.foreignKey.association: '_UtilitiesBillingReason'
UtilitiesBillingDocument.UtilitiesBillingReason,
UtilitiesBillingDocument.UtilsBillgPeriodStartDate,
UtilitiesBillingDocument.UtilsBillgPeriodEndDate,
@ObjectModel.foreignKey.association: '_UtilitiesPortion'
UtilitiesBillingDocument.UtilitiesPortion,
@Semantics.businessDate.at: true
UtilitiesBillingDocument.ScheduledUtilitiesBillingDate,
UtilitiesBillingDocument.UtilsPortionScheduleRecordDate,
@ObjectModel.foreignKey.association: '_MeterReadingUnit'
UtilitiesBillingDocument.MeterReadingUnit,
UtilitiesBillingDocument.ScheduledMeterReadingDate,
UtilitiesBillingDocument.UtilsBillgDocCreationDate,
@ObjectModel.foreignKey.association: '_UtilsAccountClass'
UtilitiesBillingDocument.UtilitiesAccountClass,
@ObjectModel.foreignKey.association: '_UtilsContrSpcfcBdgtBillgCyc'
UtilitiesContract.UtilsContrSpcfcBdgtBillgCycle,
@ObjectModel.foreignKey.association: '_UtilitiesBdgtBillgCyc'
UtilitiesBillingDocument._UtilitiesPortion.UtilsDefaultBdgtBillgCycle,
@ObjectModel.foreignKey.association: '_UtilitiesRateCategory'
UtilitiesInstallationHist.UtilitiesRateCategory,
@ObjectModel.foreignKey.association: '_UtilsBillingClass'
UtilitiesInstallationHist.UtilitiesBillingClass,
@ObjectModel.foreignKey.association: '_AltvContrAcc'
cast(ContractAccountPartner.AltvContractAcctForCollvBills as e_collvbillacct_vdm preserving type) as AltvContractAcctForCollvBills,
UtilitiesInvoicingDocument.UtilsInvcgDocIsNotReleased,
UtilitiesInvoicingDocument.UtilsInvcgDocIsSimulated,
UtilitiesInvoicingDocument.UtilsInvcgDocIsReversed,
@ObjectModel.foreignKey.association: '_CAInvcgLockReason'
case
when ActvUtilsCAInvcgLockRsn.CABusinessLockObject is not null
and (
ActvUtilsContrInvcgLockRsn.CABusinessLockObject is not null
or ActvUtilsContrInvcgLockRsn.CABusinessLockObject is null
)
then cast(ActvUtilsCAInvcgLockRsn._UtilsCAInvcgLockRsn.CABusinessLockReason as e_invcglockreason_vdm preserving type) //Contract Account Lock
when ActvUtilsCAInvcgLockRsn.CABusinessLockObject is null
and ActvUtilsContrInvcgLockRsn.CABusinessLockObject is not null
then cast(ActvUtilsContrInvcgLockRsn._UtilsCAInvcgLockRsn.CABusinessLockReason as e_invcglockreason_vdm preserving type) //Contract Lock
end as CABusinessLockReason,
case
when UtilitiesBillingDocument.ScheduledUtilitiesBillingDate >= UtilitiesContract.UtilitiesMoveInDate
and UtilitiesBillingDocument.ScheduledUtilitiesBillingDate <= UtilitiesContract.UtilitiesMoveOutDate
then 'X'
end as UtilitiesContractIsActive,
case
when UtilitiesBillingDocument.ScheduledUtilitiesBillingDate >= UtilitiesInstallationHist.UtilsInstHistValidityStartDate
and UtilitiesBillingDocument.ScheduledUtilitiesBillingDate <= UtilitiesInstallationHist.UtilsInstHistValidityEndDate
then 'X'
end as UtilsInstTimeSliceIsValid,
UtilitiesInvoicingDocument.AuthorizationGroup,
// @Aggregation: { referenceElement: [ 'UtilitiesInvoicingDocument' ], default: #COUNT_DISTINCT }
cast(1 as e_invoicingdoc_vdm) as NmbrOfUtilsInvoicingDocuments,
//To exclude outsorted invoicing documents that were released in background
// case
// when UtilsInvcgDocOutsrtgData.UtilitiesInvoicingDocument is not null
// then UtilsInvcgDocOutsrtgData.UtilitiesInvoicingDocument
// end
// To exclude outsorted invoicing documents that were released in background
case
when UtilsInvcgDocOutsrtgDataCntr.UtilitiesInvoicingDocument is not null
then UtilsInvcgDocOutsrtgDataCntr.UtilitiesInvoicingDocument
end as UtilsInvcgDocNotReleased,
@DefaultAggregation: #SUM
cast(1 as e_nrofutilscontr_vdm) as NumberOfUtilitiesContracts,
/* Associations */
UtilsBillgDocInvcgHistory._UtilitiesBillingDocument,
UtilitiesInvoicingDocument._BusinessPartner,
UtilitiesBillingDocument._UtilitiesContract,
UtilitiesContract._CompanyCode,
UtilitiesContract._Division,
UtilitiesContract._UtilitiesInstallation,
UtilitiesContract._UtilsAccountDetnCode,
UtilitiesContract._InvcUtilsContractsJointly,
UtilitiesContract._UtilsBillgOutsortingGroup,
UtilitiesBillingDocument._UtilitiesBillingReason,
UtilitiesBillingDocument._UtilitiesPortion,
UtilitiesBillingDocument._MeterReadingUnit,
UtilitiesBillingDocument._UtilsAccountClass,
UtilitiesContract._UtilsContrSpcfcBdgtBillgCyc,
UtilitiesBillingDocument._UtilitiesPortion._UtilitiesBdgtBillgCyc,
UtilitiesInstallationHist._UtilitiesRateCategory,
UtilitiesInstallationHist._UtilsBillingClass,
ContractAccountPartner._AltvContrAcc,
_UtilitiesPortionScheduleRecd,
_UtilsBillgDocIntAndExtPoD,
_CAInvcgLockReason
}
/*+[internal] {
"BASEINFO":
{
"FROM":
[
"I_ACTVUTILSCAINVCGLOCKRSN",
"I_ACTVUTILSCONTRINVCGLOCKRSN",
"I_CONTRACTACCOUNTPARTNER",
"I_UTILITIESBILLINGDOCUMENT",
"I_UTILITIESCONTRACT",
"I_UTILITIESINSTALLATIONHIST",
"I_UTILITIESINVOICINGDOCUMENT",
"I_UTILITIESPORTION",
"I_UTILSBILLGDOCINVCGHISTORY",
"I_UTILSCAINVCGLOCKRSN",
"I_UTILSINVCGDOCOUTSRTGDATACNTR"
],
"ASSOCIATED":
[
"I_BUSINESSPARTNER",
"I_CAINVCGLOCKREASON",
"I_COMPANYCODE",
"I_CONTRACTACCOUNTHEADER",
"I_DIVISION",
"I_INVCUTILSCONTRACTSJOINTLY",
"I_METERREADINGUNIT",
"I_UTILITIESBILLINGDOCUMENT",
"I_UTILITIESBILLINGREASON",
"I_UTILITIESCONTRACT",
"I_UTILITIESINSTALLATION",
"I_UTILITIESPORTION",
"I_UTILITIESPORTIONSCHEDULERECD",
"I_UTILITIESRATECATEGORY",
"I_UTILSACCOUNTCLASS",
"I_UTILSACCOUNTDETNCODE",
"I_UTILSBILLGDOCINTANDEXTPOD",
"I_UTILSBILLGOUTSORTINGGROUP",
"I_UTILSBILLINGCLASS",
"I_UTILSCONTRSPCFCBDGTBILLGCYC",
"I_UTILSPORTNDFLTBDGTBILLGCYC"
],
"BASE":
[
"I_CONTRACTACCOUNTPARTNER",
"I_UTILITIESBILLINGDOCUMENT",
"I_UTILITIESCONTRACT",
"I_UTILITIESINSTALLATIONHIST",
"I_UTILITIESINVOICINGDOCUMENT",
"I_UTILITIESPORTION",
"I_UTILSBILLGDOCINVCGHISTORY"
],
"ANNO_REF":
[],
"SCALAR_FUNCTION":
[],
"VERSION":0,
"ANNOREF_EVALUATION_ERROR":""
}
}*/