I_SubstanceTP
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)
| Source | Alias | Join Type |
|---|---|---|
| I_Substance | Substance | from |
Associations (5)
| Cardinality | Target | Alias | Condition |
|---|---|---|---|
| [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)
| Name | Value | Level | Field |
|---|---|---|---|
| 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)
| Key | Field | Source Table | Source Field | Description |
|---|---|---|---|---|
| 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":""
}
}*/
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