I_PRODUCTGROUP_2

CDS View

Product Group

I_PRODUCTGROUP_2 is a CDS View in S/4HANA. Product Group. 5 CDS views read from this table.

CDS Views using this table (5)

ViewTypeJoinVDMDescription
A_ProductGroup view from BASIC Product Group
A_ProductGroup_2 view from BASIC Product Group
I_CnsldtnMasterData view union_all COMPOSITE Consolidation - Combined Master Data
I_ProductGroupVH view from COMPOSITE Product group Value help
P_CnsldtnProductGroup view from COMPOSITE Consolidation Combined Product Group
@AbapCatalog:{
  sqlViewName: 'IPRODGRP2',
  compiler.compareFilter: true,
  preserveKey: true,
  buffering:{
    status: #ACTIVE,
    type: #GENERIC,
    numberOfKeyFields: 1
  }
}
@Analytics: { dataCategory: #DIMENSION ,
    dataExtraction: {
        enabled: true,
        delta.changeDataCapture.automatic: true
    }
    }
@EndUserText.label: 'Product Group'
@AccessControl.authorizationCheck: #NOT_REQUIRED

@VDM:{
  viewType: #BASIC,
  lifecycle.contract.type: #PUBLIC_LOCAL_API
}

@ObjectModel: {
//As the underlying table is of type T, Customizing,

//maintenance only by customer, no SAP imports, this CDS view does not require DCL

//There is no need to have two separate views(as value help and basic view),

//and this view can serve as a basic view and as a value help view.

  dataCategory: #VALUE_HELP,
  representativeKey: 'ProductGroup',
    supportedCapabilities: [ #SQL_DATA_SOURCE,
                             #CDS_MODELING_DATA_SOURCE,
                             #CDS_MODELING_ASSOCIATION_TARGET,
                             #VALUE_HELP_PROVIDER,
                             #EXTRACTION_DATA_SOURCE,
                             #SEARCHABLE_ENTITY,
                             #ANALYTICAL_DIMENSION
  ],
  usageType: {
    serviceQuality: #A,
    sizeCategory : #M,
    dataClass: #CUSTOMIZING
    }
}
@ClientHandling.algorithm: #SESSION_VARIABLE
@Search.searchable: true
@Metadata.ignorePropagatedAnnotations: true
@ObjectModel.sapObjectNodeType.name:'ProductGroup'
@Consumption.ranked: true
@ObjectModel.modelingPattern: #ANALYTICAL_DIMENSION
define view I_ProductGroup_2
  as select from t023

  association [0..*] to I_ProductGroupText_2        as _ProductGroupText          on $projection.ProductGroup = _ProductGroupText.ProductGroup
  association [0..1] to I_Prodvaluationclass        as _ProductValuationClass     on $projection.ValuationClass = _ProductValuationClass.ValuationClass
  association [0..1] to I_PurgAcknowledgmentProfile as _PurgAcknowledgmentProfile on $projection.PurchasingAcknProfile = _PurgAcknowledgmentProfile.PurchasingAcknProfile
  association [0..*] to I_ProductGroupHierarchyNode as _ProductGroupHierarchyNode on $projection.ProductGroup  = _ProductGroupHierarchyNode.ProductGroup
{
      @ObjectModel.text.association: '_ProductGroupText'

      @Search: {
        defaultSearchElement: true,
        fuzzinessThreshold: 0.8,
        ranking: #HIGH
      }
      @ObjectModel.hierarchy.association: '_ProductGroupHierarchyNode'
  key cast(t023.matkl as productgroup preserving type ) as ProductGroup,

      //The Authorization Group field is required for checks on Products.

      //(example: hide all Products that belong to a Product Group that is assigned to a specific Authgroup). See DCL of I_Product.

      //The group existence as such doesn’t have to be protected.


      @Consumption.hidden: true
      t023.begru                                        as AuthorizationGroup,
      @ObjectModel.foreignKey.association: '_ProductValuationClass'
      @UI.hidden: true
      t023.bklas                                        as ValuationClass,
      @ObjectModel.foreignKey.association: '_PurgAcknowledgmentProfile'
      @UI.hidden: true
      t023.ekwsl                                        as PurchasingAcknProfile,
      _ProductGroupText,
      _ProductValuationClass,
      _PurgAcknowledgmentProfile,
      _ProductGroupHierarchyNode
}