C_GRC_ProductChangeLog
Product change log
C_GRC_ProductChangeLog is a Consumption CDS View that provides data about "Product change log" in SAP S/4HANA. It reads from 2 data sources (I_ChangeDocumentItem, I_Product) and exposes 65 fields with key fields Product, ChangeDocument, ChangeDocDatabaseTableField, ChangeDocItemChangeType.
Data Sources (2)
| Source | Alias | Join Type |
|---|---|---|
| I_ChangeDocumentItem | I_ChangeDocumentItem | from |
| I_Product | I_Product | inner |
Annotations (13)
| Name | Value | Level | Field |
|---|---|---|---|
| AbapCatalog.sqlViewName | CGRCMATLMSTRCHG | view | |
| EndUserText.label | Product change log | view | |
| AbapCatalog.compiler.compareFilter | true | view | |
| AbapCatalog.preserveKey | true | view | |
| VDM.viewType | #CONSUMPTION | view | |
| OData.publish | true | view | |
| AbapCatalog.buffering.status | #NOT_ALLOWED | view | |
| AccessControl.personalData.blocking | #REQUIRED | view | |
| AccessControl.authorizationCheck | #CHECK | view | |
| ClientHandling.algorithm | #SESSION_VARIABLE | view | |
| ObjectModel.usageType.sizeCategory | #XXL | view | |
| ObjectModel.usageType.serviceQuality | #C | view | |
| ObjectModel.usageType.dataClass | #MIXED | view |
Fields (65)
| Key | Field | Source Table | Source Field | Description |
|---|---|---|---|---|
| KEY | Product | I_Product | Product | |
| KEY | ChangeDocument | I_ChangeDocumentItem | ChangeDocument | |
| KEY | ChangeDocDatabaseTableField | I_ChangeDocumentItem | ChangeDocDatabaseTableField | |
| KEY | ChangeDocItemChangeType | I_ChangeDocumentItem | ChangeDocItemChangeType | |
| ChangeDocCreationDate | ||||
| LastChangedByUser | ||||
| ChangeDocNewFieldValue | I_ChangeDocumentItem | ChangeDocNewFieldValue | New Field Value | |
| ChangeDocPreviousFieldValue | I_ChangeDocumentItem | ChangeDocPreviousFieldValue | Old Field Value | |
| ChangeDocNewUnit | I_ChangeDocumentItem | ChangeDocNewUnit | New Unit | |
| ChangeDocPreviousUnit | I_ChangeDocumentItem | ChangeDocPreviousUnit | Old Unit | |
| ChangeDocNewCurrency | I_ChangeDocumentItem | ChangeDocNewCurrency | New Currency | |
| ChangeDocPreviousCurrency | I_ChangeDocumentItem | ChangeDocPreviousCurrency | Old Currency | |
| ProductExternalID | I_Product | ProductExternalID | ||
| ProductType | I_Product | ProductType | ||
| ProductGroup | I_Product | ProductGroup | ||
| CreationDate | I_Product | CreationDate | ||
| CreationTime | I_Product | CreationTime | ||
| CreatedByUser | I_Product | CreatedByUser | ||
| IsMarkedForDeletion | I_Product | IsMarkedForDeletion | ||
| CrossPlantStatus | I_Product | CrossPlantStatus | ||
| CrossPlantStatusValidityDate | I_Product | CrossPlantStatusValidityDate | ||
| ProductOldID | I_Product | ProductOldID | ||
| SourceOfSupply | I_Product | SourceOfSupply | ||
| CountryOfOrigin | I_Product | CountryOfOrigin | ||
| ItemCategoryGroup | I_Product | ItemCategoryGroup | ||
| ProductHierarchy | I_Product | ProductHierarchy | ||
| Division | I_Product | Division | ||
| AuthorizationGroup | I_Product | AuthorizationGroup | ||
| ANPCode | I_Product | ANPCode | ||
| ProductCategory | I_Product | ProductCategory | ||
| Brand | I_Product | Brand | ||
| ProductIsConfigurable | I_Product | ProductIsConfigurable | ||
| IsBatchManagementRequired | I_Product | IsBatchManagementRequired | ||
| HasEmptiesBOM | I_Product | HasEmptiesBOM | ||
| ExternalProductGroup | I_Product | ExternalProductGroup | ||
| CrossPlantConfigurableProduct | I_Product | CrossPlantConfigurableProduct | ||
| QltyMgmtInProcmtIsActive | I_Product | QltyMgmtInProcmtIsActive | ||
| IsApprovedBatchRecordReqd | I_Product | IsApprovedBatchRecordReqd | ||
| ChangeDocObjectClass | I_ChangeDocumentItem | ChangeDocObjectClass | ||
| DatabaseTable | I_ChangeDocumentItem | DatabaseTable | ||
| _Text | I_Product | _Text | ||
| _ProdUnivHierarchyNode | I_Product | _ProdUnivHierarchyNode | ||
| _ProductType | I_Product | _ProductType | ||
| _ProductTypeName | I_Product | _ProductTypeName | ||
| _CreatedByUserContactCard | I_Product | _CreatedByUserContactCard | ||
| _ProductStatus | I_Product | _ProductStatus | ||
| _ProductStatusText | I_Product | _ProductStatusText | ||
| _ProductGroup_2 | I_Product | _ProductGroup_2 | ||
| _ProductGroupText_2 | I_Product | _ProductGroupText_2 | ||
| _ItemCategoryGroup | I_Product | _ItemCategoryGroup | ||
| _ItemCategoryGroupText | I_Product | _ItemCategoryGroupText | ||
| _ProductHierarchy | I_Product | _ProductHierarchy | ||
| _ProductHierarchyText | I_Product | _ProductHierarchyText | ||
| _Division | I_Product | _Division | ||
| _DivisionText | I_Product | _DivisionText | ||
| _BR_ANPCode | I_Product | _BR_ANPCode | ||
| _BR_ANPCodeText | I_Product | _BR_ANPCodeText | ||
| _ProductCategory | I_Product | _ProductCategory | ||
| _ProductCategoryText | I_Product | _ProductCategoryText | ||
| _Brand | I_Product | _Brand | ||
| _BrandText | I_Product | _BrandText | ||
| _ExternalProductGroup | I_Product | _ExternalProductGroup | ||
| _ExtProdGrpText | I_Product | _ExtProdGrpText | ||
| _CrossPlantConfigurableProduct | I_Product | _CrossPlantConfigurableProduct | ||
| _MaterialText | I_Product | _MaterialText |
@AbapCatalog.sqlViewName: 'CGRCMATLMSTRCHG'
@EndUserText.label: 'Product change log'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@VDM.viewType: #CONSUMPTION
@OData.publish: true
@AbapCatalog.buffering.status: #NOT_ALLOWED
@AccessControl.personalData.blocking: #REQUIRED
@AccessControl.authorizationCheck: #CHECK
@ClientHandling.algorithm: #SESSION_VARIABLE
@ObjectModel.usageType.sizeCategory: #XXL
@ObjectModel.usageType.serviceQuality: #C
@ObjectModel.usageType.dataClass: #MIXED
define view C_GRC_ProductChangeLog
as select from I_ChangeDocumentItem
inner join I_Product on I_ChangeDocumentItem.ChangeDocObject = I_Product.Product
{
@ObjectModel: {
text.association: '_Text',
hierarchy.association: '_ProdUnivHierarchyNode'
}
key I_Product.Product,
key I_ChangeDocumentItem.ChangeDocument,
key I_ChangeDocumentItem.ChangeDocDatabaseTableField,
key I_ChangeDocumentItem.ChangeDocItemChangeType,
cast (I_ChangeDocumentItem._ChangeDocument.CreationDate as fis_udate) as ChangeDocCreationDate,
cast(I_ChangeDocumentItem._ChangeDocument.CreatedByUser as lcm_changed_by) as LastChangedByUser,
@EndUserText.label: 'New Field Value'
I_ChangeDocumentItem.ChangeDocNewFieldValue,
@EndUserText.label: 'Old Field Value'
I_ChangeDocumentItem.ChangeDocPreviousFieldValue,
@EndUserText.label: 'New Unit'
I_ChangeDocumentItem.ChangeDocNewUnit,
@EndUserText.label: 'Old Unit'
I_ChangeDocumentItem.ChangeDocPreviousUnit,
@EndUserText.label: 'New Currency'
I_ChangeDocumentItem.ChangeDocNewCurrency,
@EndUserText.label: 'Old Currency'
I_ChangeDocumentItem.ChangeDocPreviousCurrency,
I_Product.ProductExternalID,
@ObjectModel.foreignKey.association: '_ProductType'
@ObjectModel.text.association: '_ProductTypeName'
I_Product.ProductType,
@ObjectModel.foreignKey.association: '_ProductGroup_2'
@ObjectModel.text.association: '_ProductGroupText_2'
I_Product.ProductGroup,
@Semantics.systemDate.createdAt: true
I_Product.CreationDate,
@Semantics.systemTime.createdAt: true
I_Product.CreationTime,
@ObjectModel.foreignKey.association: '_CreatedByUserContactCard'
I_Product.CreatedByUser,
I_Product.IsMarkedForDeletion,
@ObjectModel.foreignKey.association: '_ProductStatus'
@ObjectModel.text.association: '_ProductStatusText'
I_Product.CrossPlantStatus,
I_Product.CrossPlantStatusValidityDate,
I_Product.ProductOldID,
I_Product.SourceOfSupply,
I_Product.CountryOfOrigin,
@ObjectModel.foreignKey.association: '_ItemCategoryGroup'
@ObjectModel.text.association: '_ItemCategoryGroupText'
I_Product.ItemCategoryGroup,
@ObjectModel.foreignKey.association: '_ProductHierarchy'
@ObjectModel.text.association: '_ProductHierarchyText'
I_Product.ProductHierarchy,
@ObjectModel.foreignKey.association: '_Division'
@ObjectModel.text.association: '_DivisionText'
I_Product.Division,
I_Product.AuthorizationGroup,
@ObjectModel:{
foreignKey.association: '_BR_ANPCode',
text.association: '_BR_ANPCodeText'
}
I_Product.ANPCode,
@ObjectModel.foreignKey.association: '_ProductCategory'
@ObjectModel.text.association: '_ProductCategoryText'
I_Product.ProductCategory,
@ObjectModel.foreignKey.association: '_Brand'
@ObjectModel.text.association: '_BrandText'
I_Product.Brand,
I_Product.ProductIsConfigurable,
I_Product.IsBatchManagementRequired,
I_Product.HasEmptiesBOM,
@ObjectModel.foreignKey.association: '_ExternalProductGroup'
@ObjectModel.text.association: '_ExtProdGrpText'
I_Product.ExternalProductGroup,
@Consumption.valueHelpDefinition: [
{ entity: { name: 'I_ProductStdVH',
element: 'Product' }
}]
@ObjectModel.foreignKey.association: '_CrossPlantConfigurableProduct'
@ObjectModel.text.association: '_MaterialText'
I_Product.CrossPlantConfigurableProduct,
I_Product.QltyMgmtInProcmtIsActive,
I_Product.IsApprovedBatchRecordReqd,
I_ChangeDocumentItem.ChangeDocObjectClass,
I_ChangeDocumentItem.DatabaseTable,
I_Product._Text,
I_Product._ProdUnivHierarchyNode,
I_Product._ProductType,
I_Product._ProductTypeName,
I_Product._CreatedByUserContactCard,
I_Product._ProductStatus,
I_Product._ProductStatusText,
I_Product._ProductGroup_2,
I_Product._ProductGroupText_2,
I_Product._ItemCategoryGroup,
I_Product._ItemCategoryGroupText,
I_Product._ProductHierarchy,
I_Product._ProductHierarchyText,
I_Product._Division,
I_Product._DivisionText,
I_Product._BR_ANPCode,
I_Product._BR_ANPCodeText,
I_Product._ProductCategory,
I_Product._ProductCategoryText,
I_Product._Brand,
I_Product._BrandText,
I_Product._ExternalProductGroup,
I_Product._ExtProdGrpText,
I_Product._CrossPlantConfigurableProduct,
I_Product._MaterialText
}
where
I_ChangeDocumentItem.ChangeDocObjectClass = 'MATERIAL'
and I_ChangeDocumentItem.DatabaseTable = 'MARA'
/*+[internal] {
"BASEINFO":
{
"FROM":
[
"I_CHANGEDOCUMENT",
"I_CHANGEDOCUMENTITEM",
"I_PRODUCT"
],
"ASSOCIATED":
[
"I_BRAND",
"I_BRANDTEXT",
"I_BR_ANPCODE",
"I_BR_ANPCODETEXT",
"I_DIVISION",
"I_DIVISIONTEXT",
"I_EXTPRODGRP",
"I_EXTPRODGRPTEXT",
"I_ITEMCATEGORYGROUP",
"I_ITEMCATEGORYGROUPTEXT",
"I_PRODUCT",
"I_PRODUCTCATEGORY",
"I_PRODUCTCATEGORYTEXT",
"I_PRODUCTDESCRIPTION",
"I_PRODUCTGROUPTEXT_2",
"I_PRODUCTGROUP_2",
"I_PRODUCTHIERARCHY",
"I_PRODUCTHIERARCHYTEXT",
"I_PRODUCTSTATUS",
"I_PRODUCTSTATUSTEXT",
"I_PRODUCTTEXT",
"I_PRODUCTTYPE",
"I_PRODUCTTYPETEXT",
"I_PRODUNIVHIERARCHYNODE",
"I_USERCONTACTCARD"
],
"BASE":
[
"I_PRODUCT"
],
"ANNO_REF":
[],
"SCALAR_FUNCTION":
[],
"VERSION":0,
"ANNOREF_EVALUATION_ERROR":""
}
}*/
Learn More
- What Is a CDS View in SAP S/4HANA?
- Types of CDS Views: Basic, Composite, Consumption, and Transactional
- SAP Tables vs CDS Views — Key Differences
- Understanding Data Lineage in SAP S/4HANA
- VDM (Virtual Data Model) in SAP S/4HANA Explained
- CDS View Annotations — A Complete Guide
- CDS View Field Mapping and Associations
- Understanding the SAP S/4HANA Data Model
- CDS View Extensions and Custom Fields in SAP S/4HANA
- Released APIs and Stability Contracts in SAP S/4HANA