I_QualityDefectUnion
Quality Defect with Independent Defect
I_QualityDefectUnion is a Composite CDS View that provides data about "Quality Defect with Independent Defect" in SAP S/4HANA. It reads from 2 data sources (I_Notification, I_NotificationItem) and exposes 37 fields with key fields Notification, NotificationItem. It has 4 associations to related views.
Data Sources (2)
| Source | Alias | Join Type |
|---|---|---|
| I_Notification | I_Notification | left_outer |
| I_NotificationItem | I_NotificationItem | from |
Associations (4)
| Cardinality | Target | Alias | Condition |
|---|---|---|---|
| [0..1] | I_Defect | _ReferencedDefect | $projection.ReferencedDefect = _ReferencedDefect.DefectInternalID |
| [0..1] | I_InspectionLot | _InspectionLot | $projection.InspectionLot = _InspectionLot.InspectionLot |
| [0..1] | I_DefectCodeGroup | _DefectCodeGroup | $projection.DefectCodeGroup = _DefectCodeGroup.DefectCodeGroup |
| [0..1] | I_DefectCode | _DefectCode | $projection.DefectCodeGroup = _DefectCode.DefectCodeGroup and $projection.DefectCode = _DefectCode.DefectCode |
Annotations (9)
| Name | Value | Level | Field |
|---|---|---|---|
| AbapCatalog.sqlViewName | IQLTYDFCTUNION | view | |
| ClientHandling.algorithm | #SESSION_VARIABLE | view | |
| EndUserText.label | Quality Defect with Independent Defect | view | |
| VDM.viewType | #COMPOSITE | view | |
| AccessControl.authorizationCheck | #CHECK | view | |
| ObjectModel.usageType.dataClass | #TRANSACTIONAL | view | |
| ObjectModel.usageType.sizeCategory | #S | view | |
| ObjectModel.usageType.serviceQuality | #B | view | |
| ObjectModel.representativeKey | NotificationItem | view |
Fields (37)
| Key | Field | Source Table | Source Field | Description |
|---|---|---|---|---|
| KEY | Notification | I_NotificationItem | Notification | |
| KEY | NotificationItem | I_NotificationItem | NotificationItem | |
| CreatedByUser | I_NotificationItem | CreatedByUser | ||
| CreationDate | I_NotificationItem | CreationDate | ||
| LastChangedByUser | I_NotificationItem | LastChangedByUser | ||
| LastChangeDate | I_NotificationItem | LastChangeDate | ||
| NotificationItemText | I_NotificationItem | NotificationItemText | ||
| DefectCodeCatalog | I_NotificationItem | DefectCodeCatalog | ||
| DefectCodeGroup | ||||
| DefectCode | ||||
| NotifItmObjectPartCodeCtlg | I_NotificationItem | NotifItmObjectPartCodeCtlg | ||
| NotifItmObjectPartCodeGroup | I_NotificationItem | NotifItmObjectPartCodeGroup | ||
| NotifItmObjectPartCode | I_NotificationItem | NotifItmObjectPartCode | ||
| Plant | I_NotificationItem | Plant | ||
| DefectCategory | I_NotificationItem | DefectCategory | ||
| CreationTime | ||||
| LastChangeTime | ||||
| IsDeleted | I_NotificationItem | IsDeleted | ||
| ReferencedDefect | I_NotificationItem | ReferencedDefect | ||
| ChangedDateTime | I_NotificationItem | ChangedDateTime | ||
| InspPlanOperationInternalID | I_NotificationItem | InspPlanOperationInternalID | ||
| InspectionCharacteristic | I_NotificationItem | InspectionCharacteristic | ||
| InspectionLotendasInspectionLot | ||||
| NumberOfDefects | I_NotificationItem | NumberOfDefects | ||
| WorkCenterTypeCode | I_NotificationItem | WorkCenterTypeCode | ||
| MainWorkCenterInternalID | I_NotificationItem | MainWorkCenterInternalID | ||
| MainWorkCenter | I_NotificationItem | MainWorkCenter | ||
| MainWorkCenterPlant | I_NotificationItem | MainWorkCenterPlant | ||
| _Notification | I_NotificationItem | _Notification | ||
| _DefectCode | _DefectCode | |||
| _DefectCodeCatalog | I_NotificationItem | _DefectCodeCatalog | ||
| _DefectCodeGroup | _DefectCodeGroup | |||
| _NotifItmObjectPartCodeCtlg | I_NotificationItem | _NotifItmObjectPartCodeCtlg | ||
| _NotifItmObjectPartCodeGroup | I_NotificationItem | _NotifItmObjectPartCodeGroup | ||
| _NotifItmObjectPartCode | I_NotificationItem | _NotifItmObjectPartCode | ||
| _InspectionLot | _InspectionLot | |||
| _ReferencedDefect | _ReferencedDefect |
@AbapCatalog.sqlViewName: 'IQLTYDFCTUNION'
@ClientHandling.algorithm: #SESSION_VARIABLE
@EndUserText.label: 'Quality Defect with Independent Defect'
@VDM.viewType: #COMPOSITE
@AccessControl.authorizationCheck: #CHECK
@ObjectModel: {
usageType: {
dataClass: #TRANSACTIONAL,
sizeCategory: #S, // Relevant is I_NotificationItem, not I_Notification
serviceQuality: #B },
representativeKey: 'NotificationItem'
}
define view I_QualityDefectUnion as select from I_NotificationItem
left outer join I_Notification // left outer join + where condition ensures that only items of quality notifications are selected
on I_Notification.Notification = I_NotificationItem.Notification
association [0..1] to I_Defect as _ReferencedDefect on $projection.ReferencedDefect = _ReferencedDefect.DefectInternalID
association [0..1] to I_InspectionLot as _InspectionLot on $projection.InspectionLot = _InspectionLot.InspectionLot
association [0..1] to I_DefectCodeGroup as _DefectCodeGroup on $projection.DefectCodeGroup = _DefectCodeGroup.DefectCodeGroup
association [0..1] to I_DefectCode as _DefectCode on $projection.DefectCodeGroup = _DefectCode.DefectCodeGroup
and $projection.DefectCode = _DefectCode.DefectCode
{
@ObjectModel: { foreignKey.association: '_Notification' , readOnly: 'EXTERNAL_CALCULATION' }
key I_NotificationItem.Notification,
@ObjectModel.readOnly: 'EXTERNAL_CALCULATION'
key I_NotificationItem.NotificationItem,
@ObjectModel.readOnly: true
I_NotificationItem.CreatedByUser,
@ObjectModel.readOnly: true
I_NotificationItem.CreationDate,
@ObjectModel.readOnly: true
I_NotificationItem.LastChangedByUser,
@ObjectModel.readOnly: true
I_NotificationItem.LastChangeDate,
@ObjectModel.readOnly: 'EXTERNAL_CALCULATION'
I_NotificationItem.NotificationItemText,
@ObjectModel.readOnly: 'EXTERNAL_CALCULATION'
I_NotificationItem.DefectCodeCatalog,
@ObjectModel: { readOnly: 'EXTERNAL_CALCULATION' , foreignKey.association: '_DefectCodeGroup' }
cast( I_NotificationItem.DefectCodeGroup as vdm_qfegrp preserving type ) as DefectCodeGroup,
@ObjectModel: { readOnly: 'EXTERNAL_CALCULATION' , foreignKey.association: '_DefectCode' }
cast( I_NotificationItem.DefectCode as vdm_qfecod preserving type ) as DefectCode,
@ObjectModel.readOnly: 'EXTERNAL_CALCULATION'
I_NotificationItem.NotifItmObjectPartCodeCtlg,
@ObjectModel.readOnly: 'EXTERNAL_CALCULATION'
I_NotificationItem.NotifItmObjectPartCodeGroup,
@ObjectModel.readOnly: 'EXTERNAL_CALCULATION'
I_NotificationItem.NotifItmObjectPartCode,
@ObjectModel.readOnly: true
I_NotificationItem.Plant,
@ObjectModel.readOnly: true
I_NotificationItem.DefectCategory,
@ObjectModel.readOnly: true
cast( I_NotificationItem.CreationTime as vdm_qerstezeit preserving type ) as CreationTime,
@ObjectModel.readOnly: true
cast( I_NotificationItem.LastChangeTime as vdm_qaendezeit preserving type ) as LastChangeTime,
@ObjectModel.readOnly: true
I_NotificationItem.IsDeleted,
@ObjectModel: { foreignKey.association: '_ReferencedDefect' , readOnly: true }
I_NotificationItem.ReferencedDefect,
@ObjectModel.readOnly: true
I_NotificationItem.ChangedDateTime,
@ObjectModel.readOnly: true
I_NotificationItem.InspPlanOperationInternalID,
@ObjectModel.readOnly: true
I_NotificationItem.InspectionCharacteristic,
@ObjectModel.readOnly: true
case I_NotificationItem.DefectCategory
when ' ' then I_NotificationItem._Notification.InspectionLot
else I_NotificationItem.InspectionLot
end as InspectionLot,
@ObjectModel.readOnly: true
I_NotificationItem.NumberOfDefects,
// Work center fields (required for authorization checks)
@ObjectModel.readOnly: true
I_NotificationItem.WorkCenterTypeCode,
@ObjectModel.readOnly: true
I_NotificationItem.MainWorkCenterInternalID,
@ObjectModel.readOnly: true
I_NotificationItem.MainWorkCenter,
@ObjectModel.readOnly: true
I_NotificationItem.MainWorkCenterPlant,
/* Associations */
I_NotificationItem._Notification,
_DefectCode,
I_NotificationItem._DefectCodeCatalog,
_DefectCodeGroup,
I_NotificationItem._NotifItmObjectPartCodeCtlg,
I_NotificationItem._NotifItmObjectPartCodeGroup,
I_NotificationItem._NotifItmObjectPartCode,
_InspectionLot,
_ReferencedDefect
}
where ( I_Notification.NotificationOrigin = 'Q1' or
I_Notification.NotificationOrigin = 'Q2' or
I_Notification.NotificationOrigin = 'Q3' or
I_Notification.NotificationOrigin is null )
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