C_ProdSubstnTP
Manage Substitutions - Products
C_ProdSubstnTP is a Consumption CDS View that provides data about "Manage Substitutions - Products" in SAP S/4HANA. It reads from 1 data source (R_ProdSubstnTP) and exposes 78 fields with key field MDSubstnUUID. It has 2 associations to related views. 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 |
|---|---|---|
| R_ProdSubstnTP | R_ProdSubstnTP | projection |
Associations (2)
| Cardinality | Target | Alias | Condition |
|---|---|---|---|
| [0..*] | C_ProdSubstnSet | _SubstitutionSet | $projection.MDSubstnObjectType = _SubstitutionSet.MDSubstnObjectType and $projection.Product = _SubstitutionSet.Product and $projection.MDSubstnContextObjectType = _SubstitutionSet.MDSubstnContextObjectType and $projection.Plant = _SubstitutionSet.Plant and $projection.MDSubstnContextObjectType2 = _SubstitutionSet.MDSubstnContextObjectType2 and $projection.MDSubstnGroup = _SubstitutionSet.MDSubstnGroup and $projection.MDSubstnVersionValue = _SubstitutionSet.MDSubstnVersionValue and $projection.MDSubstnSet = _SubstitutionSet.MDSubstnSet |
| [0..*] | C_ProdSubstnExclsn | _SubstituteExclusion | $projection.MDSubstnObjectType = _SubstituteExclusion.MDSubstnObjectType and $projection.SubstituteProduct = _SubstituteExclusion.Product and $projection.MDSubstnContextObjectType = _SubstituteExclusion.MDSubstnContextObjectType and $projection.Plant = _SubstituteExclusion.Plant and $projection.MDSubstnContextObjectType2 = _SubstituteExclusion.MDSubstnContextObjectType2 and $projection.MDSubstnGroup = _SubstituteExclusion.MDSubstnGroup and $projection.MDSubstnVersionValue = _SubstituteExclusion.MDSubstnVersionValue |
Annotations (9)
| Name | Value | Level | Field |
|---|---|---|---|
| AccessControl.authorizationCheck | #CHECK | view | |
| EndUserText.label | Manage Substitutions - Products | view | |
| Metadata.allowExtensions | true | view | |
| ObjectModel.representativeKey | MDSubstnUUID | view | |
| ObjectModel.usageType.dataClass | #TRANSACTIONAL | view | |
| ObjectModel.usageType.serviceQuality | #C | view | |
| ObjectModel.usageType.sizeCategory | #M | view | |
| Search.searchable | true | view | |
| VDM.viewType | #CONSUMPTION | 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 (78)
| Key | Field | Source Table | Source Field | Description |
|---|---|---|---|---|
| KEY | MDSubstnUUID | MDSubstnUUID | ||
| MDSubstnObjectType | MDSubstnObjectType | |||
| Product | Product | |||
| ProductNameasProductDescriptionlocalized | ||||
| Material | _Product | Product | ||
| SubstituteProduct | SubstituteProduct | |||
| MatlFilterAnlytlMod | _SubstituteProduct | Product | ||
| MDSubstnContextObjectType | MDSubstnContextObjectType | |||
| Plant | Plant | |||
| PlantName | _Plant | PlantName | ||
| PlntFilterAnlytlMod | _Plant | Plant | ||
| MDSubstnContextObjectType2 | MDSubstnContextObjectType2 | |||
| MDSubstnGroup | MDSubstnGroup | |||
| MDSubstnGroupDescriptionlocalized | ||||
| MDSubstnVersionValue | MDSubstnVersionValue | |||
| MDSubstnSet | MDSubstnSet | |||
| MDSubstnIsExit | MDSubstnIsExit | |||
| MDSubstnIsLeading | MDSubstnIsLeading | |||
| MDSubstnSequenceValue | MDSubstnSequenceValue | |||
| MDSubstnConversionNumerator | MDSubstnConversionNumerator | |||
| MDSubstnConversionDenominator | MDSubstnConversionDenominator | |||
| MDSubstnConversionPercent | MDSubstnConversionPercent | |||
| MDSubstnValidityStartDateTime | MDSubstnValidityStartDateTime | |||
| MDSubstnValidityStartDate | MDSubstnValidityStartDate | |||
| MDSubstnValidityStartTime | MDSubstnValidityStartTime | |||
| MDSubstnValidityEndDateTime | MDSubstnValidityEndDateTime | |||
| MDSubstnValidityEndDate | MDSubstnValidityEndDate | |||
| MDSubstnValidityEndTime | MDSubstnValidityEndTime | |||
| TimeZoneID | TimeZoneID | |||
| TimeZoneTextlocalized | ||||
| MDSubstnReason | MDSubstnReason | |||
| MDSubstnReasonDescriptionlocalized | ||||
| MDSubstnStatus | MDSubstnStatus | |||
| int1 | ||||
| MDSubstnStatusDescriptionlocalized | ||||
| MDSubstnIsRlvtForATPProd | MDSubstnIsRlvtForATPProd | |||
| MDSubstnIsRelevantForESPP | MDSubstnIsRelevantForESPP | |||
| CreatedByUser | CreatedByUser | |||
| CreatedByUserFullName | _CreatedByUser | FullName | ||
| CreationDateTime | CreationDateTime | |||
| LastChangedByUser | LastChangedByUser | |||
| LastChangedByUserFullName | _LastChangedByUser | FullName | ||
| LastChangeDateTime | LastChangeDateTime | |||
| int1 | ||||
| char1 | ||||
| SrvcPartsSubstnRelshpCode | SrvcPartsSubstnRelshpCode | |||
| SrvcPartsSubstnUseUpStrategy | SrvcPartsSubstnUseUpStrategy | |||
| SrvcPartsSubstnUseUpDate | SrvcPartsSubstnUseUpDate | |||
| SrvcPartsIntchgtyGroupType | SrvcPartsIntchgtyGroupType | |||
| SrvcPartsSubstnReplacementCode | SrvcPartsSubstnReplacementCode | |||
| SrvcPartsStockExhaustionDate | SrvcPartsStockExhaustionDate | |||
| SrvcPartsSuccessorProdPlndDate | SrvcPartsSuccessorProdPlndDate | |||
| SrvcPartsStkExhaustionWrngDate | SrvcPartsStkExhaustionWrngDate | |||
| SrvcPartsSuccessorProdRcptDate | SrvcPartsSuccessorProdRcptDate | |||
| SrvcPartsReorganizationEndDate | SrvcPartsReorganizationEndDate | |||
| SrvcPartsProdSubstnFinalDate | SrvcPartsProdSubstnFinalDate | |||
| _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 | |||
| _CreatedByUser | _CreatedByUser | |||
| _LastChangedByUser | _LastChangedByUser | |||
| _SubstitutionSet | _SubstitutionSet | |||
| _SubstituteExclusion | _SubstituteExclusion | |||
| _RelType | _RelType | |||
| _UseUpStr | _UseUpStr | |||
| _IntType | _IntType | |||
| _RepType | _RepType |
@AccessControl: {
authorizationCheck: #CHECK,
privilegedAssociations: [
'_CreatedByUser',
'_LastChangedByUser'
]
}
@EndUserText.label: 'Manage Substitutions - Products'
@Metadata.allowExtensions: true
@ObjectModel: {
representativeKey: 'MDSubstnUUID',
semanticKey: [ 'Product', 'SubstituteProduct' ],
usageType: {
dataClass: #TRANSACTIONAL,
serviceQuality: #C,
sizeCategory: #M
}
}
@Search.searchable: true
@VDM: {
usage.type: [ #TRANSACTIONAL_PROCESSING_SERVICE ],
viewType: #CONSUMPTION
}
define root view entity C_ProdSubstnTP
provider contract transactional_query
as projection on R_ProdSubstnTP
association [0..*] to C_ProdSubstnSet as _SubstitutionSet on $projection.MDSubstnObjectType = _SubstitutionSet.MDSubstnObjectType
and $projection.Product = _SubstitutionSet.Product
and $projection.MDSubstnContextObjectType = _SubstitutionSet.MDSubstnContextObjectType
and $projection.Plant = _SubstitutionSet.Plant
and $projection.MDSubstnContextObjectType2 = _SubstitutionSet.MDSubstnContextObjectType2
and $projection.MDSubstnGroup = _SubstitutionSet.MDSubstnGroup
and $projection.MDSubstnVersionValue = _SubstitutionSet.MDSubstnVersionValue
and $projection.MDSubstnSet = _SubstitutionSet.MDSubstnSet
association [0..*] to C_ProdSubstnExclsn as _SubstituteExclusion on $projection.MDSubstnObjectType = _SubstituteExclusion.MDSubstnObjectType
and $projection.SubstituteProduct = _SubstituteExclusion.Product
and $projection.MDSubstnContextObjectType = _SubstituteExclusion.MDSubstnContextObjectType
and $projection.Plant = _SubstituteExclusion.Plant
and $projection.MDSubstnContextObjectType2 = _SubstituteExclusion.MDSubstnContextObjectType2
and $projection.MDSubstnGroup = _SubstituteExclusion.MDSubstnGroup
and $projection.MDSubstnVersionValue = _SubstituteExclusion.MDSubstnVersionValue
{
key MDSubstnUUID,
MDSubstnObjectType,
@Consumption: {
semanticObject: 'Material',
valueHelpDefinition: [{ entity: { name: 'I_ProductStdVH', element: 'Product' } }]
}
@ObjectModel.text.element: ['ProductDescription']
Product,
_Product._Text.ProductName as ProductDescription : localized,
@ObjectModel.text.association: null
_Product.Product as Material,
@Consumption: {
semanticObject: 'Material',
valueHelpDefinition: [{ entity: { name: 'I_ProductStdVH', element: 'Product' } }]
}
@ObjectModel.text.element: ['SubstituteProductDescription']
SubstituteProduct,
_SubstituteProduct._Text.ProductName as SubstituteProductDescription : localized,
@ObjectModel.text.association: null
_SubstituteProduct.Product as MatlFilterAnlytlMod,
MDSubstnContextObjectType,
@Consumption: {
valueHelpDefinition: [{ entity: { name: 'I_PlantStdVH', element: 'Plant' } }]
}
@ObjectModel.text.element: ['PlantName']
Plant,
_Plant.PlantName,
_Plant.Plant as PlntFilterAnlytlMod,
MDSubstnContextObjectType2,
@Consumption: {
semanticObject: 'ProductSubstitutionGroup',
valueHelpDefinition: [{ entity: { name: 'C_ProdSubstnGrpVH', element: 'MDSubstnGroup' },
additionalBinding: [{ localElement: 'MDSubstnVersionValue', element: 'MDSubstnVersionValue' }] }]
}
@ObjectModel.text.element: ['MDSubstnGroupDescription']
MDSubstnGroup,
_Group._GroupText.MDSubstnGroupDescription : localized,
MDSubstnVersionValue,
@Feature: 'SW:PROD_SUBSTN_ENABLE_ESPP'
MDSubstnSet,
MDSubstnIsExit,
MDSubstnIsLeading,
MDSubstnSequenceValue,
MDSubstnConversionNumerator,
MDSubstnConversionDenominator,
@Feature: 'SW:PROD_SUBSTN_ENABLE_ESPP'
MDSubstnConversionPercent,
// @Consumption.filter.hidden: true
@Semantics.timeZoneReference: 'TimeZoneID'
MDSubstnValidityStartDateTime,
MDSubstnValidityStartDate,
MDSubstnValidityStartTime,
// @Consumption.filter.hidden: true
@Semantics.timeZoneReference: 'TimeZoneID'
MDSubstnValidityEndDateTime,
MDSubstnValidityEndDate,
MDSubstnValidityEndTime,
@Consumption: {
// valueHelpDefinition: [{ entity: { name: 'I_TimeZone', element: 'TimeZoneID' } }]
valueHelpDefinition: [{ entity: { name: 'C_MDSubstnTmznDfltIANACodeVH', element: 'TimeZoneIANACode'} }] //'TimeZoneID'
}
// @ObjectModel.text.element: ['TimeZoneText']
@Semantics.timeZone: true
TimeZoneID,
_TimeZone._TimeZoneText.TimeZoneText : localized,
@Consumption: {
semanticObject: 'ProductSubstitutionReason',
valueHelpDefinition: [{ entity: { name: 'C_ProdSubstnRsnVH', element: 'MDSubstnReason' } }]
}
@ObjectModel.text.element: ['MDSubstnReasonDescription']
MDSubstnReason,
_Reason._Text.MDSubstnReasonDescription : localized,
@Consumption: {
valueHelpDefinition: [{ entity: { name: 'I_MDSubstnSts', element: 'MDSubstnStatus' } }]
}
@ObjectModel.text.element: ['MDSubstnStatusDescription']
MDSubstnStatus,
@ObjectModel.virtualElementCalculatedBy: 'ABAP:CL_PRODSUBSTN_VIRTUAL_ELEMENTS'
virtual MDSubstnStatusCriticality : abap.int1,
_Status._Text.MDSubstnStatusDescription : localized,
@Feature: 'SW:PROD_SUBSTN_ENABLE_ESPP'
MDSubstnIsRlvtForATPProd,
@Feature: 'SW:PROD_SUBSTN_ENABLE_ESPP'
MDSubstnIsRelevantForESPP,
@ObjectModel.text.element: ['CreatedByUserFullName']
CreatedByUser,
_CreatedByUser.FullName as CreatedByUserFullName,
CreationDateTime,
@ObjectModel.text.element: ['LastChangedByUserFullName']
LastChangedByUser,
_LastChangedByUser.FullName as LastChangedByUserFullName,
LastChangeDateTime,
@Consumption: {
valueHelpDefinition: [{ entity: { name: 'I_MDSubstnExclsnSts', element: 'MDSubstnExclsnSts' } }]
}
@EndUserText: {
label: 'Substitute Exclusion Status',
quickInfo: 'Substitute Exclusion Status'
}
@ObjectModel.virtualElementCalculatedBy: 'ABAP:CL_PRODSUBSTN_VIRTUAL_ELEMENTS'
virtual MDSubstnExclsnSts : md_substn_status_text,
@ObjectModel.virtualElementCalculatedBy: 'ABAP:CL_PRODSUBSTN_VIRTUAL_ELEMENTS'
virtual MDSubstnExclsnStsCritlty : abap.int1,
@ObjectModel.virtualElementCalculatedBy: 'ABAP:CL_PRODSUBSTN_VIRTUAL_ELEMENTS'
virtual MDSubstnDfltGroupIsToBeConsdrd : md_substn_is_default_group,
@ObjectModel.virtualElementCalculatedBy: 'ABAP:CL_PRODSUBSTN_VIRTUAL_ELEMENTS'
virtual IsCloudSystem : abap.char( 1 ),
/* Start - Lightweight Business switch: Enable eSPP fields in Hybrid & OP systems only*/
// [eSPP] Location Independent
@Feature: 'SW:PROD_SUBSTN_ENABLE_ESPP'
@Consumption: {
filter.hidden: true,
valueHelpDefinition: [{ entity: { name: 'I_SrvcPartsRelType', element: 'SrvcPartsSubstnRelshpCode' } }]
}
SrvcPartsSubstnRelshpCode,
@Feature: 'SW:PROD_SUBSTN_ENABLE_ESPP'
@Consumption: {
filter.hidden: true,
valueHelpDefinition: [{ entity: { name: 'I_SrvcPartsUseUpStr', element: 'SrvcPartsUseUpStrgy' } }]
}
SrvcPartsSubstnUseUpStrategy,
@Feature: 'SW:PROD_SUBSTN_ENABLE_ESPP'
@Consumption.filter.hidden: true
SrvcPartsSubstnUseUpDate,
@Feature: 'SW:PROD_SUBSTN_ENABLE_ESPP'
@Consumption: {
filter.hidden: true,
valueHelpDefinition: [{ entity: { name: 'I_SrvcPartsIntchgtyType', element: 'SrvcPartsIntchgtyGroupType' } }]
}
SrvcPartsIntchgtyGroupType,
@Feature: 'SW:PROD_SUBSTN_ENABLE_ESPP'
@Consumption: {
filter.hidden: true,
valueHelpDefinition: [{ entity: { name: 'I_SrvcPartsRepType', element: 'SrvcPartsSubstnReplacementCode' } }]
}
SrvcPartsSubstnReplacementCode,
// [eSPP] Location Dependent
@Feature: 'SW:PROD_SUBSTN_ENABLE_ESPP'
@Consumption.filter.hidden: true
SrvcPartsStockExhaustionDate,
@Feature: 'SW:PROD_SUBSTN_ENABLE_ESPP'
@Consumption.filter.hidden: true
SrvcPartsSuccessorProdPlndDate,
@Feature: 'SW:PROD_SUBSTN_ENABLE_ESPP'
@Consumption.filter.hidden: true
SrvcPartsStkExhaustionWrngDate,
@Feature: 'SW:PROD_SUBSTN_ENABLE_ESPP'
@Consumption.filter.hidden: true
SrvcPartsSuccessorProdRcptDate,
@Feature: 'SW:PROD_SUBSTN_ENABLE_ESPP'
@Consumption.filter.hidden: true
SrvcPartsReorganizationEndDate,
@Feature: 'SW:PROD_SUBSTN_ENABLE_ESPP'
@Consumption.filter.hidden: true
SrvcPartsProdSubstnFinalDate,
/* End - Lightweight Business switch: Enable eSPP fields in Hybrid & OP systems only*/
/* Associations */
@Consumption.filter.hidden: true
_MDObjectType,
@Consumption.filter.hidden: true
_ContextObjectTypeCode,
@Consumption.filter.hidden: true
_ContextObjectTypeCode2,
@Consumption.filter.hidden: true
_Product,
@Consumption.filter.hidden: true
_SubstituteProduct,
@Consumption.filter.hidden: true
_Plant,
@Consumption.filter.hidden: true
_Group,
@Consumption.filter.hidden: true
_ExitIndicator,
@Consumption.filter.hidden: true
_LeadIndicator,
@Consumption.filter.hidden: true
_TimeZone,
@Consumption.filter.hidden: true
_Reason,
@Consumption.filter.hidden: true
_Status,
@Consumption.filter.hidden: true
_MDSubstnIsRlvtForATPProd,
@Consumption.filter.hidden: true
_MDSubstnIsRelevantForESPP,
@Consumption.filter.hidden: true
_CreatedByUser,
@Consumption.filter.hidden: true
_LastChangedByUser,
@Consumption.filter.hidden: true
_SubstitutionSet,
@Consumption.filter.hidden: true
_SubstituteExclusion,
@Consumption.filter.hidden: true
_RelType,
@Consumption.filter.hidden: true
_UseUpStr,
@Consumption.filter.hidden: true
_IntType,
@Consumption.filter.hidden: true
_RepType,
@ObjectModel.filter.enabled: false
_Predecessors : redirected to composition child C_ProdSubstnPrdcssrTP,
@ObjectModel.filter.enabled: false
_Successors : redirected to composition child C_ProdSubstnSuccssrTP
}
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