@EndUserText.label: 'Material Serial Number'
@VDM.viewType: #COMPOSITE
@AbapCatalog: { sqlViewName: 'IEQUIPMATSERNUM', compiler.compareFilter }
@ClientHandling.algorithm: #SESSION_VARIABLE
@ObjectModel.usageType.dataClass: #MASTER
@Analytics.internalName:#LOCAL
@ObjectModel.usageType.serviceQuality: #C
@ObjectModel.usageType.sizeCategory: #XL
@Metadata: { ignorePropagatedAnnotations, allowExtensions }
@ObjectModel.supportedCapabilities: [#SQL_DATA_SOURCE, #CDS_MODELING_DATA_SOURCE, #CDS_MODELING_ASSOCIATION_TARGET]
@AccessControl.authorizationCheck: #MANDATORY
@ObjectModel.representativeKey:'SerialNumber'
@ObjectModel.semanticKey: [ 'Equipment' ]
@AccessControl.personalData.blocking: #REQUIRED
define view I_EquipMatlSerialNumber
as select from I_Equipment as Equipment
left outer to one join I_SerialNumberStockSegment as SerialNumberStockSegment on Equipment.Equipment = SerialNumberStockSegment.Equipment
association [0..1] to I_EquipMatlLastSerialNumber as _EquipMatlLastSerialNumber on $projection.Material = _EquipMatlLastSerialNumber.Material
association[0..1] to I_PlantMaintenancePartner as _PlantMaintenancePartner on Equipment.MaintObjectInternalID = _PlantMaintenancePartner.MaintObjectInternalID
// association [0..*] to I_EquipmentText as _EquipmentText on $projection.Equipment = _EquipmentText.Equipment
// association [0..*] to I_StatusObjectStatus as _Status on $projection.MaintObjectInternalID = _Status.StatusObject
// association [0..1] to I_Material as _Material on $projection.Material = _Material.Material
{
@ObjectModel.foreignKey.association: '_Material'
key Equipment.Material,
key Equipment.SerialNumber,
@ObjectModel.text.association: '_EquipmentText'
Equipment.Equipment,
@ObjectModel.foreignKey.association: '_EquipmentCategory'
Equipment.EquipmentCategory,
Equipment.UniqueItemIdentifier,
Equipment.UniqueItemIdentifierStrucType,
Equipment.UniqueItemIdentifierRespPlant,
// Equipment.ValidityStartDate,
// Equipment.ValidityEndDate,
Equipment.MaintObjectInternalID,
@Semantics.booleanIndicator: true
Equipment.HasEquipmentData,
@Semantics.booleanIndicator: true
Equipment.EquipmentHasStockInformation,
@Semantics.user.createdBy: true
Equipment.CreatedByUser,
@Semantics.user.lastChangedBy: true
Equipment.LastChangedByUser,
@Semantics.systemDate.createdAt: true
Equipment.CreationDate,
@Semantics.systemDate.lastChangedAt: true
Equipment.LastChangeDate,
@Semantics.systemDateTime.lastChangedAt: true
Equipment.LastChangeDateTime,
/* @Consumption.valueHelpDefinition: [{ entity: { name: 'I_BatchStdVH',element: 'Batch' } }] */
Equipment.Batch as MatlSrlNmbrMasterBatch,
Equipment.MatlSrlNmbrLastGdsMvtDte,
_EquipMatlLastSerialNumber.EquipMaterialLastSerialNumber,
@ObjectModel.foreignKey.association: '_InventoryStockType'
SerialNumberStockSegment.InventoryStockType,
@ObjectModel.foreignKey.association: '_Plant'
SerialNumberStockSegment.Plant,
@ObjectModel.foreignKey.association: '_StorageLocation'
SerialNumberStockSegment.StorageLocation,
/* @Consumption.valueHelpDefinition: [{ entity: { name: 'I_BatchStdVH',element: 'Batch' } }] */
SerialNumberStockSegment.Batch as MaterialSerialNumberStockBatch,
@ObjectModel.foreignKey.association: '_InventorySpecialStockType'
SerialNumberStockSegment.InventorySpecialStockType,
@ObjectModel.foreignKey.association: '_Customer'
SerialNumberStockSegment.Customer,
@ObjectModel.foreignKey.association: '_Supplier'
SerialNumberStockSegment.Supplier,
@ObjectModel.foreignKey.association: '_SalesOrder'
SerialNumberStockSegment.SalesOrder,
@ObjectModel.foreignKey.association: '_SalesOrderItem'
SerialNumberStockSegment.SalesOrderItem,
@ObjectModel.foreignKey.association: '_WBSElementByInternalKey'
cast(SerialNumberStockSegment.WBSElementInternalID as ps_s4_pspnr preserving type) as WBSElementInternalID,
SerialNumberStockSegment.StockOwner,
// Authorization fields
/* Equipment related fields are removed
This API only handles serial number data
Equipment._CurrentTimeSegment._LocationAccountAssignment.ControllingArea,
Equipment._CurrentTimeSegment._LocationAccountAssignment.CostCenter,
Equipment._CurrentTimeSegment.MaintenancePlanningPlant,
Equipment._CurrentTimeSegment.MaintenancePlannerGroup,
Equipment._CurrentTimeSegment._LocationAccountAssignment.MaintenancePlant,
Equipment.AuthorizationGroup, */
// Association
Equipment._EquipmentText,
Equipment._Status,
Equipment._Material,
Equipment._EquipmentCategory,
SerialNumberStockSegment._InventoryStockType,
SerialNumberStockSegment._Plant,
SerialNumberStockSegment._StorageLocation,
SerialNumberStockSegment._Customer,
SerialNumberStockSegment._Supplier,
SerialNumberStockSegment._InventorySpecialStockType,
SerialNumberStockSegment._SalesOrder,
SerialNumberStockSegment._SalesOrderItem,
SerialNumberStockSegment._WBSElementByInternalKey
//These fields have been exposed for Partner DCL to be available in the root DCL
//Because of VDM ATC(VDMCDSSEC)
// _PlantMaintenancePartner._PartnerFunction.SDDocumentPartnerType as PartnerFunctionType,
// @Semantics.booleanIndicator: true
// _PlantMaintenancePartner._ContactPerson.IsBusinessPurposeCompleted as CntctPersnIsBusPrpsCompleted,
// _PlantMaintenancePartner._ContactPerson._Customer.CustomerAccountGroup as CntctPersnCustomerAccountGroup,
// _PlantMaintenancePartner._ContactPerson._Customer.AuthorizationGroup as CntctPersnCustomerAuthznGroup,
// _PlantMaintenancePartner._ContactPerson._Supplier.SupplierAccountGroup as CntctPersnSupplierAccountGroup,
// _PlantMaintenancePartner._ContactPerson._Supplier.AuthorizationGroup as CntctPersnSupplierAuthznGroup,
// @Semantics.booleanIndicator: true
// _PlantMaintenancePartner._Customer.IsBusinessPurposeCompleted as CustomerIsBusPrpsCmpltd,
// _PlantMaintenancePartner._Customer.CustomerAccountGroup,
// _PlantMaintenancePartner._Customer.AuthorizationGroup as CustomerAuthznGrp,
// @Semantics.booleanIndicator: true
// _PlantMaintenancePartner._Employee.IsBusinessPurposeCompleted as EmployeeIsBusPrpsCmpltd,
// _PlantMaintenancePartner._Employee.AuthorizationGroup as EmployeeAuthznGroup,
// @Semantics.booleanIndicator: true
// _PlantMaintenancePartner._Supplier.IsBusinessPurposeCompleted as SupplierIsBusPrpsCmpltd,
// _PlantMaintenancePartner._Supplier.SupplierAccountGroup,
// _PlantMaintenancePartner._Supplier.AuthorizationGroup as SupplierAuthznGrp
}
where
Equipment.SerialNumber is not null and
Equipment.SerialNumber != ' ' and
Equipment.Material is not null and
Equipment.Material != ' ' and
Equipment.MaintObjectInternalID is not null and
Equipment.MaintObjectInternalID != ' '