@AbapCatalog.sqlViewName: 'IWRKCTRCAPINTVL2'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'Work Center Capacity Intervals 2'
@ClientHandling.algorithm: #SESSION_VARIABLE
@ObjectModel.usageType: {serviceQuality: #C, sizeCategory: #XL, dataClass: #MIXED}
@VDM.viewType: #COMPOSITE
define view I_WorkCenterCapacityInterval_2
as select from I_Capacity as _CapHeader
cross join I_AvailableCapacityType as _Version
left outer to many join P_WrkCtrAvailableCapInterval as _Interval on _Interval.CapacityInternalID = _CapHeader.CapacityInternalID
and _Interval.AvailableCapacityType = _Version.AvailableCapacityType
association [1..1] to I_Capacity as _Capacity on $projection.CapacityInternalID = _Capacity.CapacityInternalID
association [1..1] to I_AvailableCapacityType as _AvailableCapacityType on $projection.CapacityActiveVersion = _AvailableCapacityType.AvailableCapacityType
association [0..1] to I_WorkDayRule as _WorkDayRule on $projection.WorkDayRule = _WorkDayRule.WorkDayRule
{
key _CapHeader.CapacityInternalID,
key coalesce(_Interval.AvailableCapacityType, _Version.AvailableCapacityType ) as CapacityActiveVersion,
key coalesce(_Interval.ValidityEndDate, '99991231' ) as IntervalEndDate,
case when _Interval.ValidityBeginDate is null
then '00010102'
else
cast(dats_add_days(_Interval.ValidityBeginDate,1,'FAIL')as datuv preserving type )
end as IntervalStartDate,
case when _Interval.StdAvailableCapacityIsValid is null
then 'X'
else _Interval.StdAvailableCapacityIsValid
end as StdAvailableCapacityIsValid,
// cast( coalesce(_Interval.StdAvailableCapacityIsValid, true ) as boole_d preserving type ) as StdAvailableCapacityIsValid,
// _Interval.StdAvailableCapacityIsValid as StdAvailableCapacityIsValid,
coalesce(_Interval.ShiftSequence, ' ' ) as ShiftSequence,
coalesce(_Interval.WorkDayRule, ' ') as WorkDayRule,
coalesce(_Interval.CapacityNumberOfShifts, '1' ) as CapacityNumberOfShifts,
case
when _Interval.AvailableCapacityIntervalDurn is null
then '01'
when _Interval.AvailableCapacityIntervalDurn is initial
then '01'
else
_Interval.AvailableCapacityIntervalDurn
end as AvailableCapacityIntervalDurn,
case
when _Interval.StdAvailableCapacityIsValid is null
then
cast(_CapHeader.CapacityNumberOfCapacities as kapanzahl preserving type)
when _Interval.StdAvailableCapacityIsValid is initial
then
cast(_Interval.CapacityNumberOfCapacities as kapanzahl preserving type)
else
cast(_Capacity.CapacityNumberOfCapacities as kapanzahl preserving type)
end as CapacityNumberOfCapacities,
case
when _Interval.StdAvailableCapacityIsValid is null
then
_CapHeader.CapacityPlanUtilizationPercent
when _Interval.StdAvailableCapacityIsValid is initial
then
_Interval.CapacityPlanUtilizationPercent
else
_Capacity.CapacityPlanUtilizationPercent
end as CapacityPlanUtilizationPercent,
case when _Capacity.CapacityLastChangeDateTime is null then
cast('20190101120000' as kap_lastchange_datetime)
else _Capacity.CapacityLastChangeDateTime end as CapacityLastChangeDateTime,
_Capacity,
_AvailableCapacityType,
_WorkDayRule
}
/*+[internal] {
"BASEINFO":
{
"FROM":
[
"I_AVAILABLECAPACITYTYPE",
"I_CAPACITY",
"P_WRKCTRAVAILABLECAPINTERVAL"
],
"ASSOCIATED":
[
"I_AVAILABLECAPACITYTYPE",
"I_CAPACITY",
"I_WORKDAYRULE"
],
"BASE":
[],
"ANNO_REF":
[],
"SCALAR_FUNCTION":
[],
"VERSION":0,
"ANNOREF_EVALUATION_ERROR":""
}
}*/