I_EquipMatlSerialNumber

DDL: I_EQUIPMATLSERIALNUMBER Type: view COMPOSITE Package: VDM_EAM_EQUIPMENT

Material Serial Number

I_EquipMatlSerialNumber is a Composite CDS View that provides data about "Material Serial Number" in SAP S/4HANA. It reads from 1 data source (I_Equipment) and exposes 43 fields with key fields Material, SerialNumber. It has 2 associations to related views. It is exposed through 1 OData service (EAM_MATERIALSERIALNUMBER). Part of development package VDM_EAM_EQUIPMENT.

Data Sources (1)

SourceAliasJoin Type
I_Equipment Equipment from

Associations (2)

CardinalityTargetAliasCondition
[0..1] I_EquipMatlLastSerialNumber _EquipMatlLastSerialNumber $projection.Material = _EquipMatlLastSerialNumber.Material association[0..1] to I_PlantMaintenancePartner as _PlantMaintenancePartner on Equipment.MaintObjectInternalID = _PlantMaintenancePartner.MaintObjectInternalID -- Extension, do not expose as association:
[0..1] E_EquipMatlSerialNumber _MaterialSerialNumberExt _MaterialSerialNumberExt.Material = $projection.Material and _MaterialSerialNumberExt.SerialNumber = $projection.SerialNumber

Annotations (11)

NameValueLevelField
EndUserText.label Material Serial Number view
VDM.viewType #COMPOSITE view
AbapCatalog.sqlViewName IEQUIPMATSERNUM view
ClientHandling.algorithm #SESSION_VARIABLE view
ObjectModel.usageType.dataClass #MASTER view
Analytics.internalName #LOCAL view
ObjectModel.usageType.serviceQuality #C view
ObjectModel.usageType.sizeCategory #XL view
AccessControl.authorizationCheck #MANDATORY view
ObjectModel.representativeKey SerialNumber view
AccessControl.personalData.blocking #REQUIRED view

OData Services (1)

ServiceBindingVersionContractRelease
EAM_MATERIALSERIALNUMBER EAM_SB_MATERIALSERIALNUMBER V4 C1 NOT_RELEASED

Fields (43)

KeyFieldSource TableSource FieldDescription
KEY Material I_Equipment Material
KEY SerialNumber I_Equipment SerialNumber
Equipment I_Equipment Equipment
EquipmentCategory I_Equipment EquipmentCategory
UniqueItemIdentifier I_Equipment UniqueItemIdentifier
UniqueItemIdentifierStrucType I_Equipment UniqueItemIdentifierStrucType
UniqueItemIdentifierRespPlant I_Equipment UniqueItemIdentifierRespPlant
MaintObjectInternalID I_Equipment MaintObjectInternalID
HasEquipmentData I_Equipment HasEquipmentData
EquipmentHasStockInformation I_Equipment EquipmentHasStockInformation
CreatedByUser I_Equipment CreatedByUser
LastChangedByUser I_Equipment LastChangedByUser
CreationDate I_Equipment CreationDate
LastChangeDate I_Equipment LastChangeDate
LastChangeDateTime I_Equipment LastChangeDateTime
MatlSrlNmbrMasterBatch I_Equipment Batch
MatlSrlNmbrLastGdsMvtDte I_Equipment MatlSrlNmbrLastGdsMvtDte
EquipMaterialLastSerialNumber _EquipMatlLastSerialNumber EquipMaterialLastSerialNumber
InventoryStockType SerialNumberStockSegment InventoryStockType
Plant SerialNumberStockSegment Plant
StorageLocation SerialNumberStockSegment StorageLocation
MaterialSerialNumberStockBatch SerialNumberStockSegment Batch
InventorySpecialStockType SerialNumberStockSegment InventorySpecialStockType
Customer SerialNumberStockSegment Customer
Supplier SerialNumberStockSegment Supplier
SalesOrder SerialNumberStockSegment SalesOrder
SalesOrderItem SerialNumberStockSegment SalesOrderItem
WBSElementInternalID
StockOwner SerialNumberStockSegment StockOwner
CompanyCode
_EquipmentText I_Equipment _EquipmentText
_Status I_Equipment _Status
_Material I_Equipment _Material
_EquipmentCategory I_Equipment _EquipmentCategory
_InventoryStockType SerialNumberStockSegment _InventoryStockType
_Plant SerialNumberStockSegment _Plant
_StorageLocation SerialNumberStockSegment _StorageLocation
_Customer SerialNumberStockSegment _Customer
_Supplier SerialNumberStockSegment _Supplier
_InventorySpecialStockType SerialNumberStockSegment _InventorySpecialStockType
_SalesOrder SerialNumberStockSegment _SalesOrder
_SalesOrderItem SerialNumberStockSegment _SalesOrderItem
_WBSElementByInternalKey SerialNumberStockSegment _WBSElementByInternalKey
@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

 
 -- Extension, do not expose as association:
  association [0..1] to E_EquipMatlSerialNumber           as _MaterialSerialNumberExt on _MaterialSerialNumberExt.Material = $projection.Material and
                                                                                                                                            _MaterialSerialNumberExt.SerialNumber = $projection.SerialNumber
                                                                                                                                       
{
 @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,
 
 SerialNumberStockSegment._Plant._ValuationArea.CompanyCode as CompanyCode,
 
 // 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 != ' '