C_ProdSubstnTP

DDL: C_PRODSUBSTNTP Type: view_entity CONSUMPTION

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)

SourceAliasJoin Type
R_ProdSubstnTP R_ProdSubstnTP projection

Associations (2)

CardinalityTargetAliasCondition
[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)

NameValueLevelField
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)

ServiceBindingVersionContractRelease
UI_PRODSUBSTITUTION_MANAGE UI_PRODSUBSTITUTION_MANAGE V2 C1 NOT_RELEASED

Fiori Apps (1)

App IDApp NameTypeDescription
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)

KeyFieldSource TableSource FieldDescription
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
}