I_EquipMatlSerialNumber

DDL: I_EQUIPMATLSERIALNUMBER Type: view COMPOSITE

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 42 fields with key fields Material, SerialNumber. It has 1 association to related views. It is exposed through 1 OData service (EAM_MATERIALSERIALNUMBER).

Data Sources (1)

SourceAliasJoin Type
I_Equipment Equipment from

Associations (1)

CardinalityTargetAliasCondition
[0..1] I_EquipMatlLastSerialNumber _EquipMatlLastSerialNumber $projection.Material = _EquipMatlLastSerialNumber.Material association[0..1] to I_PlantMaintenancePartner as _PlantMaintenancePartner on Equipment.MaintObjectInternalID = _PlantMaintenancePartner.MaintObjectInternalID

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 (42)

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
_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

{
 @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 != ' '