I_SubstanceTP

DDL: I_SUBSTANCETP Type: view TRANSACTIONAL

Substance

I_SubstanceTP is a Transactional CDS View that provides data about "Substance" in SAP S/4HANA. It reads from 1 data source (I_Substance) and exposes 21 fields with key field SubstanceUUID. It has 5 associations to related views.

Data Sources (1)

SourceAliasJoin Type
I_Substance Substance from

Associations (5)

CardinalityTargetAliasCondition
[0..*] I_SubstanceVarAssgmtTP _SubstanceVarAssgmt $projection.SubstanceUUID = _SubstanceVarAssgmt.SubstanceUUID
[0..*] I_SubstanceGrpAssgmtTP _SubstanceGrpAssgmtTP $projection.SubstanceUUID = _SubstanceGrpAssgmtTP.SubstanceUUID
[0..*] I_SubstanceTextTP _SubstanceText $projection.SubstanceUUID = _SubstanceText.SubstanceUUID
[0..*] I_SubstanceTradeSecretTextTP _SubstanceTradeSecretText $projection.SubstanceUUID = _SubstanceTradeSecretText.SubstanceUUID
[0..*] I_SubstanceAdditionalIdfrTP _SubstanceAdditionalIdfrTP $projection.SubstanceUUID = _SubstanceAdditionalIdfrTP.SubstanceUUID

Annotations (20)

NameValueLevelField
EndUserText.label Substance view
VDM.viewType #TRANSACTIONAL view
AbapCatalog.sqlViewName ISUBTP view
AbapCatalog.compiler.compareFilter true view
AccessControl.authorizationCheck #CHECK view
ClientHandling.algorithm #SESSION_VARIABLE view
ObjectModel.modelCategory #BUSINESS_OBJECT view
ObjectModel.transactionalProcessingEnabled true view
ObjectModel.compositionRoot true view
ObjectModel.draftEnabled true view
ObjectModel.createEnabled true view
ObjectModel.updateEnabled EXTERNAL_CALCULATION view
ObjectModel.deleteEnabled EXTERNAL_CALCULATION view
ObjectModel.writeDraftPersistence ehfndw_sub view
ObjectModel.writeActivePersistence ehfndv_sub view
ObjectModel.representativeKey SubstanceUUID view
ObjectModel.usageType.serviceQuality #C view
ObjectModel.usageType.dataClass #MASTER view
ObjectModel.usageType.sizeCategory #L view
ObjectModel.entityChangeStateId LastChangeUTCDateTime view

Fields (21)

KeyFieldSource TableSource FieldDescription
KEY SubstanceUUID I_Substance SubstanceUUID
ActiveSubstanceUUID I_Substance SubstanceUUID
CreationUTCDateTime
CreatedByUser I_Substance CreatedByUser
LastChangeUTCDateTime I_Substance LastChangeUTCDateTime
LastChangedByUser I_Substance LastChangedByUser
ListedSubstanceUUID I_Substance ListedSubstanceUUID
SubstanceInternalName I_Substance SubstanceInternalName
CompanySubstanceName
ResponsibleUnit I_Substance ResponsibleUnit
Specification I_Substance Specification
SpecificationInternalID I_Substance SpecificationInternalID
PolymerIsBsdOnOECDDef I_Substance PolymerIsBsdOnOECDDef
_SubstanceText _SubstanceText
_SubstanceTradeSecretText _SubstanceTradeSecretText
_SubstanceVarAssgmt _SubstanceVarAssgmt
_SubstanceGrpAssgmtTP _SubstanceGrpAssgmtTP
_SubstanceAdditionalIdfrTP _SubstanceAdditionalIdfrTP
_CreatedByUser _CreatedByUser
_LastChangedByUser _LastChangedByUser
_ListedSubstance I_Substance _ListedSubstance
@EndUserText.label: 'Substance'
@VDM.viewType: #TRANSACTIONAL
@AbapCatalog: {
  sqlViewName:            'ISUBTP',
  compiler.compareFilter: true
}

@AccessControl:
{
  authorizationCheck: #CHECK,
  privilegedAssociations:  [ '_CreatedByUser', '_LastChangedByUser' ]
}

@ClientHandling.algorithm: #SESSION_VARIABLE
@ObjectModel: {
  modelCategory:                  #BUSINESS_OBJECT,
  transactionalProcessingEnabled: true,
  compositionRoot:                true,
  draftEnabled:                   true,
  createEnabled:                  true,
  updateEnabled:                  'EXTERNAL_CALCULATION',
  deleteEnabled:                  'EXTERNAL_CALCULATION',
  writeDraftPersistence:          'ehfndw_sub',
  writeActivePersistence:         'ehfndv_sub',
  representativeKey:              'SubstanceUUID',
  semanticKey:                    ['SubstanceUUID'],
  usageType: {
    serviceQuality: #C,
    dataClass:      #MASTER,
    sizeCategory:   #L
  },
  entityChangeStateId: 'LastChangeUTCDateTime'
}

define view I_SubstanceTP
  as select from I_Substance as Substance
  association [0..*] to I_SubstanceVarAssgmtTP       as _SubstanceVarAssgmt        on $projection.SubstanceUUID = _SubstanceVarAssgmt.SubstanceUUID
  association [0..*] to I_SubstanceGrpAssgmtTP       as _SubstanceGrpAssgmtTP      on $projection.SubstanceUUID = _SubstanceGrpAssgmtTP.SubstanceUUID
  // Note: this will move to the CI team as entity of the Listed Substance

  //  association [0..*] to I_SubstanceGrpAssgmtTP as _SubstanceGrpAsgmt   on $projection.SubstanceUUID = _SubstanceGrpAsgmt.SubstanceUUID

  association [0..*] to I_SubstanceTextTP            as _SubstanceText             on $projection.SubstanceUUID = _SubstanceText.SubstanceUUID
  association [0..*] to I_SubstanceTradeSecretTextTP as _SubstanceTradeSecretText  on $projection.SubstanceUUID = _SubstanceTradeSecretText.SubstanceUUID
  association [0..*] to I_SubstanceAdditionalIdfrTP  as _SubstanceAdditionalIdfrTP on $projection.SubstanceUUID = _SubstanceAdditionalIdfrTP.SubstanceUUID

{
  key Substance.SubstanceUUID,

      @ObjectModel.readOnly: true
      Substance.SubstanceUUID                                             as ActiveSubstanceUUID, --Active UUID of Substance

      @ObjectModel.readOnly: true
      Substance.CreationUTCDateTime,
      @ObjectModel.readOnly: true
      Substance.CreatedByUser,
      @ObjectModel.readOnly: true
      Substance.LastChangeUTCDateTime,
      @ObjectModel.readOnly: true
      Substance.LastChangedByUser,

      @ObjectModel.mandatory: true
      Substance.ListedSubstanceUUID,
      Substance.SubstanceInternalName,

      //Substance name cases see REQ-41-0032:

      //1. own substance name

      //2. listed substance name

      //3. internal name

      @ObjectModel.readOnly: true
      cast (
             case
                when _SubstanceText[1:Language = $session.system_language].SubstanceUUID is not null
                     then _SubstanceText[1:Language = $session.system_language].SubstanceName
                when _SubstanceText[1:Language = $session.system_language].SubstanceUUID is null and _ListedSubstance.ListedSubstanceDefaultName is not null
                     then _ListedSubstance.ListedSubstanceDefaultName
                when _SubstanceText[1:Language = $session.system_language].SubstanceUUID is null and _ListedSubstance.ListedSubstanceDefaultName is null
                     then Substance.SubstanceInternalName
      end as ehfnd_sub_substance_name_ltd )                               as SubstanceName,

      @ObjectModel.readOnly: true
      // set company substance name to not mandatory for displaying although it is mandatory if used in the substance text node

      @ObjectModel.mandatory: false
      _SubstanceText[1:Language = $session.system_language].SubstanceName as CompanySubstanceName,

      @ObjectModel.mandatory: true
      Substance.ResponsibleUnit,

      Substance.Specification,
      Substance.SpecificationInternalID,
      Substance.PolymerIsBsdOnOECDDef,
      /* Exposed Associations */
      @ObjectModel.association.type: [ #TO_COMPOSITION_CHILD ]
      _SubstanceText,

      @ObjectModel.association.type: [ #TO_COMPOSITION_CHILD ]
      _SubstanceTradeSecretText,

      @ObjectModel.association.type: [ #TO_COMPOSITION_CHILD ]
      _SubstanceVarAssgmt,

      @ObjectModel.association.type: [ #TO_COMPOSITION_CHILD ]
      _SubstanceGrpAssgmtTP,

      @ObjectModel.association.type: [ #TO_COMPOSITION_CHILD ]
      _SubstanceAdditionalIdfrTP,

      _CreatedByUser,
      _LastChangedByUser,
      Substance._ListedSubstance

}
/*+[internal] {
"BASEINFO":
{
"FROM":
[
"I_SUBSTACTIVEDRAFTLSTDSUBST",
"I_SUBSTANCE",
"I_SUBSTANCETEXTTP"
],
"ASSOCIATED":
[
"I_SUBSTACTIVEDRAFTLSTDSUBST",
"I_SUBSTANCEADDITIONALIDFRTP",
"I_SUBSTANCEGRPASSGMTTP",
"I_SUBSTANCETEXTTP",
"I_SUBSTANCETRADESECRETTEXTTP",
"I_SUBSTANCEVARASSGMTTP",
"I_USER"
],
"BASE":
[
"I_SUBSTANCE"
],
"ANNO_REF":
[],
"SCALAR_FUNCTION":
[],
"VERSION":0,
"ANNOREF_EVALUATION_ERROR":""
}
}*/