I_InspSpecificationVersion

DDL: I_INSPSPECIFICATIONVERSION SQL: IINSPSPECVERS Type: view BASIC

Version of Master Insp Characteristic

I_InspSpecificationVersion is a Basic CDS View that provides data about "Version of Master Insp Characteristic" in SAP S/4HANA. It reads from 1 data source (qpmk) and exposes 78 fields with key fields InspectionSpecificationPlant, InspectionSpecification, InspectionSpecificationVersion. It has 47 associations to related views.

Data Sources (1)

SourceAliasJoin Type
qpmk qpmk from

Associations (47)

CardinalityTargetAliasCondition
[1..1] I_InspectionSpecification _InspectionSpecification $projection.InspectionSpecificationPlant = _InspectionSpecification.InspectionSpecificationPlant and $projection.InspectionSpecification = _InspectionSpecification.InspectionSpecification
[0..1] I_Plant _InspSpecificationPlant $projection.InspectionSpecificationPlant = _InspSpecificationPlant.Plant
[0..1] I_Plant _Plant $projection.Plant = _Plant.Plant
[0..*] I_InspSpecificationVersionText _Text $projection.InspectionSpecificationPlant = _Text.InspectionSpecificationPlant and $projection.InspectionSpecification = _Text.InspectionSpecification and $projection.InspectionSpecificationVersion = _Text.InspectionSpecificationVersion
[0..*] I_AssgmtInspMethInspSpec _InspectionMethod $projection.InspectionSpecificationPlant = _InspectionMethod.InspectionSpecificationPlant and $projection.InspectionSpecification = _InspectionMethod.InspectionSpecification and $projection.InspectionSpecificationVersion = _InspectionMethod.InspectionSpecificationVersion
[0..1] I_InspectionMstrDataStatus _InspSpecStatus $projection.InspectionSpecificationStatus = _InspSpecStatus.InspectionMasterDataStatus
[0..*] I_InspectionMstrDataStatusText _InspSpecStatusText $projection.InspectionSpecificationStatus = _InspSpecStatusText.InspectionMasterDataStatus
[0..1] I_User _InspSpecCreatedByUser $projection.InspSpecCreatedByUser = _InspSpecCreatedByUser.UserID
[0..1] I_User _InspSpecChangedByUser $projection.InspSpecChangedByUser = _InspSpecChangedByUser.UserID
[0..1] I_UserContactCard _CreatedByUserContactCard $projection.InspSpecCreatedByUser = _CreatedByUserContactCard.ContactCardID
[0..1] I_UserContactCard _ChangedByUserContactCard $projection.InspSpecChangedByUser = _ChangedByUserContactCard.ContactCardID
[0..1] I_InspToleranceSpecification _InspToleranceSpec $projection.InspToleranceSpecification = _InspToleranceSpec.InspToleranceSpecification
[0..*] I_InspToleranceSpecText _InspToleranceSpecText $projection.InspToleranceSpecification = _InspToleranceSpecText.InspToleranceSpecification
[0..1] I_InspSpecTransferType _InspSpecTransferType $projection.InspSpecTransferType = _InspSpecTransferType.InspSpecTransferType
[0..*] I_InspSpecTransferTypeText _InspSpecTransferTypeText $projection.InspSpecTransferType = _InspSpecTransferTypeText.InspSpecTransferType
[1..1] I_InspSpecCharcType _InspSpecCharcType $projection.InspSpecCharacteristicType = _InspSpecCharcType.InspSpecCharacteristicType
[0..*] I_InspSpecCharcTypeText _InspSpecCharcTypeText $projection.InspSpecCharacteristicType = _InspSpecCharcTypeText.InspSpecCharacteristicType
[0..1] I_InspectionScope _InspectionScope $projection.InspectionScope = _InspectionScope.InspectionScope
[0..*] I_InspectionScopeText _InspectionScopeText $projection.InspectionScope = _InspectionScopeText.InspectionScope
[0..1] I_InspSpecRecordingType _InspSpecRecordingType $projection.InspSpecRecordingType = _InspSpecRecordingType.InspSpecRecordingType
[0..*] I_InspSpecRecordingTypeText _InspSpecRecordingTypeText $projection.InspSpecRecordingType = _InspSpecRecordingTypeText.InspSpecRecordingType
[0..1] I_InspResultDocuRequired _InspResultDocuRequired $projection.InspResultIsDocumentationRqd = _InspResultDocuRequired.InspResultIsDocumentationRqd
[0..*] I_InspResultDocuRequiredText _InspResultDocuRequiredText $projection.InspResultIsDocumentationRqd = _InspResultDocuRequiredText.InspResultIsDocumentationRqd
[0..1] I_InspectorQualification _InspectorQualification $projection.InspectorQualification = _InspectorQualification.InspectorQualification
[0..*] I_InspectorQualificationText _InspectorQualificationText $projection.InspectorQualification = _InspectorQualificationText.InspectorQualification
[0..1] I_QltyMstrDataAuthorizationGrp _QltyMstrDataAuthznGrp $projection.QltyMstrDataAuthorizationGroup = _QltyMstrDataAuthznGrp.QltyMstrDataAuthorizationGroup
[0..*] I_QltyMstrDataAuthznGroupTxt _QltyMstrDataAuthznGrpTxt $projection.QltyMstrDataAuthorizationGroup = _QltyMstrDataAuthznGrpTxt.QltyMstrDataAuthorizationGroup
[0..1] I_Inspspeccharccategory _InspSpecCharcCategory $projection.InspSpecCharcCategory = _InspSpecCharcCategory.InspSpecCharcCategory
[0..*] I_InspSpecCharcCategoryText _InspSpecCharcCategoryText $projection.InspSpecCharcCategory = _InspSpecCharcCategoryText.InspSpecCharcCategory
[0..1] I_InspSpecRsltCalculation _InspSpecRsltCalculation $projection.InspSpecResultCalculation = _InspSpecRsltCalculation.InspSpecResultCalculation
[0..*] I_InspSpecRsltCalculationText _InspSpecRsltCalculationText $projection.InspSpecResultCalculation = _InspSpecRsltCalculationText.InspSpecResultCalculation
[0..1] I_InspSpecPrintControl _InspSpecPrintControl $projection.InspSpecPrintControl = _InspSpecPrintControl.InspSpecPrintControl
[0..*] I_InspSpecPrintControlText _InspSpecPrintControlText $projection.InspSpecPrintControl = _InspSpecPrintControlText.InspSpecPrintControl
[0..1] I_UnitOfMeasure _UnitOfMeasure $projection.InspectionSpecificationUnit = _UnitOfMeasure.UnitOfMeasure
[0..1] I_DefectCodeGroup _InspDefectCodeGrpRejection _InspDefectCodeGrpRejection.DefectCodeGroup = $projection.InspSpecDefectCodeGrpRejection
[0..1] I_DefectCode _InspDefectCodeRejection _InspDefectCodeRejection.DefectCodeGroup = $projection.InspSpecDefectCodeGrpRejection and _InspDefectCodeRejection.DefectCode = $projection.InspSpecDefectCodeRejection
[0..1] I_DefectCodeGroup _InspDefectCodeGrpRjcnLower _InspDefectCodeGrpRjcnLower.DefectCodeGroup = $projection.InspSpecDefectCodeGrpRjcnLower
[0..1] I_DefectCode _InspDefectCodeRjcnLower _InspDefectCodeRjcnLower.DefectCodeGroup = $projection.InspSpecDefectCodeGrpRjcnLower and _InspDefectCodeRjcnLower.DefectCode = $projection.InspSpecDefectCodeRjcnLower
[0..1] I_DefectCodeGroup _InspDefectCodeGrpRjcnUpper _InspDefectCodeGrpRjcnUpper.DefectCodeGroup = $projection.InspSpecDefectCodeGrpRjcnUpper
[0..1] I_DefectCode _InspDefectCodeRjcnUpper _InspDefectCodeRjcnUpper.DefectCodeGroup = $projection.InspSpecDefectCodeGrpRjcnUpper and _InspDefectCodeRjcnUpper.DefectCode = $projection.InspSpecDefectCodeRjcnUpper
[0..1] I_InspSpecImportanceCode _InspSpecImportanceCode $projection.InspSpecImportanceCode = _InspSpecImportanceCode.InspSpecImportanceCode
[0..*] I_Inspspecimportancecodetext _InspSpecImportanceCodeText $projection.InspSpecImportanceCode = _InspSpecImportanceCodeText.InspSpecImportanceCode
[0..1] I_DefectFractionEstnProced _DefectFractionEstnProced $projection.DefectFractionEstimationProced = _DefectFractionEstnProced.DefectFractionEstimationProced
[0..*] I_DefectFractionEstnProcedTxt _DefectFractionEstnProcedTxt $projection.DefectFractionEstimationProced = _DefectFractionEstnProcedTxt.DefectFractionEstimationProced
[0..1] I_ClfnCharacteristicForKeyDate _ClfnCharacteristicForKeyDate $projection.CharcInternalID = _ClfnCharacteristicForKeyDate.CharcInternalID
[0..*] I_ClfnCharcDescForKeyDate _ClfnCharcDescForKeyDate $projection.CharcInternalID = _ClfnCharcDescForKeyDate.CharcInternalID
[1..1] E_InspSpecificationVersion _Extension $projection.InspectionSpecificationPlant = _Extension.InspectionSpecificationPlant and $projection.InspectionSpecification = _Extension.InspectionSpecification and $projection.InspectionSpecificationVersion = _Extension.InspectionSpecificationVersion

Annotations (14)

NameValueLevelField
AbapCatalog.sqlViewName IINSPSPECVERS view
AbapCatalog.compiler.compareFilter true view
AbapCatalog.preserveKey true view
ClientHandling.algorithm #SESSION_VARIABLE view
EndUserText.label Version of Master Insp Characteristic view
VDM.viewType #BASIC view
VDM.lifecycle.contract.type #PUBLIC_LOCAL_API view
AccessControl.authorizationCheck #CHECK view
Search.searchable true view
ObjectModel.usageType.dataClass #MASTER view
ObjectModel.usageType.sizeCategory #M view
ObjectModel.usageType.serviceQuality #C view
ObjectModel.representativeKey InspectionSpecificationVersion view
Metadata.ignorePropagatedAnnotations true view

Fields (78)

KeyFieldSource TableSource FieldDescription
KEY InspectionSpecificationPlant qpmk zaehler
KEY InspectionSpecification
KEY InspectionSpecificationVersion qpmk version
Plant qpmk werks
ValidityStartDate qpmk gueltigab
InspectionSpecificationSrchTxt qpmk sortfeld
InspSpecGlobalName
InspectionSpecificationStatus qpmk loekz
InspSpecTransferType
InspSpecCreatedByUser qpmk autor
InspSpecCreationDate qpmk dates
InspSpecChangedByUser qpmk aeaut
InspSpecChangeDate qpmk datae
changeddatetimeendasChangedDateTime
InspSpecControlIndicators qpmk steuerkz
InspSpecIsQuantitative
InspSpecIsMeasuredValueRqd Measured Value Must Be Recorded
InspSpecIsSelectedSetRequired
InspSpecIsUpperLimitRequired Upper Specification Limit
InspSpecIsLowerLimitRequired Lower Specification Limit
InspSpecIsTargetValueInLimit
InspectionScope
InspSpecIsLongTermInspection Long-Term Inspection
InspSpecRecordingType
InspResultIsDocumentationRqd
InspSpecCharcCategory
InspSpecIsSampleQtyAdditive
InspSpecIsDestructive Destructive Inspection
InspSpecResultCalculation
InspSpecIsSamplingProcedRqd
InspSpecIsScrapRelevant Characteristic Is Scrap Relevant
InspSpecHasFixedCtrlIndicators
InspSpecIsDefectRecordingRqd
InspSpecIsTestEquipmentRqd Assignment of Test Equipment Required
InspSpecIsDefectsRecgAutomatic Automatic Defects Recording
InspSpecIsChgDocRequired Change Documents at Results Recording
InspSpecIsControlChartUsed SPC Characteristic
InspSpecPrintControl
InspSpecImportanceCode
InspectorQualification qpmk prfql
InspSpecInformationField1 qpmk dummy10
InspSpecInformationField2 qpmk dummy20
InspSpecInformationField3 qpmk dummy40
QltyMstrDataAuthorizationGroup qpmk qauth
InspToleranceSpecification qpmk toleranzsl
InspSpecDecimalPlaces qpmk stellen
InspectionSpecificationUnit qpmk masseinhsw
InspSpecTargetValue qpmk sollwert
InspSpecHasTargetValue qpmk sollwni
InspSpecUpperLimit qpmk toleranzob
InspSpecHasUpperLimit qpmk tolobni
InspSpecLowerLimit qpmk toleranzun
InspSpecHasLowerLimit qpmk tolunni
InspSpecFirstUpperSpecLimit qpmk grenzeob1
InspSpecHasFirstUpperSpecLimit qpmk grenzob1ni
InspSpecFirstLowerSpecLimit qpmk grenzeun1
InspSpecHasFirstLowerSpecLimit qpmk grenzun1ni
InspSpecSecondUpperSpecLimit qpmk grenzeob2
InspSpecHasSecondUprSpecLimit qpmk grenzob2ni
InspSpecSecondLowerSpecLimit qpmk grenzeun2
InspSpecHasSecondLowrSpecLimit qpmk grenzun2ni
InspSpecUpperPlausibilityLimit qpmk plausioben
InspSpecHasUprPlausibilityLmt qpmk plausiobni
InspSpecLowerPlausibilityLimit qpmk plausiunte
InspSpecHasLowrPlausibilityLmt qpmk plausiunni
InspSpecUpperSpecLimitChange
InspSpecHasUprSpecLimitChange qpmk tolwobni
InspSpecLowerSpecLimitChange
InspSpecHasLowrSpecLimitChange qpmk tolwunni
InspSpecToleranceChgValidFrom
InspSpecToleranceChgValidTo
InspSpecDefectCodeGrpRjcnLower qpmk codegr9u Defect Code Group for Reject. (Lo. Lmt.)
InspSpecDefectCodeRjcnLower qpmk code9u Defect Code for Rejection (Lower Limit)
InspSpecDefectCodeGrpRjcnUpper qpmk codegr9o Defect Code Group for Reject. (Up. Lmt.)
InspSpecDefectCodeRjcnUpper qpmk code9o Defect Code for Rejection (Upper Limit)
CharcInternalID
DefectFractionEstimationProced
InspSpecDefectCodeGrpRejection qpmk codegrqual
@AbapCatalog.sqlViewName: 'IINSPSPECVERS'
@AbapCatalog.compiler.compareFilter:true
@AbapCatalog.preserveKey: true
@ClientHandling.algorithm: #SESSION_VARIABLE
@EndUserText.label: 'Version of Master Insp Characteristic'
@VDM: {
    viewType: #BASIC,
    lifecycle.contract.type: #PUBLIC_LOCAL_API
}
@AccessControl.authorizationCheck: #CHECK
@AccessControl.privilegedAssociations: ['_INSPSPECCREATEDBYUSER','_CHANGEDBYUSERCONTACTCARD','_INSPECTIONSPECIFICATION','_CREATEDBYUSERCONTACTCARD','_INSPSPECCHANGEDBYUSER']
@Search.searchable: true
@ObjectModel.supportedCapabilities:
    [ #SQL_DATA_SOURCE, #CDS_MODELING_DATA_SOURCE, #CDS_MODELING_ASSOCIATION_TARGET, #SEARCHABLE_ENTITY ]
@ObjectModel: {
    usageType: {
        dataClass: #MASTER,
        sizeCategory: #M, //expected number of rows < 100.000

        serviceQuality: #C // includes A,B as well

    },representativeKey: 'InspectionSpecificationVersion'
}
@Metadata.ignorePropagatedAnnotations: true

define view I_InspSpecificationVersion
  as select from qpmk

  association [1..1] to I_InspectionSpecification      as _InspectionSpecification      on  $projection.InspectionSpecificationPlant = _InspectionSpecification.InspectionSpecificationPlant
                                                                                        and $projection.InspectionSpecification      = _InspectionSpecification.InspectionSpecification

  association [0..1] to I_Plant                        as _InspSpecificationPlant       on  $projection.InspectionSpecificationPlant = _InspSpecificationPlant.Plant

  association [0..1] to I_Plant                        as _Plant                        on  $projection.Plant = _Plant.Plant

  association [0..*] to I_InspSpecificationVersionText as _Text                         on  $projection.InspectionSpecificationPlant   = _Text.InspectionSpecificationPlant
                                                                                        and $projection.InspectionSpecification        = _Text.InspectionSpecification
                                                                                        and $projection.InspectionSpecificationVersion = _Text.InspectionSpecificationVersion

  association [0..*] to I_AssgmtInspMethInspSpec       as _InspectionMethod             on  $projection.InspectionSpecificationPlant   = _InspectionMethod.InspectionSpecificationPlant
                                                                                        and $projection.InspectionSpecification        = _InspectionMethod.InspectionSpecification
                                                                                        and $projection.InspectionSpecificationVersion = _InspectionMethod.InspectionSpecificationVersion

  association [0..1] to I_InspectionMstrDataStatus     as _InspSpecStatus               on  $projection.InspectionSpecificationStatus = _InspSpecStatus.InspectionMasterDataStatus

  association [0..*] to I_InspectionMstrDataStatusText as _InspSpecStatusText           on  $projection.InspectionSpecificationStatus = _InspSpecStatusText.InspectionMasterDataStatus

  association [0..1] to I_User                         as _InspSpecCreatedByUser        on  $projection.InspSpecCreatedByUser = _InspSpecCreatedByUser.UserID

  association [0..1] to I_User                         as _InspSpecChangedByUser        on  $projection.InspSpecChangedByUser = _InspSpecChangedByUser.UserID

  association [0..1] to I_UserContactCard              as _CreatedByUserContactCard     on  $projection.InspSpecCreatedByUser = _CreatedByUserContactCard.ContactCardID

  association [0..1] to I_UserContactCard              as _ChangedByUserContactCard     on  $projection.InspSpecChangedByUser = _ChangedByUserContactCard.ContactCardID

  association [0..1] to I_InspToleranceSpecification   as _InspToleranceSpec            on  $projection.InspToleranceSpecification = _InspToleranceSpec.InspToleranceSpecification

  association [0..*] to I_InspToleranceSpecText        as _InspToleranceSpecText        on  $projection.InspToleranceSpecification = _InspToleranceSpecText.InspToleranceSpecification

  association [0..1] to I_InspSpecTransferType         as _InspSpecTransferType         on  $projection.InspSpecTransferType = _InspSpecTransferType.InspSpecTransferType

  association [0..*] to I_InspSpecTransferTypeText     as _InspSpecTransferTypeText     on  $projection.InspSpecTransferType = _InspSpecTransferTypeText.InspSpecTransferType

  association [1..1] to I_InspSpecCharcType            as _InspSpecCharcType            on  $projection.InspSpecCharacteristicType = _InspSpecCharcType.InspSpecCharacteristicType

  association [0..*] to I_InspSpecCharcTypeText        as _InspSpecCharcTypeText        on  $projection.InspSpecCharacteristicType = _InspSpecCharcTypeText.InspSpecCharacteristicType

  association [0..1] to I_InspectionScope              as _InspectionScope              on  $projection.InspectionScope = _InspectionScope.InspectionScope

  association [0..*] to I_InspectionScopeText          as _InspectionScopeText          on  $projection.InspectionScope = _InspectionScopeText.InspectionScope

  association [0..1] to I_InspSpecRecordingType        as _InspSpecRecordingType        on  $projection.InspSpecRecordingType = _InspSpecRecordingType.InspSpecRecordingType

  association [0..*] to I_InspSpecRecordingTypeText    as _InspSpecRecordingTypeText    on  $projection.InspSpecRecordingType = _InspSpecRecordingTypeText.InspSpecRecordingType

  association [0..1] to I_InspResultDocuRequired       as _InspResultDocuRequired       on  $projection.InspResultIsDocumentationRqd = _InspResultDocuRequired.InspResultIsDocumentationRqd

  association [0..*] to I_InspResultDocuRequiredText   as _InspResultDocuRequiredText   on  $projection.InspResultIsDocumentationRqd = _InspResultDocuRequiredText.InspResultIsDocumentationRqd

  association [0..1] to I_InspectorQualification       as _InspectorQualification       on  $projection.InspectorQualification = _InspectorQualification.InspectorQualification

  association [0..*] to I_InspectorQualificationText   as _InspectorQualificationText   on  $projection.InspectorQualification = _InspectorQualificationText.InspectorQualification

  association [0..1] to I_QltyMstrDataAuthorizationGrp as _QltyMstrDataAuthznGrp        on  $projection.QltyMstrDataAuthorizationGroup = _QltyMstrDataAuthznGrp.QltyMstrDataAuthorizationGroup

  association [0..*] to I_QltyMstrDataAuthznGroupTxt   as _QltyMstrDataAuthznGrpTxt     on  $projection.QltyMstrDataAuthorizationGroup = _QltyMstrDataAuthznGrpTxt.QltyMstrDataAuthorizationGroup

  association [0..1] to I_Inspspeccharccategory        as _InspSpecCharcCategory        on  $projection.InspSpecCharcCategory = _InspSpecCharcCategory.InspSpecCharcCategory

  association [0..*] to I_InspSpecCharcCategoryText    as _InspSpecCharcCategoryText    on  $projection.InspSpecCharcCategory = _InspSpecCharcCategoryText.InspSpecCharcCategory

  association [0..1] to I_InspSpecRsltCalculation      as _InspSpecRsltCalculation      on  $projection.InspSpecResultCalculation = _InspSpecRsltCalculation.InspSpecResultCalculation

  association [0..*] to I_InspSpecRsltCalculationText  as _InspSpecRsltCalculationText  on  $projection.InspSpecResultCalculation = _InspSpecRsltCalculationText.InspSpecResultCalculation

  association [0..1] to I_InspSpecPrintControl         as _InspSpecPrintControl         on  $projection.InspSpecPrintControl = _InspSpecPrintControl.InspSpecPrintControl

  association [0..*] to I_InspSpecPrintControlText     as _InspSpecPrintControlText     on  $projection.InspSpecPrintControl = _InspSpecPrintControlText.InspSpecPrintControl

  association [0..1] to I_UnitOfMeasure                as _UnitOfMeasure                on  $projection.InspectionSpecificationUnit = _UnitOfMeasure.UnitOfMeasure

  association [0..1] to I_DefectCodeGroup              as _InspDefectCodeGrpRejection   on  _InspDefectCodeGrpRejection.DefectCodeGroup = $projection.InspSpecDefectCodeGrpRejection

  association [0..1] to I_DefectCode                   as _InspDefectCodeRejection      on  _InspDefectCodeRejection.DefectCodeGroup = $projection.InspSpecDefectCodeGrpRejection
                                                                                        and _InspDefectCodeRejection.DefectCode      = $projection.InspSpecDefectCodeRejection

  association [0..1] to I_DefectCodeGroup              as _InspDefectCodeGrpRjcnLower   on  _InspDefectCodeGrpRjcnLower.DefectCodeGroup = $projection.InspSpecDefectCodeGrpRjcnLower

  association [0..1] to I_DefectCode                   as _InspDefectCodeRjcnLower      on  _InspDefectCodeRjcnLower.DefectCodeGroup = $projection.InspSpecDefectCodeGrpRjcnLower
                                                                                        and _InspDefectCodeRjcnLower.DefectCode      = $projection.InspSpecDefectCodeRjcnLower

  association [0..1] to I_DefectCodeGroup              as _InspDefectCodeGrpRjcnUpper   on  _InspDefectCodeGrpRjcnUpper.DefectCodeGroup = $projection.InspSpecDefectCodeGrpRjcnUpper

  association [0..1] to I_DefectCode                   as _InspDefectCodeRjcnUpper      on  _InspDefectCodeRjcnUpper.DefectCodeGroup = $projection.InspSpecDefectCodeGrpRjcnUpper
                                                                                        and _InspDefectCodeRjcnUpper.DefectCode      = $projection.InspSpecDefectCodeRjcnUpper

  //  association [0..1] to I_InspSpecDeterminationRule    as _InspSpecDeterminationRule    on  $projection.InspSpecDeterminationRule = _InspSpecDeterminationRule.InspSpecDeterminationRule


  //  association [0..*] to I_InspSpecDeterminationRuleTxt as _InspSpecDeterminationRuleTxt on  $projection.InspSpecDeterminationRule = _InspSpecDeterminationRuleTxt.InspSpecDeterminationRule


  association [0..1] to I_InspSpecImportanceCode       as _InspSpecImportanceCode       on  $projection.InspSpecImportanceCode = _InspSpecImportanceCode.InspSpecImportanceCode

  association [0..*] to I_Inspspecimportancecodetext   as _InspSpecImportanceCodeText   on  $projection.InspSpecImportanceCode = _InspSpecImportanceCodeText.InspSpecImportanceCode

  association [0..1] to I_DefectFractionEstnProced     as _DefectFractionEstnProced     on  $projection.DefectFractionEstimationProced = _DefectFractionEstnProced.DefectFractionEstimationProced

  association [0..*] to I_DefectFractionEstnProcedTxt  as _DefectFractionEstnProcedTxt  on  $projection.DefectFractionEstimationProced = _DefectFractionEstnProcedTxt.DefectFractionEstimationProced

  /* Classification Characteristic */
  association [0..1] to I_ClfnCharacteristicForKeyDate as _ClfnCharacteristicForKeyDate on  $projection.CharcInternalID = _ClfnCharacteristicForKeyDate.CharcInternalID
  association [0..*] to I_ClfnCharcDescForKeyDate      as _ClfnCharcDescForKeyDate      on  $projection.CharcInternalID = _ClfnCharcDescForKeyDate.CharcInternalID

  //Extension

  association [1..1] to E_InspSpecificationVersion     as _Extension                    on  $projection.InspectionSpecificationPlant   = _Extension.InspectionSpecificationPlant
                                                                                        and $projection.InspectionSpecification        = _Extension.InspectionSpecification
                                                                                        and $projection.InspectionSpecificationVersion = _Extension.InspectionSpecificationVersion

{
      @ObjectModel.foreignKey.association: '_InspSpecificationPlant'
      @Search: { defaultSearchElement: true, fuzzinessThreshold: 0.8 }
  key qpmk.zaehler                                                         as InspectionSpecificationPlant,
      @ObjectModel.foreignKey.association: '_InspectionSpecification'
      @Search: { defaultSearchElement: true, fuzzinessThreshold: 0.8 }
  key cast( qpmk.mkmnr as vdm_qmerknr preserving type )                    as InspectionSpecification,
  key qpmk.version                                                         as InspectionSpecificationVersion,

      @ObjectModel.foreignKey.association: '_Plant'
      @Search: { defaultSearchElement: true, fuzzinessThreshold: 0.8 }
      qpmk.werks                                                           as Plant,
      @Semantics.businessDate.from: true
      qpmk.gueltigab                                                       as ValidityStartDate,
      @Search: { defaultSearchElement: true, fuzzinessThreshold: 0.8, ranking: #HIGH }
      qpmk.sortfeld                                                        as InspectionSpecificationSrchTxt,
      cast( qpmk.charact_id1 as vdm_qcharact_id1 preserving type ) as InspSpecGlobalName,
      @ObjectModel.foreignKey.association: '_InspSpecStatus'
      qpmk.loekz                                                           as InspectionSpecificationStatus,
      //qpmk.lsper,

      @ObjectModel.foreignKey.association: '_InspSpecTransferType'
      @Search: { defaultSearchElement: true, fuzzinessThreshold: 0.8 }
      cast( qpmk.konsistent as vdm_qvollst preserving type )               as InspSpecTransferType,
      @ObjectModel.foreignKey.association: '_CreatedByUserContactCard'
      @Semantics.user.createdBy: true
      qpmk.autor                                                           as InspSpecCreatedByUser,
      @Semantics.systemDate.createdAt: true
      qpmk.dates                                                           as InspSpecCreationDate,
      @ObjectModel.foreignKey.association: '_ChangedByUserContactCard'
      @Semantics.user.lastChangedBy: true
      qpmk.aeaut                                                           as InspSpecChangedByUser,
      @Semantics.systemDate.lastChangedAt: true
      qpmk.datae                                                           as InspSpecChangeDate,
      case qpmk.changeddatetime
        when 0 then cast( '19000101010101' as tzntstmps )
        else qpmk.changeddatetime                    end                   as ChangedDateTime,
      qpmk.steuerkz                                                        as InspSpecControlIndicators,
      // STEUERKZ is a string, but each single character defines an own semantic (Control indicator, see DDIC structure QMKST):

      cast( substring(qpmk.steuerkz,1,1) as vdm_qkzqunmk preserving type ) as InspSpecIsQuantitative, //Quantitative-Qualitativ

      @ObjectModel.foreignKey.association: '_InspSpecCharcType'
      case substring(qpmk.steuerkz,1,1) // InspSpecIsQuantitative

        when 'X' then cast ( '1' as vdm_qchar_type_basic ) // = Quantitative

                 else cast ( '2' as vdm_qchar_type_basic ) // = Qualitative

      end                                                                  as InspSpecCharacteristicType,
      @Semantics.booleanIndicator: true
      @EndUserText.label: 'Measured Value Must Be Recorded'
      cast( substring(qpmk.steuerkz,2,1) as qkzqumk preserving type )      as InspSpecIsMeasuredValueRqd, // Measured Value Must Be Recorded

      @Semantics.booleanIndicator: true
      @EndUserText: { label: 'Characteristic Attribute', quickInfo: 'Reference to Characteristic Attribute Required' }
      cast( substring(qpmk.steuerkz,3,1) as qkzpkat preserving type )      as InspSpecIsSelectedSetRequired, // Selected set is required

      @Semantics.booleanIndicator: true
      @EndUserText.label: 'Upper Specification Limit'
      cast( substring(qpmk.steuerkz,4,1) as qkztolob preserving type )     as InspSpecIsUpperLimitRequired,  // Upper Specification Limit Required

      @Semantics.booleanIndicator: true
      @EndUserText.label: 'Lower Specification Limit'
      cast( substring(qpmk.steuerkz,5,1) as qkztolun preserving type )     as InspSpecIsLowerLimitRequired,  // Lower Specification Limit Required

      @Semantics.booleanIndicator: true
      cast( substring(qpmk.steuerkz,6,1) as qkzsollpr preserving type )    as InspSpecIsTargetValueInLimit, // Check if target value is between lower and upper limit

      @ObjectModel.foreignKey.association: '_InspectionScope'
      cast( substring(qpmk.steuerkz,7,1) as qpumfkz preserving type )      as InspectionScope, // Inspection Scope

      @Semantics.booleanIndicator: true
      @EndUserText.label: 'Long-Term Inspection'
      cast( substring(qpmk.steuerkz,8,1) as qlzeitkz preserving type )     as InspSpecIsLongTermInspection, // Long-Term Inspection

      @ObjectModel.foreignKey.association: '_InspSpecRecordingType'
      cast( substring(qpmk.steuerkz,9,1) as qestukz preserving type )      as InspSpecRecordingType, // RecordingType: Values from domain QESTKUZ

      @Semantics.booleanIndicator: false // Although, the GFN contains 'Is', this is not an indicator.

      @ObjectModel.foreignKey.association: '_InspResultDocuRequired'
      cast( substring(qpmk.steuerkz,10,1) as vdm_qdokukz preserving type ) as InspResultIsDocumentationRqd, // Documentation Required for Inspection Result: Values from domain QDOKUKZ

      @ObjectModel.foreignKey.association: '_InspSpecCharcCategory'
      cast( substring(qpmk.steuerkz,11,1) as vdm_qrzwang preserving type ) as InspSpecCharcCategory, // Characteristic Category

      @Semantics.booleanIndicator: true
      cast( substring(qpmk.steuerkz,13,1) as qaddpro preserving type )     as InspSpecIsSampleQtyAdditive, // Sample Quantity Is Additive

      @Semantics.booleanIndicator: true
      @EndUserText.label: 'Destructive Inspection'
      cast( substring(qpmk.steuerkz,14,1) as qkzdestroy preserving type )  as InspSpecIsDestructive, // Destructive Inspection

      @ObjectModel.foreignKey.association: '_InspSpecRsltCalculation'
      cast( substring(qpmk.steuerkz,15,1) as vdm_qkzformel preserving type ) as InspSpecResultCalculation, // Result Calculation for Characteristics

      @Semantics.booleanIndicator: true
      cast( substring(qpmk.steuerkz,16,1) as qstichpr preserving type )    as InspSpecIsSamplingProcedRqd, // Sampling Procedure Is Required

      @Semantics.booleanIndicator: true
      @EndUserText.label: 'Characteristic Is Scrap Relevant'
      @EndUserText.quickInfo: 'Characteristic Is Relevant for Quality Score and Scrap Share'
      cast( substring(qpmk.steuerkz,17,1) as qausslos preserving type )    as InspSpecIsScrapRelevant, // Characteristic Relevant for Quality Score and Scrap Share

      @Semantics.booleanIndicator: true
      cast( substring(qpmk.steuerkz,18,1) as qnaendkz preserving type )    as InspSpecHasFixedCtrlIndicators, // Control Indicator fixed

      @Semantics.booleanIndicator: true
      cast( substring(qpmk.steuerkz,19,1) as qbfhlzhl preserving type )    as InspSpecIsDefectRecordingRqd, // Defects Recording required

      @Semantics.booleanIndicator: true
      @EndUserText.label: 'Assignment of Test Equipment Required'
      cast( substring(qpmk.steuerkz,22,1) as qpmzwang preserving type )    as InspSpecIsTestEquipmentRqd, // Assignment of Test Equipment Required

      @Semantics.booleanIndicator: true
      @EndUserText.label: 'Automatic Defects Recording'
      cast( substring(qpmk.steuerkz,23,1) as qfehlrec preserving type )    as InspSpecIsDefectsRecgAutomatic, // Defects Recording Automatically Called Up

      @Semantics.booleanIndicator: true
      @EndUserText.label: 'Change Documents at Results Recording'
      @EndUserText.quickInfo: 'Create Change Documents During Results Recording'
      cast( substring(qpmk.steuerkz,24,1) as qkzaenbel preserving type )   as InspSpecIsChgDocRequired, // Create Change Documents During Results Recording

      @Semantics.booleanIndicator: true
      @EndUserText.label: 'SPC Characteristic'
      cast( substring(qpmk.steuerkz,25,1) as qspcmk preserving type )      as InspSpecIsControlChartUsed, // SPC Characteristic; Control Chart is Used

      @ObjectModel.foreignKey.association: '_InspSpecPrintControl'
      cast( substring(qpmk.steuerkz,26,1) as vdm_qdruck1 preserving type ) as InspSpecPrintControl, // Print Control

      @ObjectModel.foreignKey.association: '_InspSpecImportanceCode'
      cast( qpmk.merkgew as vdm_qmerkgew preserving type ) as InspSpecImportanceCode,
      //--[ GENERATED:012:GFBfhyK17kY4idVcfs7Ldm

      @Consumption.valueHelpDefinition: [
        { entity:  { name:    'I_InspectorQualificationStdVH',
                     element: 'InspectorQualification' }
        }]
      // ]--GENERATED

      @EndUserText: { label: 'Inspector Qualification' , quickInfo: 'Inspector Qualification' }
      @ObjectModel.foreignKey.association: '_InspectorQualification'
      qpmk.prfql                                                           as InspectorQualification,
      qpmk.dummy10                                                         as InspSpecInformationField1,
      qpmk.dummy20                                                         as InspSpecInformationField2,
      qpmk.dummy40                                                         as InspSpecInformationField3,
      @ObjectModel.foreignKey.association: '_QltyMstrDataAuthznGrp'
      qpmk.qauth                                                           as QltyMstrDataAuthorizationGroup,
      @ObjectModel.foreignKey.association: '_InspToleranceSpec'
      qpmk.toleranzsl                                                      as InspToleranceSpecification,
      qpmk.stellen                                                         as InspSpecDecimalPlaces,
      @ObjectModel.foreignKey.association: '_UnitOfMeasure'
      @Semantics.unitOfMeasure: true
      qpmk.masseinhsw                                                      as InspectionSpecificationUnit,
      @Semantics.quantity.unitOfMeasure: 'InspectionSpecificationUnit'
      qpmk.sollwert                                                        as InspSpecTargetValue,
      @Semantics.booleanIndicator: true
      qpmk.sollwni                                                         as InspSpecHasTargetValue,
      
      // Tolerance

      @Semantics.quantity.unitOfMeasure: 'InspectionSpecificationUnit'
      @EndUserText: { label: 'Upper Specification Limit' , quickInfo: 'Upper Specification Limit' }
      qpmk.toleranzob                                                      as InspSpecUpperLimit,
      @Semantics.booleanIndicator: true
      qpmk.tolobni                                                         as InspSpecHasUpperLimit,
      @Semantics.quantity.unitOfMeasure: 'InspectionSpecificationUnit'
      @EndUserText: { label: 'Lower Specification Limit' , quickInfo: 'Lower Specification Limit' }
      qpmk.toleranzun                                                      as InspSpecLowerLimit,
      @Semantics.booleanIndicator: true
      qpmk.tolunni                                                         as InspSpecHasLowerLimit,
      //qpmk.klasanzahl,

      //qpmk.klasbreite,

      //qpmk.klasbrni,

      //qpmk.klasmitte,

      //qpmk.klasmini,

      
      // Additional Pairs of Limits

      @Semantics.quantity.unitOfMeasure: 'InspectionSpecificationUnit'
      qpmk.grenzeob1                                                       as InspSpecFirstUpperSpecLimit,
      @Semantics.booleanIndicator: true
      qpmk.grenzob1ni                                                      as InspSpecHasFirstUpperSpecLimit,
      @Semantics.quantity.unitOfMeasure: 'InspectionSpecificationUnit'
      qpmk.grenzeun1                                                       as InspSpecFirstLowerSpecLimit,
      @Semantics.booleanIndicator: true
      qpmk.grenzun1ni                                                      as InspSpecHasFirstLowerSpecLimit,
      @Semantics.quantity.unitOfMeasure: 'InspectionSpecificationUnit'
      qpmk.grenzeob2                                                       as InspSpecSecondUpperSpecLimit,
      @Semantics.booleanIndicator: true
      qpmk.grenzob2ni                                                      as InspSpecHasSecondUprSpecLimit,
      @Semantics.quantity.unitOfMeasure: 'InspectionSpecificationUnit'
      qpmk.grenzeun2                                                       as InspSpecSecondLowerSpecLimit,
      @Semantics.booleanIndicator: true
      qpmk.grenzun2ni                                                      as InspSpecHasSecondLowrSpecLimit,
      
      // Plausibility

      @Semantics.quantity.unitOfMeasure: 'InspectionSpecificationUnit'
      qpmk.plausioben                                                      as InspSpecUpperPlausibilityLimit,
      @Semantics.booleanIndicator: true
      qpmk.plausiobni                                                      as InspSpecHasUprPlausibilityLmt,
      @Semantics.quantity.unitOfMeasure: 'InspectionSpecificationUnit'
      qpmk.plausiunte                                                      as InspSpecLowerPlausibilityLimit,
      @Semantics.booleanIndicator: true
      qpmk.plausiunni                                                      as InspSpecHasLowrPlausibilityLmt,
      
      // Tolerance Change

      // Spec. Limits

      @Semantics.quantity.unitOfMeasure: 'InspectionSpecificationUnit'
      cast( qpmk.tolerweiob as vdm_qtolwob preserving type )               as InspSpecUpperSpecLimitChange,
      @Semantics.booleanIndicator: true
      qpmk.tolwobni                                                        as InspSpecHasUprSpecLimitChange,
      @Semantics.quantity.unitOfMeasure: 'InspectionSpecificationUnit'
      cast( qpmk.tolerweiun as vdm_qtolwun preserving type )               as InspSpecLowerSpecLimitChange,
      @Semantics.booleanIndicator: true
      qpmk.tolwunni                                                        as InspSpecHasLowrSpecLimitChange,
      // Validity

      cast( qpmk.tolerwab as vdm_qtolwab preserving type )                 as InspSpecToleranceChgValidFrom,
      cast( qpmk.tolerwbis as vdm_qtolwbis preserving type )               as InspSpecToleranceChgValidTo,
      
      //--[ GENERATED:012:GFBfhyK17kY4idVcfs7Ldm

      @Consumption.valueHelpDefinition: [
        { entity:  { name:    'I_DefectCodeGroupStdVH',
                     element: 'DefectCodeGroup' }
        }]
      // ]--GENERATED

      @ObjectModel.foreignKey.association: '_InspDefectCodeGrpRjcnLower'
      @EndUserText.label: 'Defect Code Group for Reject. (Lo. Lmt.)'
      @EndUserText.quickInfo: 'Defect Code Group for Rejection at Lower Limit'
      qpmk.codegr9u                                                        as InspSpecDefectCodeGrpRjcnLower,
      //--[ GENERATED:012:GFBfhyK17kY4idVcfs7Ldm

      @Consumption.valueHelpDefinition: [
        { entity:  { name:    'I_DefectCodeStdVH',
                     element: 'DefectCode' },
          additionalBinding: [{ localElement: 'InspSpecDefectCodeGrpRjcnLower',
                                element: 'DefectCodeGroup' }]
        }]
      // ]--GENERATED

      @ObjectModel.foreignKey.association: '_InspDefectCodeRjcnLower'
      @EndUserText.label: 'Defect Code for Rejection (Lower Limit)'
      @EndUserText.quickInfo: 'Defect Code for Rejection at Lower Limit'
      qpmk.code9u                                                          as InspSpecDefectCodeRjcnLower,
      //qpmk.codevr9u,

      //--[ GENERATED:012:GFBfhyK17kY4idVcfs7Ldm

      @Consumption.valueHelpDefinition: [
        { entity:  { name:    'I_DefectCodeGroupStdVH',
                     element: 'DefectCodeGroup' }
        }]
      // ]--GENERATED

      @ObjectModel.foreignKey.association: '_InspDefectCodeGrpRjcnUpper'
      @EndUserText.label: 'Defect Code Group for Reject. (Up. Lmt.)'
      @EndUserText.quickInfo: 'Defect Code Group for Rejection at Upper Limit'
      qpmk.codegr9o                                                        as InspSpecDefectCodeGrpRjcnUpper,
      //--[ GENERATED:012:GFBfhyK17kY4idVcfs7Ldm

      @Consumption.valueHelpDefinition: [
        { entity:  { name:    'I_DefectCodeStdVH',
                     element: 'DefectCode' },
          additionalBinding: [{ localElement: 'InspSpecDefectCodeGrpRjcnUpper',
                                element: 'DefectCodeGroup' }]
        }]
      // ]--GENERATED

      @ObjectModel.foreignKey.association: '_InspDefectCodeRjcnUpper'
      @EndUserText.label: 'Defect Code for Rejection (Upper Limit)'
      @EndUserText.quickInfo: 'Defect Code for Rejection at Upper Limit'
      qpmk.code9o                                                          as InspSpecDefectCodeRjcnUpper,
      //qpmk.codevr9o,

      cast( qpmk.atinn as atinn_no_conv preserving type )                  as CharcInternalID,
      @ObjectModel.foreignKey.association: '_DefectFractionEstnProced'
      cast( qpmk.eeantverf as vdm_qeantverf preserving type )              as DefectFractionEstimationProced,
      //--[ GENERATED:012:GFBfhyK17kY4idVcfs7Ldm

      @Consumption.valueHelpDefinition: [
        { entity:  { name:    'I_DefectCodeGroupStdVH',
                     element: 'DefectCodeGroup' }
        }]
      // ]--GENERATED

      @ObjectModel.foreignKey.association: '_InspDefectCodeGrpRejection'
      @EndUserText: { label: 'Defect Code Group for General Rejection' , quickInfo: 'Defect Code Group for General Rejection' }
      qpmk.codegrqual                                                      as InspSpecDefectCodeGrpRejection,
      //--[ GENERATED:012:GFBfhyK17kY4idVcfs7Ldm

      @Consumption.valueHelpDefinition: [
        { entity:  { name:    'I_DefectCodeStdVH',
                     element: 'DefectCode' },
          additionalBinding: [{ localElement: 'InspSpecDefectCodeGrpRejection',
                                element: 'DefectCodeGroup' }]
        }]