C_ProdSubstnSet
Product Substitution Set
C_ProdSubstnSet is a Consumption CDS View that provides data about "Product Substitution Set" in SAP S/4HANA. It reads from 1 data source (I_ProdSubstnSet) and exposes 49 fields with key field MDSubstnUUID. It is exposed through 1 OData service (UI_PRODSUBSTITUTION_MANAGE). It is used in 1 Fiori application: Manage Substitutions - Products.
Data Sources (1)
| Source | Alias | Join Type |
|---|---|---|
| I_ProdSubstnSet | I_ProdSubstnSet | from |
Annotations (9)
| Name | Value | Level | Field |
|---|---|---|---|
| AccessControl.authorizationCheck | #CHECK | view | |
| AccessControl.personalData.blocking | #REQUIRED | view | |
| EndUserText.label | Product Substitution Set | view | |
| ObjectModel.representativeKey | MDSubstnUUID | view | |
| ObjectModel.usageType.dataClass | #MASTER | view | |
| ObjectModel.usageType.sizeCategory | #L | view | |
| ObjectModel.usageType.serviceQuality | #C | view | |
| VDM.viewType | #CONSUMPTION | view | |
| UI.headerInfo.typeNamePlural | Product Substitutions | view |
OData Services (1)
| Service | Binding | Version | Contract | Release |
|---|---|---|---|---|
| UI_PRODSUBSTITUTION_MANAGE | UI_PRODSUBSTITUTION_MANAGE | V2 | C1 | NOT_RELEASED |
Fiori Apps (1)
| App ID | App Name | Type | Description |
|---|---|---|---|
| F4785 | Manage Substitutions - Products | Transactional | An application to manage product substitutions |
Manage Substitutions - Products
Business Role: Master Data Specialist - Product Data
With this app, you can create and manage product substitutions. You can use this app to substitute a product with another product. For example, a supplier selling product A realizes that the product is out of stock. The supplier can substitute the product with product B to fulfill business requirements. You can create multiple substitutions for a product. Additionally, you can create aATP and eSPP relevant product substitutions. Note Extended Service Parts Planning (eSPP) application area does not support groups. Advanced Available To Promise (aATP) application area does not support the following: Time validities Sets Conversions using numerator and denominator Conversion percentage Groups
Key Features: You can use this app to: Create, edit, and delete product substitutions. Create plant-specific substitutions. You must ensure that both the product and its substitute belong to the same plant. Provide reasons for substitutions. View preceding and succeeding substitutions. Specify the order in which the substitutions are performed by sequencing them. Specify when a chain of substitutions has to stop. Specify which substitution has precedence. View product substitution graph.
Fields (49)
| Key | Field | Source Table | Source Field | Description |
|---|---|---|---|---|
| KEY | MDSubstnUUID | MDSubstnUUID | ||
| MDSubstnObjectType | MDSubstnObjectType | |||
| Product | Product | |||
| ProductDescription | ||||
| SubstituteProduct | SubstituteProduct | |||
| SubstituteProductDescription | ||||
| MDSubstnContextObjectType | MDSubstnContextObjectType | |||
| Plant | Plant | |||
| PlantName | ||||
| MDSubstnContextObjectType2 | MDSubstnContextObjectType2 | |||
| MDSubstnGroup | MDSubstnGroup | |||
| MDSubstnGroupDescription | ||||
| MDSubstnVersionValue | MDSubstnVersionValue | |||
| MDSubstnSet | MDSubstnSet | |||
| MDSubstnIsExit | MDSubstnIsExit | |||
| MDSubstnIsLeading | MDSubstnIsLeading | |||
| MDSubstnSequenceValue | MDSubstnSequenceValue | |||
| MDSubstnConversionNumerator | MDSubstnConversionNumerator | |||
| MDSubstnConversionDenominator | MDSubstnConversionDenominator | |||
| MDSubstnConversionPercent | MDSubstnConversionPercent | |||
| MDSubstnValidityStartDate | MDSubstnValidityStartDate | |||
| MDSubstnValidityStartTime | MDSubstnValidityStartTime | |||
| MDSubstnValidityEndDate | MDSubstnValidityEndDate | |||
| MDSubstnValidityEndTime | MDSubstnValidityEndTime | |||
| TimeZoneID | TimeZoneID | |||
| MDSubstnReason | MDSubstnReason | |||
| MDSubstnReasonDescription | ||||
| MDSubstnStatus | MDSubstnStatus | |||
| MDSubstnStatusDescription | ||||
| MDSubstnIsRlvtForATPProd | MDSubstnIsRlvtForATPProd | |||
| MDSubstnIsRelevantForESPP | MDSubstnIsRelevantForESPP | |||
| CreatedByUser | CreatedByUser | |||
| CreationDateTime | CreationDateTime | |||
| LastChangedByUser | LastChangedByUser | |||
| LastChangeDateTime | LastChangeDateTime | |||
| _MDObjectType | _MDObjectType | |||
| _ContextObjectTypeCode | _ContextObjectTypeCode | |||
| _ContextObjectTypeCode2 | _ContextObjectTypeCode2 | |||
| _Product | _Product | |||
| _SubstituteProduct | _SubstituteProduct | |||
| _Plant | _Plant | |||
| _Group | _Group | |||
| _ExitIndicator | _ExitIndicator | |||
| _LeadIndicator | _LeadIndicator | |||
| _TimeZone | _TimeZone | |||
| _Reason | _Reason | |||
| _Status | _Status | |||
| _MDSubstnIsRlvtForATPProd | _MDSubstnIsRlvtForATPProd | |||
| _MDSubstnIsRelevantForESPP | _MDSubstnIsRelevantForESPP |
@AccessControl:{
authorizationCheck: #CHECK,
personalData.blocking: #REQUIRED
}
@EndUserText.label: 'Product Substitution Set'
@ObjectModel:{
representativeKey: 'MDSubstnUUID',
semanticKey: [ 'Product', 'SubstituteProduct', 'Plant', 'MDSubstnGroup', 'MDSubstnReason' ],
usageType:{
dataClass: #MASTER,
sizeCategory: #L,
serviceQuality: #C
}
}
@VDM: {
viewType: #CONSUMPTION
}
@UI: {
headerInfo: {
typeNamePlural: 'Product Substitutions'
}
}
/*+[hideWarning] { "IDS" : [ "CALCULATED_FIELD_CHECK" ] } */
define view entity C_ProdSubstnSet
as select from I_ProdSubstnSet
{
@UI: {
hidden: true
}
key MDSubstnUUID,
@UI: {
hidden: true
}
MDSubstnObjectType,
@Consumption: {
semanticObject: 'Material'
}
@ObjectModel.text.element: ['ProductDescription']
Product,
@UI: {
hidden: true
}
_Product._Text[1:Language=$session.system_language].ProductName as ProductDescription,
@Consumption: {
semanticObject: 'Material'
}
@ObjectModel.text.element: ['SubstituteProductDescription']
@UI: {
lineItem: [
{ position: 10, importance: #HIGH }
],
textArrangement: #TEXT_LAST
}
SubstituteProduct,
@UI: {
hidden: true
}
_SubstituteProduct._Text[1:Language=$session.system_language].ProductName as SubstituteProductDescription,
@UI: {
hidden: true
}
MDSubstnContextObjectType,
@ObjectModel.text.element: ['PlantName']
@UI: {
hidden: true
}
Plant,
@UI: {
hidden: true
}
I_ProdSubstnSet._Plant.PlantName,
@UI: {
hidden: true
}
MDSubstnContextObjectType2,
@ObjectModel.text.element: ['MDSubstnGroupDescription']
@UI: {
hidden: true
}
MDSubstnGroup,
@UI: {
hidden: true
}
_Group._GroupText[1:Language=$session.system_language].MDSubstnGroupDescription,
@UI: {
hidden: true
}
MDSubstnVersionValue,
@UI: {
hidden: true
}
MDSubstnSet,
@UI: {
lineItem: [
{ position: 40, importance: #HIGH }
]
}
MDSubstnIsExit,
@UI: {
lineItem: [
{ position: 20, importance: #HIGH }
]
}
MDSubstnIsLeading,
@UI: {
lineItem: [
{ position: 30, importance: #HIGH }
]
}
MDSubstnSequenceValue,
@UI: {
lineItem: [
{ position: 50, importance: #MEDIUM }
]
}
MDSubstnConversionNumerator,
@UI: {
lineItem: [
{ position: 60, importance: #MEDIUM }
]
}
MDSubstnConversionDenominator,
@UI: {
lineItem: [
{ position: 70, importance: #MEDIUM }
]
}
MDSubstnConversionPercent,
@UI: {
hidden: true
}
MDSubstnValidityStartDate,
@UI: {
hidden: true
}
MDSubstnValidityStartTime,
@UI: {
hidden: true
}
MDSubstnValidityEndDate,
@UI: {
hidden: true
}
MDSubstnValidityEndTime,
@UI: {
hidden: true
}
TimeZoneID,
@ObjectModel.text.element: ['MDSubstnReasonDescription']
@UI: {
lineItem: [
{ position: 80, importance: #HIGH }
]
}
MDSubstnReason,
@UI: {
hidden: true
}
_Reason._Text[1:Language=$session.system_language].MDSubstnReasonDescription,
@ObjectModel.text.element: ['MDSubstnStatusDescription']
@UI: {
lineItem: [
{ position: 100, importance: #MEDIUM, criticality: 'MDSubstnStatusCriticality', criticalityRepresentation: #WITHOUT_ICON }
],
textArrangement: #TEXT_ONLY
}
MDSubstnStatus,
@UI: {
hidden: true
}
case MDSubstnStatus
when 'A' then 3
else 0
end as MDSubstnStatusCriticality,
_Status._Text[1:Language=$session.system_language].MDSubstnStatusDescription,
MDSubstnIsRlvtForATPProd,
@UI: {
hidden: true
}
MDSubstnIsRelevantForESPP,
CreatedByUser,
CreationDateTime,
LastChangedByUser,
LastChangeDateTime,
/* Associations */
_MDObjectType,
_ContextObjectTypeCode,
_ContextObjectTypeCode2,
_Product,
_SubstituteProduct,
_Plant,
_Group,
_ExitIndicator,
_LeadIndicator,
_TimeZone,
_Reason,
_Status,
_MDSubstnIsRlvtForATPProd,
_MDSubstnIsRelevantForESPP
}
where
MDSubstnObjectType = 'Product'
and MDSubstnContextObjectType = 'Plant'
and(
MDSubstnContextObjectType2 is initial
or MDSubstnContextObjectType2 is null
)
and MDSubstnSet is not initial
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