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.
@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" ] } */defineview C_UnpackagedDangerousGoodClfn asselectfrom 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: truekey 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: truecast ( 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: truecast( '' as ad_namtext ) as CmplRqRsltProcessorName,
@ObjectModel.readOnly: true@ObjectModel.text.element: ['CmplRqRsltProcessorName']case// use the draft data if a draft exists
when _CmplRqRsltDrft.CmplRqRsltUUID isnotnullthen _CmplRqRsltDrft.Processor
when _CmplRqRsltDrft.CmplRqRsltUUID isnullthen ComplianceRequirementResult.Processor
endas Processor,
@ObjectModel.readOnly: true@ObjectModel.text.association: '_TransportPermissionText'
cast( case// use the draft data if a draft exists
when _CmplRqRsltDrft.CmplRqRsltUUID isnotnullthen _CmplRqRsltDrft.CmplRqRsltManualStatus
when _CmplRqRsltDrft.CmplRqRsltUUID isnullthen ComplianceRequirementResult.CmplRqRsltManualStatus
endas 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 isnotnullthen _CmplRqRsltDrft._UnpckgdDngrsGdsClfnDetsDrft.ClassifiedAsDangerousGood
when _CmplRqRsltDrft.CmplRqRsltUUID isnullthen _CmplRqRsltDngrsGdsBscDets.ClassifiedAsDangerousGood
endas 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'
/*+[internal] {
"BASEINFO":
{
"FROM":
[
"I_CMPLRQRSLT",
"I_CMPLRQRSLTDNGRSGDSBSCDETS",
"I_CMPLRQVERSENHANCED",
"P_NEWESTCRRSTATUSFORCRVANDCCI",
"R_UNPCKGDDNGRSGDSCLFNDETSDRFT",
"R_UNPCKGDDNGRSGDSCLFNDRFT"
],
"ASSOCIATED":
[
"C_CMPLRQRSLTDRAFTADMINVDATA",
"I_CLASSIFIEDASDANGEROUSGOODTXT",
"I_CMPLRQRSLTDNGRSGDSBSCDETS",
"I_CMPLRQRSLTPROCESSINGSTATUS",
"I_TRANSPORTPERMISSIONTEXT",
"R_UNPCKGDDNGRSGDSCLFNDRFT"
],
"BASE":
[
"I_CMPLRQRSLT"
],
"ANNO_REF":
[],
"SCALAR_FUNCTION":
[],
"VERSION":0,
"ANNOREF_EVALUATION_ERROR":""
}
}*/