C_ProdSubstnSet

DDL: C_PRODSUBSTNSET Type: view_entity CONSUMPTION

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)

SourceAliasJoin Type
I_ProdSubstnSet I_ProdSubstnSet from

Annotations (9)

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

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 (49)

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