@AbapCatalog.sqlViewName: 'CPPDG'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey:true
@AbapCatalog.dataMaintenance: #RESTRICTED
@AccessControl:
{
authorizationCheck: #MANDATORY,
personalData.blocking: #NOT_REQUIRED
}
@EndUserText.label: 'Packaged Dangerous Good'
@Metadata.allowExtensions: true
@Metadata.ignorePropagatedAnnotations: true
@VDM.viewType: #CONSUMPTION
@ClientHandling.algorithm: #SESSION_VARIABLE
@ObjectModel:
{
semanticKey: [ 'Product',
'ChmlCmplncInfoNavgnLink',
'AnalyticCmpstnNavgnLinkUUID',
'MatlBsdCmpstnNavgnLinkUUID',
'PCPhysPrptyNavgnLinkUUID' ],
usageType:
{
dataClass: #MIXED,
sizeCategory: #L,
serviceQuality: #C
}
}
define view C_PackagedDangerousGood
--Select data from master table 'Chemical Compliance Info'
as select from I_ChmlCmplncInfo as ChemicalComplianceInfo
--Join data from primary material assignment
left outer to one join I_ChmlCmplncMatlAssgmt as PrimaryMaterial on ChemicalComplianceInfo.ChmlCmplncInfoUUID = PrimaryMaterial.ChmlCmplncInfoUUID
and PrimaryMaterial.MatlAssgmtIsPrimary = 'X'
--Join data from product name in current language to define Combined Name
left outer to one join I_ProductText as ProductText on PrimaryMaterial.Material = ProductText.Product
and ProductText.Language = $session.system_language
--Join data from corresponding unpackaged product
left outer to one join I_ChmlCmplncProdAssgmt as ProductAssignment on ChemicalComplianceInfo.ChmlCmplncInfoUUID = ProductAssignment.ChmlCmplncInfoUUID
left outer to one join I_ChmlCmplncInfo as UnpackagedProduct on ProductAssignment.ChmlCmplncProdUUID = UnpackagedProduct.ChmlCmplncInfoUUID
left outer to one join I_ChmlCmplncMatlAssgmt as UPPrimaryMaterial on UnpackagedProduct.ChmlCmplncInfoUUID = UPPrimaryMaterial.ChmlCmplncInfoUUID
and UPPrimaryMaterial.MatlAssgmtIsPrimary = 'X'
left outer to one join I_ProductText as UPProductText on UPPrimaryMaterial.Material = UPProductText.Product
and UPProductText.Language = $session.system_language
-- provide additional product data via exposed association
association [1..1] to I_Product as _Product on $projection.Product = _Product.Product
association [0..*] to I_ProductText as _ProductText on $projection.Product = _ProductText.Product
association [0..*] to I_ProductGroupText_2 as _ProductGroupText on $projection.productgroup = _ProductGroupText.ProductGroup
association [0..*] to C_PackagedDangerousGoodClfn as _PackagedDangerousGoodClfn on $projection.ChmlCmplncInfoUUID = _PackagedDangerousGoodClfn.ChmlCmplncInfoUUID
association [1..1] to C_PckgdDngrsGoodEnclosureDets as _PckgdDngrsGoodEnclosureDets on $projection.ChmlCmplncInfoUUID = _PckgdDngrsGoodEnclosureDets.ChmlCmplncInfoUUID
association [0..*] to C_PckgdDngrsGoodHzdNote as _PckgdDngrsGoodHzdNote on $projection.ChmlCmplncInfoUUID = _PckgdDngrsGoodHzdNote.ChmlCmplncInfoUUID
-- needed for the smart link navigation on the unpackaged product name
association [0..1] to P_AssociatedAnlytlReldCmpstn as _AnlytlCmpstn on _AnlytlCmpstn.ChmlCmplncInfoUUID = UnpackagedProduct.ChmlCmplncInfoUUID
association [0..1] to P_AssociatedMatlReldCmpstn as _MatlBsdCmpstn on _MatlBsdCmpstn.ChmlCmplncInfoUUID = UnpackagedProduct.ChmlCmplncInfoUUID
association [0..1] to P_ChmlCmplncInfoAssgdPCPhys as _PCPhysProperty on _PCPhysProperty.ChmlCmplncInfoUUID = UnpackagedProduct.ChmlCmplncInfoUUID
and _PCPhysProperty.PCPrptyRootType = 'EHFNDD_PHYSCHEM'
and (
_PCPhysProperty.PCPrptyInProcProcgSts = 'IP'
or _PCPhysProperty.PCPrptyReldProcgSts = 'RE'
)
// association [0..1] to C_ChmlCmplncInfoAssgdPCPrpty as _PCEctxProperty on _PCEctxProperty.ChmlCmplncInfoUUID = UnpackagedProduct.ChmlCmplncInfoUUID
// and _PCEctxProperty.PCPrptyRootType = 'EHFNDD_ECTX'
{
@ObjectModel.readOnly:true
@ObjectModel.text.element: ['ChmlCmplncInfoCombinedName']
key ChemicalComplianceInfo.ChmlCmplncInfoUUID,
@ObjectModel.virtualElement
@ObjectModel.virtualElementCalculatedBy: 'ABAP:CL_EHDGM_CCI_AUTHZN_EXIT'
@Semantics.booleanIndicator:true
cast( '' as ehfnd_boolean preserving type ) as IsEditable,
// SIT Handling
@UI.hidden: true
cast( bintohex(ChemicalComplianceInfo.ChmlCmplncInfoUUID) as sit_de_ancobjkey ) as SitnInstceAnchorObjectKey,
@ObjectModel.readOnly:true
cast (PrimaryMaterial.Material as productnumber preserving type ) as Product,
@ObjectModel.readOnly:true
cast (PrimaryMaterial.Material as ehfnd_cci_raw_material preserving type ) as RawMaterial,
@ObjectModel.readOnly:true
@ObjectModel.text.association: '_ProductGroupText'
_Product.ProductGroup,
@ObjectModel.readOnly: true
@ObjectModel.text.element: ['DescOfDngrsGdsPckgName']
_PckgdDngrsGoodEnclosureDets.DescriptionOfDngrsGdsPckg,
@ObjectModel.readOnly: true
_PckgdDngrsGoodEnclosureDets.PackagingIsTankOrBulkFilling,
@ObjectModel.readOnly: true
@Semantics.text: true
_PckgdDngrsGoodEnclosureDets.DescOfDngrsGdsPckgName,
@ObjectModel.readOnly: true
_PckgdDngrsGoodEnclosureDets.DangerousGoodsPackagingCode,
@ObjectModel.readOnly:true
@Semantics.quantity.unitOfMeasure: 'DangerousGoodsEnclosureUnit'
_PckgdDngrsGoodEnclosureDets.DangerousGoodsEnclosureQty,
@ObjectModel.readOnly:true
@ObjectModel.text.association: '_EnclosureUnitOfMeasureText'
@Semantics.unitOfMeasure: true
_PckgdDngrsGoodEnclosureDets.DangerousGoodsEnclosureUnit,
@ObjectModel.readOnly:true
_PckgdDngrsGoodEnclosureDets.DngrsGdsEnclrNmbrOfInnerPckgs,
@ObjectModel.readOnly: true
@ObjectModel.text.element: ['DescOfDngrsGdsInnerPackggName']
_PckgdDngrsGoodEnclosureDets.DescOfDngrsGdsInnerPackgg,
@ObjectModel.readOnly: true
@Semantics.text: true
_PckgdDngrsGoodEnclosureDets.DescOfDngrsGdsInnerPackggName,
@ObjectModel.readOnly:true
@Semantics.quantity.unitOfMeasure: 'DngrsGdsEnclrInnerPackageUnit'
_PckgdDngrsGoodEnclosureDets.DngrsGdsEnclrInnerPackageQty,
@ObjectModel.readOnly:true
@ObjectModel.text.association: '_InnerPackageUnitOfMeasureText'
@Semantics.unitOfMeasure: true
_PckgdDngrsGoodEnclosureDets.DngrsGdsEnclrInnerPackageUnit,
@ObjectModel.readOnly:true
@Semantics.quantity.unitOfMeasure: 'DangerousGoodsControlTempUnit'
_PckgdDngrsGoodEnclosureDets.DangerousGoodsControlTemp,
@ObjectModel.readOnly: true
@ObjectModel.text.association: '_ControlTempUnitOfMeasureText'
@Semantics.unitOfMeasure: true
_PckgdDngrsGoodEnclosureDets.DangerousGoodsControlTempUnit,
@ObjectModel.readOnly:true
@Semantics.quantity.unitOfMeasure: 'DangerousGoodsEmgyTempUnit'
_PckgdDngrsGoodEnclosureDets.DangerousGoodsEmergencyTemp,
@ObjectModel.readOnly: true
@ObjectModel.text.association: '_EmgyTempUnitOfMeasureText'
@Semantics.unitOfMeasure: true
_PckgdDngrsGoodEnclosureDets.DangerousGoodsEmgyTempUnit,
@ObjectModel.readOnly:true
@Semantics.text: true
cast( coalesce( ProductText.ProductName, ChemicalComplianceInfo.ChmlCmplncInternalName ) as ehfnd_cci_pp ) as ChmlCmplncInfoCombinedName,
@ObjectModel.readOnly:true
ChemicalComplianceInfo.ChmlCmplncInternalName,
@ObjectModel.readOnly:true
ProductText.ProductName,
// UUID of the assigned UP
@ObjectModel.readOnly:true
ProductAssignment.ChmlCmplncProdUUID, // redundant field due to compatiblity reasons to previous releases
@ObjectModel.readOnly:true
ProductAssignment.ChmlCmplncProdUUID as ChmlCmplncInfoNavgnLink, // needed for navigation to the unpackaged product targets
@ObjectModel.readOnly: true
_AnlytlCmpstn.ChmlCompositionReleasedUUID as AnalyticCmpstnNavgnLinkUUID, // needed for Navigation into Analytical Composition
@ObjectModel.readOnly: true
_MatlBsdCmpstn.ChmlCompositionReleasedUUID as MatlBsdCmpstnNavgnLinkUUID, // needed for Navigation into Material Based Composition
@ObjectModel.readOnly: true
_PCPhysProperty.PCPrptyNavgnLinkUUID as PCPhysPrptyNavgnLinkUUID, // needed for Navigation into PhysChem Property
// Unpackaged Product Name
@ObjectModel.readOnly:true
@Semantics.text: true
cast( coalesce( UPProductText.ProductName, UnpackagedProduct.ChmlCmplncInternalName) as ehfnd_cci_up ) as ChmlCmplncInfoUnpckgdProdName,
@ObjectModel.readOnly:true
@Semantics.text: true
cast( coalesce( UPProductText.ProductName, UnpackagedProduct.ChmlCmplncInternalName ) as ehfnd_cci_raw_material_name ) as ChmlCmplncInfoRawMaterialName,
// Needed for Authorization check
@ObjectModel.readOnly:true
@Consumption.hidden: true
ChemicalComplianceInfo.DngrsGdsRespUnit,
// needed for the Object Page Header Icon determination
@ObjectModel.readOnly: true
ChemicalComplianceInfo.ChmlCmplncInfoType,
@ObjectModel.readOnly: true
ChemicalComplianceInfo.ChmlCmplncProdIsResearched,
@ObjectModel.readOnly: true
ChemicalComplianceInfo.MaterialIsSold,
@ObjectModel.readOnly: true
ChemicalComplianceInfo.MaterialIsTransported,
@ObjectModel.readOnly: true
ChemicalComplianceInfo.MaterialIsSourced,
@ObjectModel.readOnly: true
ChemicalComplianceInfo.MaterialIsProduced,
-------------------------------------------------------------------------------------------------------
--Type Image URL
-------------------------------------------------------------------------------------------------------
@ObjectModel.virtualElement
@ObjectModel.virtualElementCalculatedBy: 'ABAP:CL_EHFND_TYPE_IMAGE_CALC_EXT'
@ObjectModel.readOnly: true
cast( '' as abap.char( 255 ) ) as ChmlCmplncTypeImageURL,
-------------------------------------------------------------------------------------------------------
--Associations
-------------------------------------------------------------------------------------------------------
@Consumption.hidden: true
_ProductText,
@Consumption.hidden: true
_ProductGroupText,
_PackagedDangerousGoodClfn,
_PckgdDngrsGoodEnclosureDets,
_PckgdDngrsGoodEnclosureDets._EnclosureUnitOfMeasureText,
_PckgdDngrsGoodEnclosureDets._InnerPackageUnitOfMeasureText,
_PckgdDngrsGoodEnclosureDets._EmgyTempUnitOfMeasureText,
_PckgdDngrsGoodEnclosureDets._ControlTempUnitOfMeasureText,
_PckgdDngrsGoodHzdNote
}
where
ChemicalComplianceInfo.ChmlCmplncInfoType = 'PP'
and ChemicalComplianceInfo.MaterialIsTransported = 'X'
/*+[internal] {
"BASEINFO":
{
"FROM":
[
"C_PCKGDDNGRSGOODENCLOSUREDETS",
"I_CHMLCMPLNCINFO",
"I_CHMLCMPLNCMATLASSGMT",
"I_CHMLCMPLNCPRODASSGMT",
"I_PRODUCT",
"I_PRODUCTTEXT",
"P_ASSOCIATEDANLYTLRELDCMPSTN",
"P_ASSOCIATEDMATLRELDCMPSTN",
"P_CHMLCMPLNCINFOASSGDPCPHYS"
],
"ASSOCIATED":
[
"C_PACKAGEDDANGEROUSGOODCLFN",
"C_PCKGDDNGRSGOODENCLOSUREDETS",
"C_PCKGDDNGRSGOODHZDNOTE",
"I_DNGRSGDSUNITOFMEASURETEXT",
"I_PRODUCT",
"I_PRODUCTGROUPTEXT_2",
"I_PRODUCTTEXT",
"P_ASSOCIATEDANLYTLRELDCMPSTN",
"P_ASSOCIATEDMATLRELDCMPSTN",
"P_CHMLCMPLNCINFOASSGDPCPHYS"
],
"BASE":
[
"C_PCKGDDNGRSGOODENCLOSUREDETS"
],
"ANNO_REF":
[],
"SCALAR_FUNCTION":
[],
"VERSION":0,
"ANNOREF_EVALUATION_ERROR":""
}
}*/