C_DefectAffectedObjectFDP

DDL: C_DEFECTAFFECTEDOBJECTFDP Type: view_entity CONSUMPTION Package: ODATA_QM_DEFECT

FDP view for QM Defect Affected Object

C_DefectAffectedObjectFDP is a Consumption CDS View that provides data about "FDP view for QM Defect Affected Object" in SAP S/4HANA. It reads from 1 data source (I_DefectAffectedObject) and exposes 16 fields with key fields DefectInternalID, DefectAffectedObject. It has 4 associations to related views. Part of development package ODATA_QM_DEFECT.

Data Sources (1)

SourceAliasJoin Type
I_DefectAffectedObject _DefectAffectedObject from

Associations (4)

CardinalityTargetAliasCondition
[1..1] C_DefectFDP _Defect $projection.DefectInternalID = _Defect.DefectInternalID
[0..1] I_DefectAffectedObjLastTask _DefectAffectedObjLastTask $projection.DefectInternalID = _DefectAffectedObjLastTask.DefectInternalID and $projection.DefectAffectedObject = _DefectAffectedObjLastTask.DefectAffectedObject
[0..*] I_UnitOfMeasureText _DefectAffcdObjQuantityUnitT $projection.DefectAffcdObjQuantityUnit = _DefectAffcdObjQuantityUnitT.UnitOfMeasure
[1..1] E_DefectAffectedObject _Extension $projection.DefectInternalID = _Extension.Notification and _Extension.NotificationItem = '0000' and $projection.DefectAffectedObject = _Extension.DefectAffectedObject

Annotations (13)

NameValueLevelField
AccessControl.authorizationCheck #MANDATORY view
AccessControl.personalData.blocking #BLOCKED_DATA_EXCLUDED view
EndUserText.label FDP view for QM Defect Affected Object view
VDM.viewType #CONSUMPTION view
VDM.lifecycle.contract.type #PUBLIC_LOCAL_API view
ObjectModel.modelingPattern #OUTPUT_FORM_DATA_PROVIDER view
ObjectModel.usageType.dataClass #TRANSACTIONAL view
ObjectModel.usageType.sizeCategory #M view
ObjectModel.usageType.serviceQuality #D view
ObjectModel.representativeKey DefectAffectedObject view
Metadata.allowExtensions true view
Metadata.ignorePropagatedAnnotations true view
Consumption.semanticObject Defect view

Fields (16)

KeyFieldSource TableSource FieldDescription
KEY DefectInternalID I_DefectAffectedObject DefectInternalID
KEY DefectAffectedObject I_DefectAffectedObject DefectAffectedObject
Defect I_DefectAffectedObject Defect
DefectAffectedObjectType I_DefectAffectedObject DefectAffectedObjectType
Product I_DefectAffectedObject Material
ProductName
DefectAffectedObjectQuantity I_DefectAffectedObject DefectAffectedObjectQuantity
DefectAffcdObjQuantityUnit I_DefectAffectedObject DefectAffcdObjQuantityUnit
Batch I_DefectAffectedObject Batch
QltyTaskFollowUpAction _DefectAffectedObjLastTask QltyTaskFollowUpAction
QltyTaskFollowUpActionText
QltyTaskFllwUpActionSts _DefectAffectedObjLastTask QltyTaskFllwUpActionSts
QltyTaskFllwUpActionStsTxt
QualityTask _DefectAffectedObjLastTask QualityTask
_DefectAffcdObjQuantityUnitT _DefectAffcdObjQuantityUnitT
_Defect _Defect
@AccessControl: {
    authorizationCheck: #MANDATORY,
    personalData.blocking: #BLOCKED_DATA_EXCLUDED
}
@EndUserText.label: 'FDP view for QM Defect Affected Object'
@VDM: {
    viewType: #CONSUMPTION,
    lifecycle.contract.type: #PUBLIC_LOCAL_API
}
@ObjectModel.supportedCapabilities:
    [ #OUTPUT_FORM_DATA_PROVIDER ]
@ObjectModel.modelingPattern: #OUTPUT_FORM_DATA_PROVIDER
@ObjectModel: {
    usageType: {
        dataClass: #TRANSACTIONAL,
        sizeCategory: #M,
        serviceQuality: #D },
    representativeKey: 'DefectAffectedObject',
    semanticKey:  [ 'Defect', 'DefectAffectedObject' ]
}    
@Metadata.allowExtensions: true
@Metadata.ignorePropagatedAnnotations: true
@Consumption.semanticObject: 'Defect'

define view entity C_DefectAffectedObjectFDP as select from I_DefectAffectedObject as _DefectAffectedObject

    association [1..1] to C_DefectFDP               as _Defect                        on $projection.DefectInternalID = _Defect.DefectInternalID
  
    // associations which are missing in source view

    association [0..1] to I_DefectAffectedObjLastTask as _DefectAffectedObjLastTask   on  $projection.DefectInternalID     = _DefectAffectedObjLastTask.DefectInternalID
                                                                                      and $projection.DefectAffectedObject = _DefectAffectedObjLastTask.DefectAffectedObject
                                                    
    // new associations for text fields

    association [0..*] to I_UnitOfMeasureText       as _DefectAffcdObjQuantityUnitT   on $projection.DefectAffcdObjQuantityUnit = _DefectAffcdObjQuantityUnitT.UnitOfMeasure
    
    // Extension

    association [1..1] to E_DefectAffectedObject    as _Extension        on $projection.DefectInternalID = _Extension.Notification
                                                                        and _Extension.NotificationItem = '0000'
                                                                        and $projection.DefectAffectedObject = _Extension.DefectAffectedObject
  
{   
    @ObjectModel.foreignKey.association: '_Defect'
    key _DefectAffectedObject.DefectInternalID,
    key _DefectAffectedObject.DefectAffectedObject,
    
    _DefectAffectedObject.Defect,
    @Consumption.hidden: true
    _DefectAffectedObject.DefectAffectedObjectType,
    _DefectAffectedObject.Material as Product,
    _DefectAffectedObject._Product._Text[ 1: Language = $session.system_language ].ProductName,
    @Semantics.quantity.unitOfMeasure: 'DefectAffcdObjQuantityUnit'
    _DefectAffectedObject.DefectAffectedObjectQuantity,
    @ObjectModel.text.association: '_DefectAffcdObjQuantityUnitT'
    _DefectAffectedObject.DefectAffcdObjQuantityUnit,
    _DefectAffectedObject.Batch,
    _DefectAffectedObjLastTask.QltyTaskFollowUpAction,
    _DefectAffectedObjLastTask._QltyTaskFollowUpAction._QltyTaskFollowUpActionText[ 1: Language = $session.system_language ].QltyTaskFollowUpActionText,
    _DefectAffectedObjLastTask.QltyTaskFllwUpActionSts,
    _DefectAffectedObjLastTask._QltyTaskFllwUpActionSts._QltyTaskFllwUpActionStsTxt[ 1: Language = $session.system_language ].QltyTaskFllwUpActionStsTxt,
    _DefectAffectedObjLastTask.QualityTask,
    @Semantics.booleanIndicator: true
    case DefectAffectedObjectType
      when '01' 
        then
          case when Material is not initial and Material = _Defect.Product and Batch = _Defect.Batch
            then cast( 'X' as qfaffcdobjisdefective preserving type )
            else cast( ' ' as qfaffcdobjisdefective preserving type )
          end
        else cast( ' ' as qfaffcdobjisdefective preserving type )
    end                                                                    as DefectAffcdObjIsDefective,
    
    // Associations

    _DefectAffcdObjQuantityUnitT,
    
    // Association for ACL

    _Defect
}