I_QualityLevelAnalysisCube

DDL: I_QUALITYLEVELANALYSISCUBE Type: view COMPOSITE Package: ODATA_QM_CONTROL_ANALYTICS

Quality Level History - Cube

I_QualityLevelAnalysisCube is a Composite CDS View (Cube) that provides data about "Quality Level History - Cube" in SAP S/4HANA. It reads from 3 data sources (I_CalendarDate, I_InspectionCharacteristic, I_InspectionLot) and exposes 47 fields with key fields InspectionLot, InspPlanOperationInternalID, InspectionCharacteristic. It has 6 associations to related views. Part of development package ODATA_QM_CONTROL_ANALYTICS.

Data Sources (3)

SourceAliasJoin Type
I_CalendarDate _CalendarDate left_outer
I_InspectionCharacteristic _InspChar left_outer
I_InspectionLot _InspLot from

Parameters (2)

NameTypeDefault
P_StartDate mm_a_delivery_date
P_EndDate mm_a_delivery_date

Associations (6)

CardinalityTargetAliasCondition
[1..1] I_InspLotDynamicRule _InspLotDynamicRule $projection.InspLotDynamicRule = _InspLotDynamicRule.InspLotDynamicRule
[1..1] I_InspectionLotDynamicLevel _InspectionLotDynamicLevel $projection.InspectionLotDynamicLevel = _InspectionLotDynamicLevel.InspectionLotDynamicLevel
[1..1] I_InspectionSeverity _InspectionSeverity $projection.InspectionSeverity = _InspectionSeverity.InspectionSeverity
[1..1] I_InspLotDynRuleStage _InspLotDynRuleStage $projection.InspLotDynamicRule = _InspLotDynRuleStage.InspLotDynamicRule and $projection.InspectionDynamicStage = _InspLotDynRuleStage.InspLotDynRuleStage
[1..1] I_Indicator _InspectionLotIsSkipped $projection.InspectionLotStatusSkip = _InspectionLotIsSkipped.IndicatorValue
[1..1] I_InspectionCharacteristic _InspectionCharacteristic $projection.InspectionLot = _InspectionCharacteristic.InspectionLot and $projection.InspPlanOperationInternalID = _InspectionCharacteristic.InspPlanOperationInternalID and $projection.InspectionCharacteristic = _InspectionCharacteristic.InspectionCharacteristic

Annotations (14)

NameValueLevelField
AbapCatalog.buffering.status #NOT_ALLOWED view
AbapCatalog.compiler.compareFilter true view
AbapCatalog.sqlViewName IQLTYLVLANALYZE view
AccessControl.authorizationCheck #CHECK view
AccessControl.personalData.blocking #REQUIRED view
Analytics.dataCategory #CUBE view
ClientHandling.algorithm #SESSION_VARIABLE view
EndUserText.label Quality Level History - Cube view
Metadata.allowExtensions true view
ObjectModel.usageType.serviceQuality #C view
ObjectModel.usageType.sizeCategory #XXL view
ObjectModel.usageType.dataClass #MIXED view
VDM.viewType #COMPOSITE view
VDM.lifecycle.contract.type #SAP_INTERNAL_API view

Fields (47)

KeyFieldSource TableSource FieldDescription
KEY InspectionLot I_InspectionLot InspectionLot
KEY InspPlanOperationInternalID I_InspectionCharacteristic InspPlanOperationInternalID
KEY InspectionCharacteristic
Material I_InspectionLot Material
Plant I_InspectionLot Plant
InspectionSpecificationText I_InspectionCharacteristic InspectionSpecificationText
BillOfOperationsType I_InspectionLot BillOfOperationsType
BillOfOperationsGroup I_InspectionLot BillOfOperationsGroup
BillOfOperationsVariant I_InspectionLot BillOfOperationsVariant
Supplier Supplier
Customer Customer
Manufacturer Manufacturer
InspectionLotType I_InspectionLot InspectionLotType
InspectionLotUsageDecisionCode _InspLotUsageDecision InspectionLotUsageDecisionCode
InspectionLotStatusSkip I_InspectionLot InspectionLotIsSkipped
InspectionLotCreatedOn InspectionLotCreatedOn
InspectionLotDynamicLevel InspectionLotDynamicLevel
InspLotUsageDecisionCodeGroup _InspLotUsageDecision InspLotUsageDecisionCodeGroup
IndicatorValue _InspectionLotIsSkipped IndicatorValue
MatlQualityAuthorizationGroup MatlQualityAuthorizationGroup
int4endasInspectionLotCount
int4endasInspCharCount
int4endasInspectionLotIsSkipped
int4endasInspectionLotIsNotSkipped
int4endasInspCharcSkipCount
int4endasInspCharcNotSkipCount
int4endasInspectionNotSkippedCount
QualityLevelCount
IsBusinessPurposeCompleted I_InspectionLot IsBusinessPurposeCompleted
CalendarYear I_CalendarDate CalendarYear
CalendarQuarter I_CalendarDate CalendarQuarter
CalendarMonth I_CalendarDate CalendarMonth
CalendarWeek I_CalendarDate CalendarWeek
_Plant I_InspectionLot _Plant
_Material I_InspectionLot _Material
_Supplier _Supplier
_Customer _Customer
_Manufacturer _Manufacturer
_InspectionLotType _InspectionLotType
_UsageDecisionCode _InspLotUsageDecision _UsageDecisionCode
_UsageDecisionCodeGroup _InspLotUsageDecision _UsageDecisionCodeGroup
_InspectionLotDynamicLevel _InspectionLotDynamicLevel
_InspLotDynamicRule _InspLotDynamicRule
_InspLotDynRuleStage _InspLotDynRuleStage
_InspectionSeverity _InspectionSeverity
_IndicatorText _InspectionLotIsSkipped _IndicatorText
_InspectionCharacteristic _InspectionCharacteristic
@AbapCatalog : {
  buffering.status: #NOT_ALLOWED,
  compiler.compareFilter: true,
  sqlViewName: 'IQLTYLVLANALYZE'
}
@AccessControl: {
  authorizationCheck: #CHECK,
  personalData.blocking: #REQUIRED
}
@Analytics: {
  dataCategory: #CUBE
}
@ClientHandling.algorithm: #SESSION_VARIABLE
@EndUserText.label: 'Quality Level History - Cube'
@Metadata: {
    allowExtensions:true
   // ignorePropagatedAnnotations: true

}
@ObjectModel: {
  usageType: {
    serviceQuality: #C,
    sizeCategory  : #XXL,
    dataClass     : #MIXED
  }
}
@VDM.viewType: #COMPOSITE
@VDM.lifecycle.contract.type: #SAP_INTERNAL_API

define view I_QualityLevelAnalysisCube
  with parameters
    P_StartDate : mm_a_delivery_date,
    P_EndDate   : mm_a_delivery_date
  as select from    I_InspectionLot            as _InspLot
    left outer join I_InspectionCharacteristic as _InspChar     on  _InspChar.InspectionLot            = _InspLot.InspectionLot
                                                                and _InspLot.InspectionLotDynamicLevel = '3'
                                                                and _InspChar.InspLotDynamicRule != ''
    left outer join I_CalendarDate             as _CalendarDate on _InspLot.InspectionLotCreatedOn = _CalendarDate.CalendarDate
  /* Text Associations */
  association [1..1] to I_InspLotDynamicRule        as _InspLotDynamicRule        on  $projection.InspLotDynamicRule = _InspLotDynamicRule.InspLotDynamicRule
  association [1..1] to I_InspectionLotDynamicLevel as _InspectionLotDynamicLevel on  $projection.InspectionLotDynamicLevel = _InspectionLotDynamicLevel.InspectionLotDynamicLevel
  association [1..1] to I_InspectionSeverity        as _InspectionSeverity        on  $projection.InspectionSeverity = _InspectionSeverity.InspectionSeverity
  association [1..1] to I_InspLotDynRuleStage       as _InspLotDynRuleStage       on  $projection.InspLotDynamicRule     = _InspLotDynRuleStage.InspLotDynamicRule
                                                                                  and $projection.InspectionDynamicStage = _InspLotDynRuleStage.InspLotDynRuleStage
  /* Indicator Text Associations */
  association [1..1] to I_Indicator                 as _InspectionLotIsSkipped    on  $projection.InspectionLotStatusSkip = _InspectionLotIsSkipped.IndicatorValue
  association [1..1] to I_InspectionCharacteristic  as _InspectionCharacteristic  on  $projection.InspectionLot               = _InspectionCharacteristic.InspectionLot
                                                                                  and $projection.InspPlanOperationInternalID = _InspectionCharacteristic.InspPlanOperationInternalID
                                                                                  and $projection.InspectionCharacteristic    = _InspectionCharacteristic.InspectionCharacteristic
{

  key _InspLot.InspectionLot,
  key _InspChar.InspPlanOperationInternalID,
  key cast(_InspChar.InspectionCharacteristic as vdm_qmerknrp) as InspectionCharacteristic,
     
      /*** Dimensions (Table Order) ***/
      @ObjectModel.foreignKey.association: '_Material'
      @UI.textArrangement: #TEXT_FIRST
      _InspLot.Material,

      @ObjectModel.foreignKey.association: '_Plant'
      _InspLot.Plant,

      _InspChar.InspectionSpecificationText,

      _InspLot.BillOfOperationsType,

      _InspLot.BillOfOperationsGroup,

      _InspLot.BillOfOperationsVariant,

      @ObjectModel.foreignKey.association: '_Supplier'
      Supplier,

      @ObjectModel.foreignKey.association: '_Customer'
      Customer,

      @ObjectModel.foreignKey.association: '_Manufacturer'
      Manufacturer,
      
      @ObjectModel.foreignKey.association: '_InspectionLotType'
      _InspLot.InspectionLotType,

      @ObjectModel.foreignKey.association: '_UsageDecisionCode'
      _InspLotUsageDecision.InspectionLotUsageDecisionCode                                                                                          as InspectionLotUsageDecisionCode,

      @ObjectModel.foreignKey.association: '_InspLotDynamicRule'
      case
        when InspectionLotDynamicLevel = '3' then _InspChar.InspLotDynamicRule
        else _InspLot.InspLotDynamicRule
      end                                                                                                                                           as InspLotDynamicRule,

      @ObjectModel.foreignKey.association: '_InspLotDynRuleStage'
      case
        when InspectionLotDynamicLevel = '3' then _InspChar._InspCharacteristic.InspLotDynRuleStage
        else _InspLot.InspectionDynamicStage
      end                                                                                                                                           as InspectionDynamicStage,

      _InspLot.InspectionLotIsSkipped                                                                                                               as InspectionLotStatusSkip,

      @ObjectModel.text.association: '_IndicatorText'
      case
        when InspectionLotDynamicLevel = '3' and _InspChar.InspLotDynamicRule != ''
         and ( _InspChar.InspectionCharacteristicStatus = '0'
            or _InspChar.InspectionCharacteristicStatus = '1'
            or _InspChar.InspectionCharacteristicStatus = '2'
            or _InspChar.InspectionCharacteristicStatus = '3'
            or _InspChar.InspectionCharacteristicStatus = '5' ) then ''
        when InspectionLotDynamicLevel = '3' and _InspChar.InspLotDynamicRule != ''
          and _InspChar.InspectionCharacteristicStatus = '4'    then 'X'
        else _InspectionLotIsSkipped.IndicatorValue
      end                                                                                                                                           as IsInspectionLotSkippedText,

      /*** Other Dimensions ***/
      InspectionLotCreatedOn,

      @ObjectModel.foreignKey.association: '_InspectionLotDynamicLevel'
      InspectionLotDynamicLevel,

      @ObjectModel.foreignKey.association: '_InspectionSeverity'
      case
        when InspectionLotDynamicLevel = '3' then _InspChar._InspCharacteristic.InspectionSeverity
        else _InspLot.InspectionSeverity
      end                                                                                                                                           as InspectionSeverity,

      @ObjectModel.foreignKey.association: '_UsageDecisionCodeGroup'
      _InspLotUsageDecision.InspLotUsageDecisionCodeGroup                                                                                           as InspLotUsageDecisionCodeGroup,

      /* Exposed for Association */
      _InspectionLotIsSkipped.IndicatorValue,

      /* Exposed for DCL */
      MatlQualityAuthorizationGroup,

      /* Measures */
      @DefaultAggregation: #SUM
      case
        when ( InspectionLotDynamicLevel = '0' or InspectionLotDynamicLevel = '1' ) then cast( 1 as abap.int4 )
        else cast( 0 as abap.int4 )
      end                                                                                                                                           as InspectionLotCount,

      @DefaultAggregation: #SUM
      case
        when InspectionLotDynamicLevel = '3' then cast( 1 as abap.int4 )
        else cast( 0 as abap.int4 )
      end                                                                                                                                           as InspCharCount,

      @DefaultAggregation: #SUM
      case
          when ( InspectionLotDynamicLevel = '0' or InspectionLotDynamicLevel = '1' ) and InspectionLotIsSkipped = 'X' then cast( 1 as abap.int4 )
          else cast( 0 as abap.int4 )
      end                                                                                                                                           as InspectionLotIsSkipped,

      @DefaultAggregation: #SUM
      case
        when ( InspectionLotDynamicLevel = '0' or InspectionLotDynamicLevel = '1' ) and InspectionLotIsSkipped = '' then cast( 1 as abap.int4 )
        else cast( 0 as abap.int4 )
      end                                                                                                                                           as InspectionLotIsNotSkipped,

      @DefaultAggregation: #SUM
      case
        when _InspChar.InspLotDynamicRule != '' and _InspChar.InspectionCharacteristicStatus = '4' then cast( 1 as abap.int4 )
        else cast( 0 as abap.int4 )
      end                                                                                                                                           as InspCharcSkipCount,

      @DefaultAggregation: #SUM
      case
        when _InspChar.InspLotDynamicRule != ''
         and ( _InspChar.InspectionCharacteristicStatus = '0'
            or _InspChar.InspectionCharacteristicStatus = '1'
            or _InspChar.InspectionCharacteristicStatus = '2'
            or _InspChar.InspectionCharacteristicStatus = '3' ) then cast( 1 as abap.int4 )
        else cast( 0 as abap.int4 )
      end                                                                                                                                           as InspCharcNotSkipCount,

      @DefaultAggregation: #SUM
      case
        when ( InspectionLotDynamicLevel = '0' or InspectionLotDynamicLevel = '1' ) 
          and InspectionLotIsSkipped = '' then cast( 1 as abap.int4 )
        when _InspChar.InspLotDynamicRule != ''
         and ( _InspChar.InspectionCharacteristicStatus = '0'
            or _InspChar.InspectionCharacteristicStatus = '1'
            or _InspChar.InspectionCharacteristicStatus = '2'
            or _InspChar.InspectionCharacteristicStatus = '3' ) then cast( 1 as abap.int4 )
        else cast( 0 as abap.int4 )
      end                                                                                                                                           as InspectionNotSkippedCount,

      @DefaultAggregation: #SUM
      cast( 1 as abap.int4 )                                                                                                                        as QualityLevelCount,

      /* DPP */
      @Consumption: {
          hidden: true
      }
      _InspLot.IsBusinessPurposeCompleted,
      
      /* Calendar Function Columns */
      _CalendarDate.CalendarYear,
      _CalendarDate.CalendarQuarter,
      _CalendarDate.CalendarMonth,
      _CalendarDate.CalendarWeek,

      /* Text Associations */
      _InspLot._Plant,
      _InspLot._Material,
      _Supplier,
      _Customer,
      _Manufacturer,
      _InspectionLotType,
      _InspLotUsageDecision._UsageDecisionCode,
      _InspLotUsageDecision._UsageDecisionCodeGroup,
      _InspectionLotDynamicLevel,
      _InspLotDynamicRule,
      _InspLotDynRuleStage,
      _InspectionSeverity,
      _InspectionLotIsSkipped._IndicatorText,
      _InspectionCharacteristic
}
where
      InspectionLotDynamicLevel != ''
  and InspectionLotCreatedOn >= $parameters.P_StartDate
  and InspectionLotCreatedOn <= $parameters.P_EndDate