C_ProdAssgblToStoreVH
Product Assignable to Store
C_ProdAssgblToStoreVH is a Consumption CDS View that provides data about "Product Assignable to Store" in SAP S/4HANA. It reads from 2 data sources (I_ProductRetail, I_Product) and exposes 34 fields with key field Product. It has 12 associations to related views. It is exposed through 2 OData services (UI_RFM_MNG_ASSTMT_MODULES, UI_RFM_PROD_ASSIGN_EXPL_ASM). It is used in 1 Fiori application: Manage Assortment Modules. Part of development package RFM_ASSORTMENT_MDL_APPS_COMMON.
Data Sources (2)
| Source | Alias | Join Type |
|---|---|---|
| I_ProductRetail | I_ProductRetail | inner |
| I_Product | Product | from |
Associations (12)
| Cardinality | Target | Alias | Condition |
|---|---|---|---|
| [0..1] | I_RetailCharacteristic | _Characteristic1 | _Characteristic1.CharcInternalID = Product.ProdCharc1InternalNumber |
| [0..1] | I_RetailCharacteristic | _Characteristic2 | _Characteristic2.CharcInternalID = Product.ProdCharc2InternalNumber |
| [0..1] | I_RetailCharacteristic | _Characteristic3 | _Characteristic3.CharcInternalID = Product.ProdCharc3InternalNumber |
| [0..1] | I_RetailCharacteristicValueT | _RetProdCharc1Text_2 | _RetProdCharc1Text_2.CharacteristicInternalID = Product.ProdCharc1InternalNumber and _RetProdCharc1Text_2.RetailCharacteristicValue = Product.ProductCharacteristic1 and _RetProdCharc1Text_2.Language = $session.system_language |
| [0..1] | I_RetailCharacteristicValueT | _RetProdCharc2Text_2 | _RetProdCharc2Text_2.CharacteristicInternalID = Product.ProdCharc2InternalNumber and _RetProdCharc2Text_2.RetailCharacteristicValue = Product.ProductCharacteristic2 and _RetProdCharc2Text_2.Language = $session.system_language |
| [0..1] | I_RetailCharacteristicValueT | _RetProdCharc3Text_2 | _RetProdCharc3Text_2.CharacteristicInternalID = Product.ProdCharc3InternalNumber and _RetProdCharc3Text_2.RetailCharacteristicValue = Product.ProductCharacteristic3 and _RetProdCharc3Text_2.Language = $session.system_language |
| [0..1] | I_UnitOfMeasure | _BaseUnit | $projection.BaseUnit = _BaseUnit.UnitOfMeasure |
| [0..1] | I_UnitOfMeasure | _WeightUnit | $projection.WeightUnit = _WeightUnit.UnitOfMeasure |
| [0..1] | I_ProductCategoryText | _ProductCategoryText | _ProductCategoryText.ProductCategory = $projection.ArticleCategory and _ProductCategoryText.Language = $session.system_language |
| [0..1] | I_ProductGroupText_2 | _ProductGroupText | _ProductGroupText.ProductGroup = $projection.MerchandiseCategory and _ProductGroupText.Language = $session.system_language |
| [0..1] | I_ProductText | _ProductText | _ProductText.Product = $projection.Product and _ProductText.Language = $session.system_language |
| [0..1] | I_ProductDescription | _MaterialText | $projection.CrossPlantConfigurableProduct = _MaterialText.Product and _MaterialText.Language = $session.system_language |
Annotations (13)
| Name | Value | Level | Field |
|---|---|---|---|
| AccessControl.authorizationCheck | #MANDATORY | view | |
| AccessControl.personalData.blocking | #NOT_REQUIRED | view | |
| Consumption.ranked | true | view | |
| EndUserText.label | Product Assignable to Store | view | |
| Metadata.allowExtensions | true | view | |
| Metadata.ignorePropagatedAnnotations | true | view | |
| ObjectModel.dataCategory | #VALUE_HELP | view | |
| ObjectModel.representativeKey | Product | view | |
| ObjectModel.usageType.serviceQuality | #C | view | |
| ObjectModel.usageType.sizeCategory | #XXL | view | |
| ObjectModel.usageType.dataClass | #MASTER | view | |
| Search.searchable | true | view | |
| VDM.viewType | #CONSUMPTION | view |
OData Services (2)
| Service | Binding | Version | Contract | Release |
|---|---|---|---|---|
| UI_RFM_MNG_ASSTMT_MODULES | UI_RFM_MNG_ASSTMT_MODULES | V2 | C1 | NOT_RELEASED |
| UI_RFM_PROD_ASSIGN_EXPL_ASM | UI_RFM_PROD_ASSGN_EXPL_ASM | V2 | C1 | NOT_RELEASED |
Fiori Apps (1)
| App ID | App Name | Type | Description |
|---|---|---|---|
| F4892 | Manage Assortment Modules | Transactional | An application to manage assortment modules. |
Manage Assortment Modules
Business Role: Assortment Specialist - Retail
With this feature, you can select up to 1,000 products at a time to assign them to an assortment module version, including its follow-on versions.
Fields (34)
| Key | Field | Source Table | Source Field | Description |
|---|---|---|---|---|
| KEY | Product | I_Product | Product | |
| ProductName | _ProductText | ProductName | ||
| ProductStandardID | I_Product | ProductStandardID | ||
| MerchandiseCategory | ||||
| CrossPlantConfigurableProduct | ||||
| CrsPlntConfigurableProductName | ||||
| LongProductCharacteristic1 | ||||
| LongProductCharacteristic2 | ||||
| LongProductCharacteristic3 | ||||
| ArticleCategory | I_Product | ArticleCategory | ||
| CreationDate | I_Product | CreationDate | ||
| RetailCharc1WithValueName | ||||
| RetailCharc2WithValueName | ||||
| RetailCharc3WithValueName | ||||
| ProductCharacteristic1Desc | ||||
| ProductCharacteristic2Desc | ||||
| ProductCharacteristic3Desc | ||||
| ProductExternalID | I_Product | ProductExternalID | ||
| IndustrySector | I_Product | IndustrySector | ||
| ProductType | I_Product | ProductType | ||
| _ProductType | I_Product | _ProductType_2 | ||
| MerchandiseCategoryName | ||||
| BaseUnit | I_Product | BaseUnit | ||
| GrossWeight | I_Product | GrossWeight | ||
| NetWeight | I_Product | NetWeight | ||
| WeightUnit | I_Product | WeightUnit | ||
| ManufacturerNumber | I_Product | ManufacturerNumber | ||
| AuthorizationGroup | I_Product | AuthorizationGroup | ||
| IsBatchManagementRequired | I_Product | IsBatchManagementRequired | ||
| ProductManufacturerNumber | I_Product | ProductManufacturerNumber | ||
| ProductCategoryName | ||||
| _ProductGroup | I_Product | _ProductGroup_2 | ||
| _BaseUnit | _BaseUnit | |||
| _WeightUnit | _WeightUnit |
@AccessControl.authorizationCheck: #MANDATORY
@AccessControl.personalData.blocking: #NOT_REQUIRED
@Consumption.ranked: true
@EndUserText.label: 'Product Assignable to Store'
@Metadata.allowExtensions: true
@Metadata.ignorePropagatedAnnotations: true
@ObjectModel.dataCategory: #VALUE_HELP
@ObjectModel.representativeKey: 'Product'
@ObjectModel.usageType: { serviceQuality: #C, sizeCategory: #XXL, dataClass: #MASTER }
@Search.searchable: true
@VDM.viewType: #CONSUMPTION
define view entity C_ProdAssgblToStoreVH
as select from I_Product as Product
inner join I_ProductRetail on Product.Product = I_ProductRetail.Product
association [0..1] to I_RetailCharacteristic as _Characteristic1
on _Characteristic1.CharcInternalID = Product.ProdCharc1InternalNumber
association [0..1] to I_RetailCharacteristic as _Characteristic2
on _Characteristic2.CharcInternalID = Product.ProdCharc2InternalNumber
association [0..1] to I_RetailCharacteristic as _Characteristic3
on _Characteristic3.CharcInternalID = Product.ProdCharc3InternalNumber
association [0..1] to I_RetailCharacteristicValueT as _RetProdCharc1Text_2
on _RetProdCharc1Text_2.CharacteristicInternalID = Product.ProdCharc1InternalNumber
and _RetProdCharc1Text_2.RetailCharacteristicValue = Product.ProductCharacteristic1
and _RetProdCharc1Text_2.Language = $session.system_language
association [0..1] to I_RetailCharacteristicValueT as _RetProdCharc2Text_2
on _RetProdCharc2Text_2.CharacteristicInternalID = Product.ProdCharc2InternalNumber
and _RetProdCharc2Text_2.RetailCharacteristicValue = Product.ProductCharacteristic2
and _RetProdCharc2Text_2.Language = $session.system_language
association [0..1] to I_RetailCharacteristicValueT as _RetProdCharc3Text_2
on _RetProdCharc3Text_2.CharacteristicInternalID = Product.ProdCharc3InternalNumber
and _RetProdCharc3Text_2.RetailCharacteristicValue = Product.ProductCharacteristic3
and _RetProdCharc3Text_2.Language = $session.system_language
association [0..1] to I_UnitOfMeasure as _BaseUnit
on $projection.BaseUnit = _BaseUnit.UnitOfMeasure
association [0..1] to I_UnitOfMeasure as _WeightUnit
on $projection.WeightUnit = _WeightUnit.UnitOfMeasure
association [0..1] to I_ProductCategoryText as _ProductCategoryText
on _ProductCategoryText.ProductCategory = $projection.ArticleCategory
and _ProductCategoryText.Language = $session.system_language
association [0..1] to I_ProductGroupText_2 as _ProductGroupText
on _ProductGroupText.ProductGroup = $projection.MerchandiseCategory
and _ProductGroupText.Language = $session.system_language
association [0..1] to I_ProductText as _ProductText
on _ProductText.Product = $projection.Product
and _ProductText.Language = $session.system_language
association [0..1] to I_ProductDescription as _MaterialText
on $projection.CrossPlantConfigurableProduct = _MaterialText.Product
and _MaterialText.Language = $session.system_language
{
@ObjectModel.text.element: [ 'ProductName' ]
@Search.defaultSearchElement: true
@Search.fuzzinessThreshold: 0.8
@Search.ranking: #HIGH
key Product.Product,
@Search.defaultSearchElement: true
@Search.fuzzinessThreshold: 0.8
@Search.ranking: #MEDIUM
@Semantics.text: true
_ProductText.ProductName as ProductName,
@Feature: 'RFM_ASM_F4892_MASS_PROD_ASSIGN'
@ObjectModel.filter.transformedBy: 'ABAP:CL_RFM_ASM_PROD_GTIN_FILTER'
Product.ProductStandardID, // this is the GTIN
@ObjectModel.text.element: [ 'MerchandiseCategoryName' ]
@Search.ranking: #LOW
cast(Product.ProductGroup as rfm_mrchdscategory preserving type) as MerchandiseCategory,
@Feature: 'RFM_ASM_F4892_MASS_PROD_ASSIGN'
@ObjectModel.text.element: [ 'CrsPlntConfigurableProductName' ]
@Search.ranking: #LOW
cast(Product.CrossPlantConfigurableProduct as rfm_asm_generic_article preserving type) as CrossPlantConfigurableProduct,
@Feature: 'RFM_ASM_F4892_MASS_PROD_ASSIGN'
@Search.ranking: #LOW
@Semantics.text: true
cast(_MaterialText.ProductDescription as rfm_asm_generic_article_desc preserving type) as CrsPlntConfigurableProductName,
@Feature: 'RFM_ASM_F4892_MASS_PROD_ASSIGN'
@ObjectModel.filter.transformedBy: 'ABAP:CL_RFM_ASM_PROD_CHRCTR_FILTER'
@ObjectModel.text.element: [ 'ProductCharacteristic1Desc' ]
@Search.ranking: #LOW
cast(Product.ProductCharacteristic1 as rfm_asm_color_long) as LongProductCharacteristic1,
@Feature: 'RFM_ASM_F4892_MASS_PROD_ASSIGN'
@ObjectModel.filter.transformedBy: 'ABAP:CL_RFM_ASM_PROD_CHRCTR_FILTER'
@ObjectModel.text.element: [ 'ProductCharacteristic2Desc' ]
@Search.ranking: #LOW
cast(Product.ProductCharacteristic2 as rfm_asm_main_size_long) as LongProductCharacteristic2,
@Feature: 'RFM_ASM_F4892_MASS_PROD_ASSIGN'
@ObjectModel.filter.transformedBy: 'ABAP:CL_RFM_ASM_PROD_CHRCTR_FILTER'
@ObjectModel.text.element: [ 'ProductCharacteristic3Desc' ]
@Search.ranking: #LOW
cast(Product.ProductCharacteristic3 as rfm_asm_sec_size_long) as LongProductCharacteristic3,
@ObjectModel.text.element: [ 'ProductCategoryName' ]
Product.ArticleCategory,
@Feature: 'RFM_ASM_F4892_MASS_PROD_ASSIGN'
Product.CreationDate,
@Feature: 'RFM_ASM_F4892_MASS_PROD_ASSIGN'
cast(concat(concat(_Characteristic1.Characteristic, ' ('), concat(Product.ProductCharacteristic1, ')')) as rfm_asm_color_long preserving type)
as RetailCharc1WithValueName,
@Feature: 'RFM_ASM_F4892_MASS_PROD_ASSIGN'
cast(concat(concat(_Characteristic2.Characteristic, ' ('), concat(Product.ProductCharacteristic2, ')')) as rfm_asm_main_size_long preserving type)
as RetailCharc2WithValueName,
@Feature: 'RFM_ASM_F4892_MASS_PROD_ASSIGN'
cast(concat(concat(_Characteristic3.Characteristic, ' ('), concat(Product.ProductCharacteristic3, ')')) as rfm_asm_sec_size_long preserving type)
as RetailCharc3WithValueName,
@Feature: 'RFM_ASM_F4892_MASS_PROD_ASSIGN'
@Semantics.text: true
cast(_RetProdCharc1Text_2.RetailCharacteristicValueDesc as rfm_asm_color_long_desc preserving type) as ProductCharacteristic1Desc,
@Feature: 'RFM_ASM_F4892_MASS_PROD_ASSIGN'
@Semantics.text: true
cast(_RetProdCharc2Text_2.RetailCharacteristicValueDesc as rfm_asm_main_size_long_desc preserving type) as ProductCharacteristic2Desc,
@Feature: 'RFM_ASM_F4892_MASS_PROD_ASSIGN'
@Semantics.text: true
cast(_RetProdCharc3Text_2.RetailCharacteristicValueDesc as rfm_asm_sec_size_long_desc preserving type) as ProductCharacteristic3Desc,
@Consumption.hidden: true
@Search.defaultSearchElement: true
@Search.ranking: #LOW
Product.ProductExternalID,
@Search.ranking: #LOW
Product.IndustrySector as IndustrySector,
@Search.ranking: #LOW
Product.ProductType,
@Search.ranking: #LOW
Product._ProductType_2 as _ProductType,
@Semantics.text: true
cast(_ProductGroupText.ProductGroupName as rfm_mrchdscategory_desc preserving type) as MerchandiseCategoryName,
@ObjectModel.foreignKey.association: '_BaseUnit'
@Search.ranking: #LOW
Product.BaseUnit,
@DefaultAggregation: #NONE
@Search.ranking: #LOW
@Semantics.quantity.unitOfMeasure: 'WeightUnit'
Product.GrossWeight,
@DefaultAggregation: #NONE
@Search.ranking: #LOW
@Semantics.quantity.unitOfMeasure: 'WeightUnit'
Product.NetWeight,
@ObjectModel.foreignKey.association: '_WeightUnit'
@Search.ranking: #LOW
Product.WeightUnit,
@Search.ranking: #LOW
Product.ManufacturerNumber,
@Consumption.hidden: true
@Search.ranking: #LOW
Product.AuthorizationGroup,
@Search.ranking: #LOW
Product.IsBatchManagementRequired,
@Search.ranking: #LOW
Product.ProductManufacturerNumber,
@Semantics.text: true
cast(_ProductCategoryText.Name as rfm_asm_product_category_desc preserving type) as ProductCategoryName,
@Search.ranking: #LOW
Product._ProductGroup_2 as _ProductGroup,
_BaseUnit,
_WeightUnit
}
where ( Product.ArticleCategory = '00'
or Product.ArticleCategory = '02'
or Product.ArticleCategory = '10'
or Product.ArticleCategory = '11'
or Product.ArticleCategory = '12')
and Product.IsMarkedForDeletion = ''
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