CDS标准视图:设备信息 I_EquipmentData
- 视图名称:I_EquipmentData
- 视图类型:基础视图
- 视图代码:
点击查看代码
@EndUserText.label: 'Equipment Data'
@VDM.viewType: #COMPOSITE
@AbapCatalog.sqlViewName: 'IEQUIPMENTATTR'
@AbapCatalog.compiler.compareFilter: true
@ClientHandling.algorithm: #SESSION_VARIABLE
@ObjectModel.representativeKey: 'Equipment'
@AccessControl: {
authorizationCheck: #CHECK,
privilegedAssociations: ['_Location', '_Address', '_EquipmentHierarchyNode','_LOCATIONACCOUNTASSIGNMENT']
}
@Analytics: {
dataCategory: #DIMENSION,
dataExtraction: {
enabled: true,
delta.byElement: {
name: 'LastChangeDateTime'
}
}
}
@ObjectModel: {
usageType: {
dataClass: #MASTER,
serviceQuality: #C,
sizeCategory: #L
},
supportedCapabilities: [ #EXTRACTION_DATA_SOURCE ]
}
@Metadata: {
ignorePropagatedAnnotations,
allowExtensions
}
// A more comprehensive view for equipment data, created as a replacement for BW extractor 0EQUIPMENT_ATTR
define view I_EquipmentData
as select from I_EquipmentTimeSeg
inner join I_Equipment on I_Equipment.Equipment = I_EquipmentTimeSeg.Equipment
association [0..1] to I_WorkCenterBySemanticKey as _MainWorkCenterBySemanticKey on $projection.MainWorkCenter = _MainWorkCenterBySemanticKey.WorkCenter
and $projection.MainWorkCenterPlant = _MainWorkCenterBySemanticKey.Plant
association [0..1] to I_WorkCenterBySemanticKey as _WorkCenterBySemanticKey on $projection.workcenter = _WorkCenterBySemanticKey.WorkCenter
and $projection.WorkCenterPlant = _WorkCenterBySemanticKey.Plant
association [0..1] to I_WorkCenter as _WorkCenter on $projection.WorkCenterInternalID = _WorkCenter.WorkCenterInternalID
and _WorkCenter.WorkCenterTypeCode = 'A'
association [0..1] to I_Plant as _WorkCenterPlant on $projection.WorkCenterPlant = _WorkCenterPlant.Plant
association [0..1] to I_FunctionalLocationData as _FunctionalLocation on $projection.functionallocation = _FunctionalLocation.FunctionalLocation
association [0..1] to I_Indicator as _EquipmentIsMarkedForDeletion on $projection.EquipmentIsMarkedForDeletion = _EquipmentIsMarkedForDeletion.IndicatorValue
association [0..*] to I_EquipmentHierarchyNode as _EquipmentHierarchyNode on $projection.Equipment = _EquipmentHierarchyNode.Equipment
association [0..1] to I_WBSElementBasicData as _WBSElementBasicData on $projection.WBSElementInternalID = _WBSElementBasicData.WBSElementInternalID
association [0..*] to I_EquipmentText as _EquipmentText on $projection.Equipment = _EquipmentText.Equipment
-- Extensions, do not expose as association:
association [0..1] to E_Equipment as _EquipmentExtension on _EquipmentExtension.Equipment = $projection.Equipment
{
@ObjectModel.text.association: '_EquipmentText'
@ObjectModel.hierarchy.association: '_EquipmentHierarchyNode'
key I_EquipmentTimeSeg.Equipment,
@Semantics.businessDate.to: true
key I_EquipmentTimeSeg.ValidityEndDate,
I_EquipmentTimeSeg.EquipUsagePeriodSequenceNumber,
/* Fields, as they appear in InfoObject 0EQUIPMENT */
@ObjectModel.foreignKey.association: '_ABCIndicator'
I_EquipmentTimeSeg._LocationAccountAssignment.ABCIndicator,
@Semantics.amount.currencyCode: 'Currency'
I_Equipment.AcquisitionValue,
@ObjectModel.foreignKey.association: '_Address'
I_EquipmentTimeSeg._LocationAccountAssignment.AddressID,
@ObjectModel.foreignKey.association: '_MasterFixedAsset'
I_EquipmentTimeSeg._LocationAccountAssignment.MasterFixedAsset,
@ObjectModel.foreignKey.association: '_CompanyCode'
I_EquipmentTimeSeg._LocationAccountAssignment.CompanyCode,
@ObjectModel.foreignKey.association: '_CostCenter'
I_EquipmentTimeSeg._LocationAccountAssignment.CostCenter,
@ObjectModel.foreignKey.association: '_ControllingArea'
I_EquipmentTimeSeg._LocationAccountAssignment.ControllingArea,
@Semantics.currencyCode:true
I_Equipment.Currency,
I_Equipment.OperationStartDate,
@ObjectModel.foreignKey.association: '_TechnicalObjectType'
I_Equipment.TechnicalObjectType,
@ObjectModel.foreignKey.association: '_FunctionalLocation'
I_EquipmentTimeSeg._LocationAccountAssignment.FunctionalLocation,
I_Equipment.InventoryNumber,
@ObjectModel.foreignKey.association: '_Location'
I_EquipmentTimeSeg._LocationAccountAssignment.AssetLocation,
@ObjectModel.foreignKey.association: '_MaintenancePlant'
I_EquipmentTimeSeg._LocationAccountAssignment.MaintenancePlant,
I_EquipmentTimeSeg._LocationAccountAssignment.AssetRoom,
@ObjectModel.foreignKey.association: '_Material'
I_Equipment.Material,
@ObjectModel.foreignKey.association: '_MaintenancePlanningPlant'
I_EquipmentTimeSeg.MaintenancePlanningPlant,
@ObjectModel.foreignKey.association: '_PlantSection'
I_EquipmentTimeSeg._LocationAccountAssignment.PlantSection,
I_EquipmentTimeSeg.MaintenancePlannerGroup,
cast( I_EquipmentTimeSeg._LocationAccountAssignment._WBSElementBasicData.WBSElement as ps_posid preserving type ) as WBSElement,
@ObjectModel.foreignKey.association: '_EquipmentCategory'
I_Equipment.EquipmentCategory,
@Semantics.systemDate.createdAt: true
I_Equipment.CreationDate,
@ObjectModel.foreignKey.association: '_Plant'
I_Equipment.Plant,
@ObjectModel.foreignKey.association: '_MainWorkCenter'
I_EquipmentTimeSeg.WorkCenterInternalID as MainWorkCenterInternalID,
@ObjectModel.foreignKey.association: '_MainWorkCenterBySemanticKey'
cast( I_EquipmentTimeSeg._WorkCenter.WorkCenter as gewrk preserving type ) as MainWorkCenter,
@ObjectModel.foreignKey.association: '_MainWorkCenterPlant'
cast( I_EquipmentTimeSeg._WorkCenter.Plant as wergw preserving type ) as MainWorkCenterPlant,
@ObjectModel.foreignKey.association: '_SettlementOrder'
I_EquipmentTimeSeg._LocationAccountAssignment.SettlementOrder,
@ObjectModel.foreignKey.association: '_WorkCenter'
I_EquipmentTimeSeg._LocationAccountAssignment.WorkCenterInternalID,
@ObjectModel.foreignKey.association: '_WorkCenterBySemanticKey'
I_EquipmentTimeSeg._LocationAccountAssignment._WorkCenter.WorkCenter,
@ObjectModel.foreignKey.association: '_WorkCenterPlant'
I_EquipmentTimeSeg._LocationAccountAssignment._WorkCenter.Plant as WorkCenterPlant,
/* Additional fields */
/* If record is latest record (today's), then the timestamp comes from equipment.
This is because timestamp on equipment catches changes done to EQUI AND EQUZ. Example: AcquisitionValue changed
If record is an old record (i.e. its validity end date is not in the future), then that time segments timestamp is used.
This will also prevent any later changes of EQUI to be detected by ODP extractor. However this was discussed to be intended. */
@Semantics.systemDateTime.lastChangedAt: true
case when I_EquipmentTimeSeg.ValidityEndDate = '99991231' then I_Equipment.LastChangeDateTime
else I_EquipmentTimeSeg.LastChangeDateTime end as LastChangeDateTime,
@ObjectModel.foreignKey.association: '_EquipmentIsMarkedForDeletion'
--@Semantics.booleanIndicator: true
cast( case when _Status[ StatusCode = 'I0076' and StatusIsInactive = '' ].StatusCode is not null then 'X' else ' ' end as eam_is_deleted preserving type ) as EquipmentIsMarkedForDeletion,
//I_EquipmentTimeSeg
I_EquipmentTimeSeg.NextEquipUsagePeriodSqncNmbr,
I_EquipmentTimeSeg.MaintObjectLocAcctAssgmtNmbr,
@ObjectModel.foreignKey.association: '_WorkCenterType'
I_EquipmentTimeSeg.WorkCenterTypeCode,
I_EquipmentTimeSeg.CatalogProfile,
I_EquipmentTimeSeg.SuperordinateEquipment,
I_EquipmentTimeSeg.TechnicalObjectSortCode,
@ObjectModel.foreignKey.association: '_ConstructionMaterial'
I_EquipmentTimeSeg.ConstructionMaterial,
@Semantics.businessDate.from: true
I_EquipmentTimeSeg.ValidityStartDate,
I_EquipmentTimeSeg.ValidityEndTime,
I_EquipmentTimeSeg.ManufacturerPartNmbr,
//I_Equipment
@ObjectModel.foreignKey.association: '_Division'
I_Equipment.Division,
@ObjectModel.foreignKey.association: '_StorageLocation'
I_Equipment.StorageLocation,
I_Equipment.AssetManufacturerName,
I_Equipment.ManufacturerPartTypeName,
@Semantics.address.country: true
@ObjectModel.foreignKey.association: '_ManufacturerCountry'
I_Equipment.ManufacturerCountry,
I_Equipment.ConstructionYear,
I_Equipment.ConstructionMonth,
I_Equipment.AcquisitionDate,
I_Equipment.MaintObjectInternalID,
I_Equipment.SerialNumber,
@ObjectModel.foreignKey.association: '_Customer'
I_Equipment.Customer,
I_Equipment.AuthorizationGroup,
@Semantics.quantity.unitOfMeasure: 'GrossWeightUnit'
I_Equipment.GrossWeight,
@ObjectModel.foreignKey.association: '_GrossWeightUnit'
@Semantics.unitOfMeasure: true
I_Equipment.GrossWeightUnit,
I_Equipment.SizeOrDimensionText,
I_Equipment.Batch,
@ObjectModel.foreignKey.association: '_Supplier'
I_Equipment.Supplier,
//I_LocationAccountAssignment
_LocationAccountAssignment.MaintObjectFreeDefinedAttrib,
_LocationAccountAssignment.BusinessArea,
@ObjectModel.foreignKey.association: '_WBSElementBasicData'
cast( I_EquipmentTimeSeg._LocationAccountAssignment.WBSElementInternalID as ps_psp_pnr preserving type ) as WBSElementInternalID,
I_EquipmentTimeSeg._LocationAccountAssignment.FixedAsset,
//I_LinearAssetManagementData
cast( cast( I_Equipment._LinearAssetManagementData.LinearDataStartPoint as abap.dec(11, 3) ) as eaml_start_point ) as LinearDataStartPoint,
cast( cast( I_Equipment._LinearAssetManagementData.LinearDataEndPoint as abap.dec(11, 3) ) as eaml_end_point ) as LinearDataEndPoint,
@Semantics.quantity.unitOfMeasure: 'LinearDataUnitOfMeasure'
I_Equipment._LinearAssetManagementData.LinearDataLength,
@Semantics.unitOfMeasure: true
I_Equipment._LinearAssetManagementData.LinearDataUnitOfMeasure,
/* Associations */
//I_EquipmentTimeSeg
I_EquipmentTimeSeg._WorkCenter as _MainWorkCenter,
I_EquipmentTimeSeg._Equipment,
I_EquipmentTimeSeg._ConstructionMaterial,
I_EquipmentTimeSeg._LocationAccountAssignment,
I_EquipmentTimeSeg._MaintenancePlanningPlant,
I_EquipmentTimeSeg._WorkCenterType,
I_EquipmentTimeSeg._WorkCenter._Plant as _MainWorkCenterPlant,
//I_Equipment
I_Equipment._ManufacturerCountry,
I_Equipment._StorageLocation,
I_Equipment._Division,
I_Equipment._EquipmentCategory,
I_Equipment._Material,
I_Equipment._Plant,
I_Equipment._Currency,
I_Equipment._TechnicalObjectType,
I_Equipment._GrossWeightUnit,
I_Equipment._Customer,
I_Equipment._Supplier,
//I_LocationAccountAssignment
I_EquipmentTimeSeg._LocationAccountAssignment._ABCIndicator,
I_EquipmentTimeSeg._LocationAccountAssignment._Address,
I_EquipmentTimeSeg._LocationAccountAssignment._CompanyCode,
I_EquipmentTimeSeg._LocationAccountAssignment._ControllingArea,
I_EquipmentTimeSeg._LocationAccountAssignment._CostCenter,
I_EquipmentTimeSeg._LocationAccountAssignment._Location,
I_EquipmentTimeSeg._LocationAccountAssignment._MaintenancePlant,
I_EquipmentTimeSeg._LocationAccountAssignment._MasterFixedAsset,
I_EquipmentTimeSeg._LocationAccountAssignment._PlantSection,
I_EquipmentTimeSeg._LocationAccountAssignment._SettlementOrder,
_WBSElementBasicData,
_WorkCenterBySemanticKey,
_WorkCenterPlant,
_WorkCenter,
_MainWorkCenterBySemanticKey,
_FunctionalLocation,
_EquipmentHierarchyNode,
_EquipmentIsMarkedForDeletion,
_EquipmentText
}
where
I_EquipmentTimeSeg.EquipUsagePeriodSequenceNumber = '001'
事务代码:
IE03/IH08
设备主数据的位置、组织结构、结构视图信息视图结构:
| 字段名称 | 设备名称 |
|---|---|
| 设备 | EQUIPMENT |
| 有效期至 | VALIDITYENDDATE |
| 连续号码 | EQUIPUSAGEPERIODSEQUENCENUMBER |
| ABC 标识 | ABCINDICATOR |
| 购置价值 | ACQUISITIONVALUE |
| 地址编号 | ADDRESSID |
| 资产 | MASTERFIXEDASSET |
| 公司代码 | COMPANYCODE |
| 成本中心 | COSTCENTER |
| 成本控制范围 | CONTROLLINGAREA |
| 货币 | CURRENCY |
| 开始日期 | OPERATIONSTARTDATE |
| 对象类型 | TECHNICALOBJECTTYPE |
| 功能位置 | FUNCTIONALLOCATION |
| 库存号 | INVENTORYNUMBER |
| 位置 | ASSETLOCATION |
| 维护工厂 | MAINTENANCEPLANT |
| 房间 | ASSETROOM |
| 物料 | MATERIAL |
| 计划工厂 | MAINTENANCEPLANNINGPLANT |
| 厂区 | PLANTSECTION |
| 计划人员组 | MAINTENANCEPLANNERGROUP |
| WBS 要素 | WBSELEMENT |
| 设备种类 | EQUIPMENTCATEGORY |
| 创建日期 | CREATIONDATE |
| 工厂 | PLANT |
| 工作中心 | MAINWORKCENTERINTERNALID |
| 主工作中心 | MAINWORKCENTER |
| 工厂工作中心 | MAINWORKCENTERPLANT |
| 结算订单 | SETTLEMENTORDER |
| PP工作中心 | WORKCENTERINTERNALID |
| 工作中心 | WORKCENTER |
| 工厂 | WORKCENTERPLANT |
| 时戳 | LASTCHANGEDATETIME |
| 已删除 | EQUIPMENTISMARKEDFORDELETION |
| 下一个使用期间 | NEXTEQUIPUSAGEPERIODSQNCNMBR |
| 位置/科目分配 | MAINTOBJECTLOCACCTASSGMTNMBR |
| 对象类型 | WORKCENTERTYPECODE |
| 类别参数文件 | CATALOGPROFILE |
| 上级设备 | SUPERORDINATEEQUIPMENT |
| 技术标识号 | TECHNICALOBJECTSORTCODE |
| 构造类型 | CONSTRUCTIONMATERIAL |
| 有效期自 | VALIDITYSTARTDATE |
| 时间 | VALIDITYENDTIME |
| 制造商零件号 | MANUFACTURERPARTNMBR |
| 产品组 | DIVISION |
| 地点 | STORAGELOCATION |
| 制造商 | ASSETMANUFACTURERNAME |
| 型号 | MANUFACTURERPARTTYPENAME |
| 制造国家/地区 | MANUFACTURERCOUNTRY |
| 制造年份 | CONSTRUCTIONYEAR |
| 制造月份 | CONSTRUCTIONMONTH |
| 购置日期 | ACQUISITIONDATE |
| 对象编号 | MAINTOBJECTINTERNALID |
| 序列号 | SERIALNUMBER |
| 当前客户 | CUSTOMER |
| 授权组 | AUTHORIZATIONGROUP |
| 重量 | GROSSWEIGHT |
| 重量单位 | GROSSWEIGHTUNIT |
| 大小/尺寸 | SIZEORDIMENSIONTEXT |
| 批次 | BATCH |
| 供应商 | SUPPLIER |
| 分类字段 | MAINTOBJECTFREEDEFINEDATTRIB |
| 业务范围 | BUSINESSAREA |
| WBS 要素 | WBSELEMENTINTERNALID |
| 子编号 | FIXEDASSET |
| 起点 | LINEARDATASTARTPOINT |
| 终点 | LINEARDATAENDPOINT |
| LINEARDATALENGTH | |
| 计量单位 | LINEARDATAUNITOFMEASURE |

CDS标准视图:设备信息 I_EquipmentData的更多相关文章
- Atitit.获取主板与bios序列号获取硬件设备信息 Wmi wmic 的作用
Atitit.获取主板与bios序列号获取硬件设备信息 Wmi wmic 的作用 1 获取硬件核心基础核心基础Wmi1 2 其他资料2 3 Wmic WMI 命令行接口2 4 Atitit.获取主板 ...
- 【iOS开发系列】UIDevice设备信息
[1] 推断是否是横向屏: BOOL b=UIDeviceOrientationIsLandscape([UIDevice currentDevice].orientation); 获取设备uniqu ...
- EasyNVR网页摄像机无插件H5、谷歌Chrome直播方案-Onvif(一)使用Onvif协议进行设备发现以及指定设备信息探测
背景分析 众所周知,EasyNVR不拘泥.不受限于摄像机的品牌厂商及其配套平台,只要是网络监控摄像机IPC.硬盘录像机NVR.且设备支持标准的RTSP/Onvif协议,都可以接入实时视频流进入Easy ...
- Seeker:一款可获取高精度地理和设备信息的工具分析
Seeker是一款可以获取高精度地理和设备信息的工具.其利用HTML5,Javascript,JQuery和PHP来抓取设备信息,以及Geolocation接口实现对设备高精度地理位置的获取. See ...
- uni-app开发经验分享十二: Android平台应用启动时读写手机存储、访问设备信息(如IMEI)等权限策略及提示信息
Android平台从6.0(API23)开始系统对权限的管理更加严格,所有涉及敏感权限都需要用户授权允许才能获取.因此一些应用基础业务逻辑需要的权限会在应用启动时申请,并引导用户允许. 读写手机存储权 ...
- 整理UWP中网络和设备信息获取的帮助类,需要的拿走。
网络(运营商信息,网络类型) public static class NetworkInfo { /// <summary> /// 网络是否可用 /// </summary> ...
- C#:基于WMI查询USB设备信息 及 Android设备厂商VID列表
/* ---------------------------------------------------------- 文件名称:WMIUsbQuery.cs 作者:秦建辉 MSN:splashc ...
- win7下用python3.3获取cable modem的设备信息
毕业一年多了,一直做cable modem的测试,总是觉得在国内这一行的人才很少,想找个师傅真的很不容易. 苦闷了许久之后,终于决定,自己去写点东西,万一就找到同行了呢? 下面就是本小姐写的第一篇博客 ...
- Android 获取设备信息 异常
/**获取设备信息 * @param c * @return */ public static void setDeviceInfo(Context c,RequestParams params){ ...
- Windows下USB磁盘开发系列三:枚举系统中U盘、并获取其设备信息
前面我们介绍了枚举系统中的U盘盘符(见<Windows下USB磁盘开发系列一:枚举系统中U盘的盘符>).以及获取USB设备的信息(见<Windows下USB磁盘开发系列二:枚举系统中 ...
随机推荐
- 深度学习系列之1----直观解释Transformer
Abstract 这个系列主要用来记录我自己这种的AI小白的学习之路,通过将所学所知总结下来,记录下来.之前总喜欢记录在笔记本上,或者ipad上,或者PC端的Typora上,但总是很难回头检索到一些系 ...
- spring生态体系
spring boot使用默认开发配置来实现快速开发spring xd用来简化大数据应用开发spring cloud为分布式系统开发提供工具集spring data对主流的关系型和nosql数据库的支 ...
- TypeError: __init__() got an unexpected keyword argument 'XXXXXXXX'
解决方法:安装包的版本兼容问题,更新一下安装包的版本(如果在别的机器不报错,那就把不报错的这台机器上的安装包pip freeze > requirements.txt 下来,在报错的机器上安装一 ...
- vue 下载文件并且重命名
<el-button type="primary" @click="xz(scope.row)" size="small">下载 ...
- Go语言切片(Slice)的一些有趣特性
切片类似数组的引用.更改底层数组中的元素会修改切片的元素.更改切片的元素同样会修改其底层数组中的元素,和它共享底层数组的切片都会观测到这些修改. 点击查看代码 package main import ...
- 鸿蒙NEXT开发案例:转盘
[1]引言(完整代码在最后面) 在鸿蒙NEXT系统中,开发一个有趣且实用的转盘应用不仅可以提升用户体验,还能展示鸿蒙系统的强大功能.本文将详细介绍如何使用鸿蒙NEXT系统开发一个转盘应用,涵盖从组件定 ...
- vivo 企业云盘服务端实现简介
作者:来自 vivo 互联网存储团队- Cheng Zhi 本文将介绍企业云盘的基本功能以及服务端实现. 一.背景 vivo 企业云盘是一个企业级文件数据管理服务,解决办公数据的存储.共享.审计等文件 ...
- 使用JAVA建立稳定的多线程服务器
侯光敏 (wearebug@etang.com), 简介: 本文详细的介绍了使用Java语言建立一套多线程服务器的过程,该服务器使用对象传递消息,在线程中使用队列机制,使服务器的性能大大提高了.这套服 ...
- .NET9 - Swagger平替Scalar详解(四)
书接上回,上一章介绍了Swagger代替品Scalar,在使用中遇到不少问题,今天单独分享一下之前Swagger中常用的功能如何在Scalar中使用. 下面我们将围绕文档版本说明.接口分类.接口描述. ...
- 基于python搭建FTP服务
使用python搭建FTP服务非常容易,且非常稳定,更重要的是可以实现一些精细化的控制,例如精细的访问权限配置,详细的日志记录等工作 这里是使用了pyftpdlib模块 1. 安装 pip insta ...