C_UnpackagedDangerousGoodClfn

DDL: C_UNPACKAGEDDANGEROUSGOODCLFN SQL: CUPDGCLFN Type: view CONSUMPTION

Unpackaged Dangerous Good Classification

C_UnpackagedDangerousGoodClfn is a Consumption CDS View that provides data about "Unpackaged Dangerous Good Classification" in SAP S/4HANA. It reads from 1 data source (I_CmplRqRslt) and exposes 18 fields with key field CmplRqRsltUUID. It has 5 associations to related views.

Data Sources (1)

SourceAliasJoin Type
I_CmplRqRslt ComplianceRequirementResult from

Associations (5)

CardinalityTargetAliasCondition
[1..1] I_CmplRqRsltDngrsGdsBscDets _CmplRqRsltDngrsGdsBscDets _CmplRqRsltDngrsGdsBscDets.CmplRqRsltUUID = $projection.CmplRqRsltUUID
[0..1] R_UnpckgdDngrsGdsClfnDrft _CmplRqRsltDrft _CmplRqRsltDrft.ActiveCmplRqRsltUUID = $projection.CmplRqRsltUUID
[0..*] I_ClassifiedAsDangerousGoodTxt _ClassifiedAsDangerousGoodTxt _ClassifiedAsDangerousGoodTxt.ClassifiedAsDangerousGood = $projection.ClassifiedAsDangerousGood
[0..*] I_TransportPermissionText _TransportPermissionText _TransportPermissionText.TransportPermission = $projection.CmplRqRsltManualStatus
[1..1] C_CmplRqRsltDraftAdminvData _DraftAdministrativeData _DraftAdministrativeData.CmplRqRsltUUID = $projection.CmplRqRsltUUID

Annotations (12)

NameValueLevelField
AbapCatalog.sqlViewName CUPDGCLFN view
AbapCatalog.compiler.compareFilter true view
AbapCatalog.preserveKey true view
AccessControl.authorizationCheck #MANDATORY view
AccessControl.personalData.blocking #NOT_REQUIRED view
EndUserText.label Unpackaged Dangerous Good Classification view
Metadata.allowExtensions true view
VDM.viewType #CONSUMPTION view
ClientHandling.algorithm #SESSION_VARIABLE view
ObjectModel.usageType.dataClass #MIXED view
ObjectModel.usageType.sizeCategory #L view
ObjectModel.usageType.serviceQuality #C view

Fields (18)

KeyFieldSource TableSource FieldDescription
KEY CmplRqRsltUUID I_CmplRqRslt CmplRqRsltUUID
ComplianceRequirement ComplianceRequirementVersion ComplianceRequirement
ChmlCmplncInfoUUID I_CmplRqRslt ChmlCmplncInfoUUID
CmplRqVersUUID ComplianceRequirementVersion CmplRqVersUUID
CmplRqVersName
CmplRqRsltProcessingStatus I_CmplRqRslt CmplRqRsltProcessingStatus
CmplRqRsltProcessorName
ProcessorendasProcessor
DangerousGoodBasicDescription
HasDraftEntity
IsActiveEntity
CmplRqPattern ComplianceRequirementVersion CmplRqPattern
_CmplRqRsltProcessingStatus I_CmplRqRslt _CmplRqRsltProcessingStatus
_CmplRqRsltDngrsGdsBscDets _CmplRqRsltDngrsGdsBscDets
_TransportPermissionText _TransportPermissionText
_ClassifiedAsDangerousGoodTxt _ClassifiedAsDangerousGoodTxt
_DraftAdministrativeData _DraftAdministrativeData
_CmplRqRsltDrft _CmplRqRsltDrft
@AbapCatalog.sqlViewName: 'CUPDGCLFN'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey:true 
@AccessControl:
{
  authorizationCheck: #MANDATORY,
  personalData.blocking: #NOT_REQUIRED
}

@EndUserText.label: 'Unpackaged Dangerous Good Classification'

@Metadata.allowExtensions: true

@VDM.viewType: #CONSUMPTION

@ClientHandling.algorithm: #SESSION_VARIABLE

@ObjectModel:
{
  semanticKey: [ 'ComplianceRequirement' ],
  usageType:
  {
    dataClass: #MIXED,
    sizeCategory: #L, // < 10.000.000

    serviceQuality: #C // <= 15 msec

  }
}

/*+[hideWarning] { "IDS" : [ "CARDINALITY_CHECK" ]  } */
define view C_UnpackagedDangerousGoodClfn as select from I_CmplRqRslt as ComplianceRequirementResult
    // Only get the latest CRR for a combination of CRV and CCI

    join P_NewestCRRStatusForCRVAndCCI
      on  P_NewestCRRStatusForCRVAndCCI.CmplRqVersUUID             = ComplianceRequirementResult.CmplRqVersUUID
      and P_NewestCRRStatusForCRVAndCCI.ChmlCmplncInfoUUID         = ComplianceRequirementResult.ChmlCmplncInfoUUID
      and P_NewestCRRStatusForCRVAndCCI.CmplRqRsltProcessingStatus = ComplianceRequirementResult.CmplRqRsltProcessingStatus

                                       
    // Only get CRRs which are for component "Dangerous Goods"

    join I_CmplRqVersEnhanced as ComplianceRequirementVersion 
      on  ComplianceRequirementVersion.CmplRqVersUUID             = ComplianceRequirementResult.CmplRqVersUUID 
      and ComplianceRequirementVersion.CmplRqApplicationComponent = 'DG'             
                                                                                                                                                     
    // active data

    association [1..1] to I_CmplRqRsltDngrsGdsBscDets    as _CmplRqRsltDngrsGdsBscDets    on _CmplRqRsltDngrsGdsBscDets.CmplRqRsltUUID               = $projection.CmplRqRsltUUID  
//    association [0..*] to I_CmplRqRsltDngrsGdsBscDescT   as _DngrsGdsBscDescT             on _DngrsGdsBscDescT.CmplRqRsltUUID                        = $projection.CmplRqRsltUUID   


    // draft data

    association [0..1] to R_UnpckgdDngrsGdsClfnDrft      as _CmplRqRsltDrft      on _CmplRqRsltDrft.ActiveCmplRqRsltUUID           = $projection.CmplRqRsltUUID 
    
    // text tables

//    association [0..*] to I_CmplRqVersText               as _CmplRqVersText               on _CmplRqVersText.CmplRqVersUUID                          = $projection.CmplRqVersUUID         

    association [0..*] to I_ClassifiedAsDangerousGoodTxt as _ClassifiedAsDangerousGoodTxt on _ClassifiedAsDangerousGoodTxt.ClassifiedAsDangerousGood = $projection.ClassifiedAsDangerousGood
    
    association [0..*] to I_TransportPermissionText      as _TransportPermissionText      on _TransportPermissionText.TransportPermission            = $projection.CmplRqRsltManualStatus 
    
    // draft admin data

    association [1..1] to C_CmplRqRsltDraftAdminvData    as _DraftAdministrativeData      on _DraftAdministrativeData.CmplRqRsltUUID                 = $projection.CmplRqRsltUUID                                                 
{
    @ObjectModel.readOnly: true
    key ComplianceRequirementResult.CmplRqRsltUUID,

    @ObjectModel.readOnly: true
    ComplianceRequirementVersion.ComplianceRequirement, // used for DCL

    
    @ObjectModel.readOnly: true
    ComplianceRequirementResult.ChmlCmplncInfoUUID,
    
    @ObjectModel.readOnly: true
//    @ObjectModel.text.association: '_CmplRqVersText'

    ComplianceRequirementVersion.CmplRqVersUUID,
    
    @ObjectModel.readOnly: true  
    cast ( ComplianceRequirementVersion.CmplRqVersName as ehdgm_regulation_name preserving type ) as CmplRqVersName,
    
    @ObjectModel.readOnly: true
    ComplianceRequirementResult.CmplRqRsltProcessingStatus,
    
    @ObjectModel.readOnly: true
    @ObjectModel.virtualElement
    @ObjectModel.virtualElementCalculatedBy: 'ABAP:CL_EHFND_CRR_PROCESSOR_EXIT'
    @Semantics.text: true
    cast( '' as ad_namtext ) as CmplRqRsltProcessorName, 

    @ObjectModel.readOnly: true
    @ObjectModel.text.element: ['CmplRqRsltProcessorName']
    case // use the draft data if a draft exists

      when _CmplRqRsltDrft.CmplRqRsltUUID is not null 
        then _CmplRqRsltDrft.Processor
      when _CmplRqRsltDrft.CmplRqRsltUUID is null 
        then ComplianceRequirementResult.Processor
    end as Processor,

    @ObjectModel.readOnly: true
    @ObjectModel.text.association: '_TransportPermissionText'
    cast( case // use the draft data if a draft exists

      when _CmplRqRsltDrft.CmplRqRsltUUID is not null 
        then _CmplRqRsltDrft.CmplRqRsltManualStatus
      when _CmplRqRsltDrft.CmplRqRsltUUID is null 
        then ComplianceRequirementResult.CmplRqRsltManualStatus
    end as ehdgm_transport_permission preserving type ) as CmplRqRsltManualStatus,
    
//    @ObjectModel.readOnly: true

//    ComplianceRequirementResult.CmplRqRsltReldCmplncSts,


//    @ObjectModel.readOnly: true

//    _CmplRqRsltDngrsGdsBscDets.CmplRqRsltDngrsGdsBscDetsUUID,


    @ObjectModel.readOnly: true
    @ObjectModel.text.association: '_ClassifiedAsDangerousGoodTxt'
    case // use the draft data if a draft exists

      when _CmplRqRsltDrft.CmplRqRsltUUID is not null 
        then _CmplRqRsltDrft._UnpckgdDngrsGdsClfnDetsDrft.ClassifiedAsDangerousGood
      when _CmplRqRsltDrft.CmplRqRsltUUID is null 
        then _CmplRqRsltDngrsGdsBscDets.ClassifiedAsDangerousGood
    end as ClassifiedAsDangerousGood,
    
    @ObjectModel: {
      readOnly: true,
      virtualElement: true,
      virtualElementCalculatedBy: 'ABAP:CL_EHDGM_UP_DOC_DESC_EXIT'
    }
    cast( '' as ehdgm_basic_description ) as DangerousGoodBasicDescription,    
    
    // Needed for Draft Indicator

    @ObjectModel: {
      readOnly: true,
      virtualElement: true,
      virtualElementCalculatedBy: 'ABAP:CL_EHFND_CRR_DRAFT_IND_EXIT'
    }
    cast( '' as boole_d ) as HasDraftEntity,

    @ObjectModel: {
      readOnly: true,
      virtualElement: true,
      virtualElementCalculatedBy: 'ABAP:CL_EHFND_CRR_DRAFT_IND_EXIT'
    }
    cast( '' as boole_d ) as IsActiveEntity,

    // Needed for Navigation (decide between textbased / xx contentbased apps)

    @ObjectModel.readOnly: true
    ComplianceRequirementVersion.CmplRqPattern,    
    
    // Associations

    ComplianceRequirementResult._CmplRqRsltProcessingStatus,
    _CmplRqRsltDngrsGdsBscDets,
//    _CmplRqVersText,

    _TransportPermissionText,
    _ClassifiedAsDangerousGoodTxt,
    _DraftAdministrativeData,
    _CmplRqRsltDrft
  
} where ComplianceRequirementResult.CmplRqRsltProcessingStatus = 'IP' 
     or ComplianceRequirementResult.CmplRqRsltProcessingStatus = 'RE'