@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'Functional Location'
@Metadata.ignorePropagatedAnnotations: true
@VDM.viewType: #TRANSACTIONAL
@VDM.lifecycle.contract.type: #SAP_INTERNAL_API
@ObjectModel.usageType: {serviceQuality: #C, sizeCategory: #L, dataClass: #MASTER}
@ObjectModel.sapObjectNodeType.name: 'FunctionalLocation'
define root view entity R_FunctionalLocationTP
as select from I_FunctionalLocation
composition [0..*] of R_FunctionalLocationPartnerTP as _Partner
composition [1..1] of R_FunctionalLocationLongTextTP as _LongText
association [0..1] to I_FunctionalLocationLabel as _FunctionalLocationLabel on $projection.FunctionalLocation = _FunctionalLocationLabel.FunctionalLocation
association [0..1] to I_FunctionalLocationLabel as _SupFunctionalLocationLabel on $projection.SuperiorFunctionalLocation = _SupFunctionalLocationLabel.FunctionalLocation
composition [0..*] of R_FuncnlLocClfnClassTP as _Classification
composition [0..*] of R_FuncnlLocWrntyAssgmtTP as _Warranty
association [0..1] to I_FunctionalLocationStatus as _FuncnlLocStatus on $projection.FunctionalLocation = _FuncnlLocStatus.FunctionalLocation
association [0..1] to P_FuncnlLocHasEquipment as _FuncnlLocHasEquipment on $projection.FunctionalLocation = _FuncnlLocHasEquipment.FunctionalLocation
association [0..1] to P_FuncLocHasSubOrdinateFuncLoc as _FuncLocHasSubOrdinateFuncLoc on $projection.FunctionalLocation = _FuncLocHasSubOrdinateFuncLoc.FunctionalLocation
-- Extension, do not expose as association:
association [0..1] to E_FunctionalLocation as _FunctionalLocationExtension on _FunctionalLocationExtension.FunctionalLocation = $projection.FunctionalLocation
{
key cast(I_FunctionalLocation.FunctionalLocation as tplnr_unconverted preserving type) as FunctionalLocation,
_FunctionalLocationLabel.FunctionalLocationLabelName as FunctionalLocationLabelName,
//MDI_ODM
I_FunctionalLocation.FunctionalLocationOID,
I_FunctionalLocation._FunctionalLocationText[1:Language=$session.system_language].FunctionalLocationName,
I_FunctionalLocation.FuncLocationStructure,
I_FunctionalLocation.FunctionalLocationCategory,
cast(I_FunctionalLocation.SuperiorFunctionalLocation as tplnr_unconverted preserving type) as SuperiorFunctionalLocation,
_SupFunctionalLocationLabel.FunctionalLocationLabelName as SuperiorFuncnlLocLabelName,
I_FunctionalLocation.FuncnlLocPosInSuperiorTechObj, //New field 2208CE
//GENERAL DATA
I_FunctionalLocation.TechnicalObjectType,
I_FunctionalLocation.AuthorizationGroup,
@Semantics.quantity.unitOfMeasure: 'GrossWeightUnit'
I_FunctionalLocation.GrossWeight,
I_FunctionalLocation.GrossWeightUnit,
I_FunctionalLocation.OperationStartDate,
I_FunctionalLocation.InventoryNumber,
//REFERENCE DATA
@Semantics.amount.currencyCode: 'Currency'
I_FunctionalLocation.AcquisitionValue,
I_FunctionalLocation.Currency as Currency,
I_FunctionalLocation.AcquisitionDate,
//MANUFACTURER DATA
I_FunctionalLocation.AssetManufacturerName,
I_FunctionalLocation.ManufacturerPartNmbr,
I_FunctionalLocation.ManufacturerCountry,
I_FunctionalLocation.ManufacturerPartTypeName,
I_FunctionalLocation.ConstructionMonth,
I_FunctionalLocation.ConstructionYear,
I_FunctionalLocation.ManufacturerSerialNumber,
I_FunctionalLocation.FunctionalLocationEndOfUseDate,
//LOCATION DATA
I_FunctionalLocation._LocationAccountAssignment.MaintenancePlant,
I_FunctionalLocation._LocationAccountAssignment.AssetLocation,
I_FunctionalLocation._LocationAccountAssignment.AssetRoom,
I_FunctionalLocation._LocationAccountAssignment.PlantSection,
I_FunctionalLocation._LocationAccountAssignment._WorkCenter.WorkCenter,
I_FunctionalLocation._LocationAccountAssignment.WorkCenterInternalID,
I_FunctionalLocation._LocationAccountAssignment._WorkCenter.Plant as WorkCenterPlant,
I_FunctionalLocation._LocationAccountAssignment.ABCIndicator,
I_FunctionalLocation._LocationAccountAssignment.MaintObjectFreeDefinedAttrib,
//ADDRESS DATA
@Consumption: { hidden: true }
I_FunctionalLocation._LocationAccountAssignment.AddressID,
// I_FunctionalLocation._LocationAccountAssignment._Address.FormOfAddress, //new address fields 2108
I_FunctionalLocation._LocationAccountAssignment._Address2.FormOfAddress, //Added : 2302 CE - Consider fields from I_Address_2
// I_FunctionalLocation._LocationAccountAssignment._Address.BusinessPartnerName1,
I_FunctionalLocation._LocationAccountAssignment._Address2.OrganizationName1 as BusinessPartnerName1, //Added : 2302 CE - Consider fields from I_Address_2
// I_FunctionalLocation._LocationAccountAssignment._Address.BusinessPartnerName2, //new field 2108
I_FunctionalLocation._LocationAccountAssignment._Address2.OrganizationName2 as BusinessPartnerName2, //Added : 2302 CE - Consider fields from I_Address_2
// I_FunctionalLocation._LocationAccountAssignment._Address.CityName,
I_FunctionalLocation._LocationAccountAssignment._Address2.CityName, //Added : 2302 CE - Consider fields from I_Address_2
// I_FunctionalLocation._LocationAccountAssignment._Address.HouseNumber,
I_FunctionalLocation._LocationAccountAssignment._Address2.HouseNumber, //Added : 2302 CE - Consider fields from I_Address_2
// I_FunctionalLocation._LocationAccountAssignment._Address.HouseNumberSupplementText, //new fields 2108
I_FunctionalLocation._LocationAccountAssignment._Address2.HouseNumberSupplementText, //Added : 2302 CE - Consider fields from I_Address_2
// I_FunctionalLocation._LocationAccountAssignment._Address.Building, //new field 2108
I_FunctionalLocation._LocationAccountAssignment._Address2.Building, //Added : 2302 CE - Consider fields from I_Address_2
// I_FunctionalLocation._LocationAccountAssignment._Address.Floor, //new field 2108
I_FunctionalLocation._LocationAccountAssignment._Address2.Floor, //Added : 2302 CE - Consider fields from I_Address_2
// I_FunctionalLocation._LocationAccountAssignment._Address.RoomNumber, //new field 2108
I_FunctionalLocation._LocationAccountAssignment._Address2.RoomNumber, //Added : 2302 CE - Consider fields from I_Address_2
// I_FunctionalLocation._LocationAccountAssignment._Address.PostalCode,
I_FunctionalLocation._LocationAccountAssignment._Address2.PostalCode, //Added : 2302 CE - Consider fields from I_Address_2
// I_FunctionalLocation._LocationAccountAssignment._Address.StreetName,
I_FunctionalLocation._LocationAccountAssignment._Address2.StreetName, //Added : 2302 CE - Consider fields from I_Address_2
// I_FunctionalLocation._LocationAccountAssignment._Address.Region,
I_FunctionalLocation._LocationAccountAssignment._Address2.Region, //Added : 2302 CE - Consider fields from I_Address_2
// I_FunctionalLocation._LocationAccountAssignment._Address.Country,
I_FunctionalLocation._LocationAccountAssignment._Address2.Country, //Added : 2302 CE - Consider fields from I_Address_2
// I_FunctionalLocation._LocationAccountAssignment._Address.PhoneNumber,
// I_FunctionalLocation._LocationAccountAssignment._Address2._PhoneNumber.PhoneAreaCodeSubscriberNumber as PhoneNumber, //Added : 2302 CE - Consider fields from I_Address_2
I_FunctionalLocation._LocationAccountAssignment._PhoneNumber.PhoneAreaCodeSubscriberNumber as PhoneNumber, //Added : 2502 CE - Duplicate result issue
// I_FunctionalLocation._LocationAccountAssignment._Address.FaxNumber,
// I_FunctionalLocation._LocationAccountAssignment._Address2._FaxNumber.FaxAreaCodeSubscriberNumber as FaxNumber, //Added : 2302 CE - Consider fields from I_Address_2
I_FunctionalLocation._LocationAccountAssignment._FaxNumber.FaxAreaCodeSubscriberNumber as FaxNumber, //Added : 2502 CE - Duplicate result issue
//ACCOUNT ASSIGNMENT
I_FunctionalLocation._LocationAccountAssignment.CompanyCode as CompanyCode,
I_FunctionalLocation._LocationAccountAssignment.BusinessArea,
I_FunctionalLocation._LocationAccountAssignment.MasterFixedAsset,
I_FunctionalLocation._LocationAccountAssignment.FixedAsset,
I_FunctionalLocation._LocationAccountAssignment.CostCenter as CostCenter,
I_FunctionalLocation._LocationAccountAssignment.ControllingArea,
I_FunctionalLocation._LocationAccountAssignment._WBSElementBasicData.WBSElementExternalID,
I_FunctionalLocation._LocationAccountAssignment.SettlementOrder,
I_FunctionalLocation.ConstructionMaterial as ConstructionMaterial,
//RESPONSIBILITIES
I_FunctionalLocation.MaintenancePlannerGroup,
I_FunctionalLocation.MaintenancePlanningPlant,
cast(I_FunctionalLocation._WorkCenter.Plant as wergw preserving type ) as MainWorkCenterPlant,
cast(I_FunctionalLocation._WorkCenter.WorkCenter as gewrk preserving type) as MainWorkCenter,
I_FunctionalLocation.WorkCenterInternalID as MainWorkCenterInternalID,
I_FunctionalLocation.CatalogProfile as CatalogProfile,
I_FunctionalLocation.EquipmentInstallationIsAllowed,
I_FunctionalLocation.OnePieceOfEquipmentIsAllowed,
//SALES DATA
I_FunctionalLocation._LocationAccountAssignment.SalesOrganization,
I_FunctionalLocation._LocationAccountAssignment.DistributionChannel,
I_FunctionalLocation._LocationAccountAssignment.SalesOffice,
I_FunctionalLocation._LocationAccountAssignment.OrganizationDivision,
I_FunctionalLocation._LocationAccountAssignment.SalesGroup,
@Semantics.booleanIndicator: true
_FuncnlLocHasEquipment.FunctionalLocationHasEquipment,
@Semantics.booleanIndicator: true
_FuncLocHasSubOrdinateFuncLoc.FuncnlLocHasSubOrdinateFuncLoc,
@Semantics.systemDateTime.lastChangedAt: true
I_FunctionalLocation.LastChangeDateTime,
//STATUS
_FuncnlLocStatus.FuncnlLocIsMarkedForDeletion,
_FuncnlLocStatus.FuncnlLocIsDeleted,
_FuncnlLocStatus.FunctionalLocationIsActive,
// '' as FunctionalLocationIsActive,
_FuncnlLocStatus.FunctionalLocationIsCreated, //Added : 2308
_FuncnlLocStatus.FuncnlLocIsDeactivated,
//ADMIN DATA
@Semantics.user.createdBy: true
I_FunctionalLocation.CreatedByUser, //new admin field 2111
@Semantics.systemDate.createdAt : true
I_FunctionalLocation.CreationDate, //new admin field 2111
@Semantics.user.lastChangedBy: true
I_FunctionalLocation.LastChangedByUser, //new admin field 2111
_Partner,
_LongText,
_Classification,
_FunctionalLocationLabel,
_SupFunctionalLocationLabel,
_Warranty
};