@AbapCatalog.sqlViewName: 'CACTLOGLPROD'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@AccessControl: {
authorizationCheck: #CHECK
}
@EndUserText.label: 'Active Logistical Product'
@Metadata.allowExtensions: true
@Search.searchable: true
@VDM.viewType: #CONSUMPTION
@ObjectModel:
{ usageType: { serviceQuality: #C,
sizeCategory : #L,
dataClass: #MASTER
},
semanticKey:['Product'],
compositionRoot: true
}
@ClientHandling.algorithm: #SESSION_VARIABLE
//@AccessControl.personalData.blocking: #BLOCKED_DATA_EXCLUDED
define view C_ActiveLogisticalProduct
as select from I_ActiveLogisticalProduct
// Supplier - DC
association [0..*] to C_LoglProdAssgmtSupplierToDC as _LoglProdAssgmtSupplierToDC on $projection.Product = _LoglProdAssgmtSupplierToDC.Product
association [0..*] to C_AssgblSuplrForProcmtProd as _AssgblSuplrForProcmtProd on $projection.Product = _AssgblSuplrForProcmtProd.Product
association [0..*] to C_AssgblDCForSuplr as _AssgblDCForSuplr on $projection.Product = _AssgblDCForSuplr.Product
// DC - Store
association [0..*] to C_LoglProductAssgmtDCToStore as _LoglProductAssgmtDCToStore on $projection.Product = _LoglProductAssgmtDCToStore.Product
association [0..*] to C_AssgblStoreForProcmtProdInt as _AssgblStoreForProcmtProdInt on $projection.Product = _AssgblStoreForProcmtProdInt.Product
association [0..*] to C_AssgblStoreForProcmtProdExt as _AssgblStoreForProcmtProdExt on $projection.Product = _AssgblStoreForProcmtProdExt.Product
association [0..*] to C_AssgblDCForStore as _AssgblDCForStore on $projection.Product = _AssgblDCForStore.Product
// DC - DC
association [0..*] to C_LoglProductAssgmtDCToDC as _LoglProductAssgmtDCToDC on $projection.Product = _LoglProductAssgmtDCToDC.Product
association [0..*] to C_AssgblSupplyingDCForDC as _AssgblSupplyingDCForDC on $projection.Product = _AssgblSupplyingDCForDC.Product
association [0..*] to C_AssgblReceivingDCFromDC as _AssgblReceivingDCFromDC on $projection.Product = _AssgblReceivingDCFromDC.Product
// Supplier - Store
association [0..*] to C_LoglProdAssgmtSuplrToStore as _LoglProdAssgmtSuplrToStore on $projection.Product = _LoglProdAssgmtSuplrToStore.Product
// units
association [1..1] to I_UnitOfMeasure as _PurchaseOrderUnitOfMeasure on $projection.PurchaseOrderUnit = _PurchaseOrderUnitOfMeasure.UnitOfMeasure
association [1..1] to I_UnitOfMeasure as _GoodsIssueUnitOfMeasure on $projection.GoodsIssueUnit = _GoodsIssueUnitOfMeasure.UnitOfMeasure
// product valuehelp
association [1..1] to I_ProductStdVH as _ProductVH on $projection.Product = _ProductVH.Product
{
@Search: { defaultSearchElement: true, fuzzinessThreshold: 0.8, ranking: #HIGH }
@ObjectModel.text.element: [ 'ProductDescription' ]
@Consumption.valueHelp: '_ProductVH'
key Product,
@Search: { defaultSearchElement: true, fuzzinessThreshold: 0.8, ranking: #MEDIUM }
ProductDescription,
@Search: { defaultSearchElement: true, fuzzinessThreshold: 0.8, ranking: #MEDIUM }
ProductGroup,
_ProductGroup,
@Search: { defaultSearchElement: true, fuzzinessThreshold: 0.8, ranking: #MEDIUM }
ProductStandardID,
@Search: { defaultSearchElement: false}
@ObjectModel.foreignKey.association: '_PurchaseOrderUnitOfMeasure'
@Semantics.unitOfMeasure: true
case I_ActiveLogisticalProduct.PurchaseOrderUnit
when '' then BaseUnit
else PurchaseOrderUnit
end as PurchaseOrderUnit,
_PurchaseOrderUnitOfMeasure,
@Search: { defaultSearchElement: false }
@ObjectModel.foreignKey.association: '_GoodsIssueUnitOfMeasure'
@Semantics.unitOfMeasure: true
case GoodsIssueUnit
when '' then BaseUnit
else GoodsIssueUnit
end as GoodsIssueUnit,
_GoodsIssueUnitOfMeasure,
@Search: { defaultSearchElement: true, fuzzinessThreshold: 0.8, ranking: #MEDIUM }
ProductCategory,
_ProductCategory,
@Search: { defaultSearchElement: true, fuzzinessThreshold: 0.8, ranking: #MEDIUM }
ProductType,
_ProductType,
@Search: { defaultSearchElement: true, fuzzinessThreshold: 0.8, ranking: #MEDIUM }
@Semantics.unitOfMeasure: true
BaseUnit,
_BaseUnitOfMeasure,
@Semantics.systemDate.createdAt: true
@Search.defaultSearchElement: false
CreationDate,
@Semantics.user.createdBy: true
@Search: { defaultSearchElement: true, fuzzinessThreshold: 0.8, ranking: #MEDIUM }
@ObjectModel.text.element: [ 'CreatedByUserName' ]
CreatedByUser,
@ObjectModel.readOnly: true
@UI.hidden : true
_CreatedByUser.UserDescription as CreatedByUserName,
@ObjectModel.readOnly: true
@ObjectModel.text.element: 'LastChangedByUserName'
LastChangedByUser,
@ObjectModel.readOnly: true
@UI.hidden : true
_LastChangedByUser.UserDescription as LastChangedByUserName,
@ObjectModel.readOnly: true
@Semantics.systemDate.lastChangedAt: true
@Search.defaultSearchElement: false
LastChangeDate,
@Semantics.systemTime.lastChangedAt: true
@Search.defaultSearchElement: false
LastChangeTime,
@Semantics.imageUrl: true
@ObjectModel: { readOnly: true,
virtualElement: true,
virtualElementCalculatedBy: 'ABAP:CL_MD_PRODUCT_ROOT_CALC_EXIT1' }
cast( '' as productimageurl ) as ProductImageURL,
@Consumption.hidden: true
AuthorizationGroup,
/* Exposing value via associations */
@ObjectModel.association.type: [ #TO_COMPOSITION_CHILD ]
_LoglProdAssgmtSupplierToDC,
@ObjectModel.association.type: [ #TO_COMPOSITION_CHILD ]
_LoglProductAssgmtDCToStore,
@ObjectModel.association.type: [ #TO_COMPOSITION_CHILD ]
_LoglProductAssgmtDCToDC,
@ObjectModel.association.type: [ #TO_COMPOSITION_CHILD ]
_AssgblSupplyingDCForDC,
@ObjectModel.association.type: [ #TO_COMPOSITION_CHILD ]
_AssgblReceivingDCFromDC,
@ObjectModel.association.type: [ #TO_COMPOSITION_CHILD ]
_LoglProdAssgmtSuplrToStore,
@ObjectModel.association.type: [ #TO_COMPOSITION_CHILD ]
_AssgblSuplrForProcmtProd,
@ObjectModel.association.type: [ #TO_COMPOSITION_CHILD]
_AssgblDCForSuplr,
@ObjectModel.association.type: [ #TO_COMPOSITION_CHILD]
_AssgblStoreForProcmtProdInt,
@ObjectModel.association.type: [ #TO_COMPOSITION_CHILD]
_AssgblStoreForProcmtProdExt,
@ObjectModel.association.type: [ #TO_COMPOSITION_CHILD]
_AssgblDCForStore,
@ObjectModel.association.type: [ #TO_COMPOSITION_CHILD]
_ProductVH
}
/*+[internal] {
"BASEINFO":
{
"FROM":
[
"I_ACTIVELOGISTICALPRODUCT",
"I_USER"
],
"ASSOCIATED":
[
"C_ASSGBLDCFORSTORE",
"C_ASSGBLDCFORSUPLR",
"C_ASSGBLRECEIVINGDCFROMDC",
"C_ASSGBLSTOREFORPROCMTPRODEXT",
"C_ASSGBLSTOREFORPROCMTPRODINT",
"C_ASSGBLSUPLRFORPROCMTPROD",
"C_ASSGBLSUPPLYINGDCFORDC",
"C_LOGLPRODASSGMTSUPLRTOSTORE",
"C_LOGLPRODASSGMTSUPPLIERTODC",
"C_LOGLPRODUCTASSGMTDCTODC",
"C_LOGLPRODUCTASSGMTDCTOSTORE",
"I_PRODUCTCATEGORY",
"I_PRODUCTGROUP",
"I_PRODUCTSTDVH",
"I_PRODUCTTYPE",
"I_UNITOFMEASURE"
],
"BASE":
[
"I_ACTIVELOGISTICALPRODUCT"
],
"ANNO_REF":
[],
"SCALAR_FUNCTION":
[],
"VERSION":0,
"ANNOREF_EVALUATION_ERROR":""
}
}*/