☰
SAP + AI 第3节 PS3大对象一些典型注解
2026/9/25 18:56:21 网站建设 项目流程

SAP + AI 第3节 PS3大对象一些典型注解

  • PS模块三大CDS对象进阶知识点(逐项讲解·源文件对照版)
    • 知识点1:WBS层级结构机制
    • 知识点2:状态管理机制
    • 知识点3:延期/逾期天数计算
    • 知识点4:货币、单位、数量、日历、文本等通用注解
    • 知识点5:外键关联注解说明
    • 知识点6:辅助视图解耦模式
    • 知识点7:多表JOIN与字段来源
    • 知识点8:CASE表达式与投影逻辑
    • 知识点9:扩展视图(E_)机制
    • 知识点10:语义键与代表键
    • 知识点11:权限控制注解
    • 知识点12:文本关联与语言处理
    • 知识点13:日期有效性处理
    • 知识点14:单位/货币语义关联
    • 知识点15:聚合控制注解
    • 知识点16:生命周期契约注解
    • 知识点17:虚拟元素与计算字段
    • 知识点18:会话变量使用
    • 知识点19:UNION ALL分支差异化处理
    • 知识点20:层级节点关联与UI树控件
    • 知识点总结表(含视图链路)

哎,你说AI出来以后吧,再让人一点点手戳文章,没人搓了。还会古法搓文档的,真要绝种了。

PS模块三大CDS对象进阶知识点(逐项讲解·源文件对照版)

每个知识点标注完整视图调用链路(消费层→基础层→DB表),并附用法总结。


知识点1:WBS层级结构机制

用法总结:让WBS在Fiori中呈现树形结构,支持展开/折叠。

视图链路:
C_WBSElementBasicInfo->I_WBSElementWithVersion->P_WBSElementWithVersion->I_WBSElementVersion->vsprps_cn->prps->vsprte_cn
->I_WBSElement->prps->prte

原文位置:

  • I_WBSElement:@ObjectModel.hierarchy.association: '_WBSElementHierarchyNode'/association [0..*] to I_WBSElementHierarchyNode as _WBSElementHierarchyNode on $projection.WBSElement = _WBSElementHierarchyNode.WBSElement/prps.stufe as WBSElementHierarchyLevel
  • C_WBSElementBasicInfo:WBSElement.WBSElementHierarchyLevel

说明:层级能力定义在基础层I_WBSElement,消费层仅暴露平铺字段,不携带树形导航。


知识点2:状态管理机制

用法总结:读取对象系统/用户状态,前端用状态驱动按钮和流程。

视图链路:

  • 项目定义:C_ProjectBasicInfo->I_ProjectWithVersion->P_ProjectWithVersion->I_ProjectVersion->vsproj_cn/I_Project->proj
  • WBS:C_WBSElementBasicInfo->I_WBSElementWithVersion->P_WBSElementWithVersion->I_WBSElementVersion->vsprps_cn/prps/vsprte_cn/I_WBSElement->prps/prte
  • 网络活动:C_NetworkActivityBasicInfo->I_NetworkActivityWithVersion->P_NetworkActivityWithVersion->I_NetworkActivityVersion->vsafvc_cn/vsafvv_cn/vsafvu_cn/vsafko_cn/vsaufk_cn/I_NetworkActivity->afvc/afvv/afvu/afko/aufk

原文位置:

  • I_ProjectWithVersion:association [0..1] to I_StsObjConcatActiveStsILL as _StsObjConcatActiveStsILL on _StsObjConcatActiveStsILL.StatusObject = $projection.ProjectObject+ CASE处理
  • I_WBSElementWithVersion:同上,用WBSElementObject
  • I_NetworkActivity:_ActivityConfirmed(StatusCode='I0009')、_ActivityPartiallyConfirmed(StatusCode='I0010')
  • I_NetworkActivityWithVersion:_ConcatenatedStsObjActiveSts

说明:状态底表是JEST/JSTO,通过函数封装后关联。网络活动按状态码区分已确认/部分确认。


知识点3:延期/逾期天数计算

用法总结:用当前日期与计划日期比对,算出进度预警天数。

视图链路:

  • WBS:C_WBSElementBasicInfo->I_WBSElementWithVersion->P_WBSElementWithVersion->I_WBSElementVersion/I_WBSElement->prps/prte
  • 网络活动:C_NetworkActivityBasicInfo->I_NetworkActivityWithVersion->P_NetworkActivityWithVersion->I_NetworkActivityVersion/I_NetworkActivity->afvc/afvv

原文位置:

  • P_WBSElementWithVersion:DATS_DAYS_BETWEEN(...)动态计算 / 版本分支cast(0 as int4)
  • P_NetworkActivityWithVersion:dats_days_between(...)动态计算 / 版本分支cast(0 as int4)

说明:运营分支实时计算,版本分支硬编码0,保证快照稳定。


知识点4:货币、单位、数量、日历、文本等通用注解

用法总结:给字段加业务语义,OData/Fiori自动格式化显示。

视图链路:

  • 网络活动:C_NetworkActivityBasicInfo->I_NetworkActivityWithVersion->P_NetworkActivityWithVersion->I_NetworkActivityVersion/I_NetworkActivity->afvc/afvv/afvu/afko/aufk
  • 项目定义:C_ProjectBasicInfo->I_ProjectWithVersion->P_ProjectWithVersion->I_ProjectVersion/I_Project->proj

原文位置:

  • I_NetworkActivity:@Semantics.currencyCode: true/@Semantics.unitOfMeasure: true/@Semantics.quantity.unitOfMeasure/@Semantics.businessDate.from/to
  • I_Project:@Semantics.calendar.dayOfMonth: true/@Semantics.text: true

说明:注解让OData元数据自动生成语义信息,前端免手工格式化。


知识点5:外键关联注解说明

用法总结:声明字段是外键,框架生成导航属性供OData使用。

视图链路:

  • I_ProjectVersion->vsproj_cn
  • I_WBSElementVersion->vsprps_cn/prps/vsprte_cn
  • I_NetworkActivity->afvc/afvv/afvu/afko/aufk

原文位置:

  • I_ProjectVersion:@ObjectModel.foreignKey.association: '_ProjectByInternalKey'/key vsproj_cn.pspnr as ProjectInternalID
  • I_WBSElementVersion:@ObjectModel.foreignKey.association: '_WBSElement'/key cast( vsprps_cn.posid as ps_posid_edit ) as WBSElement
  • I_NetworkActivity:@ObjectModel.foreignKey.association: '_ProjectNetwork'/key cast ( afko.aufnr as ps_s4_aufnr ) as ProjectNetwork

说明:带版本视图信息不全,通过引用不带版本的辅助视图补全后再UNION。


知识点6:辅助视图解耦模式

用法总结:用主键为内部ID的辅助视图解决关联目标主键不匹配。

视图链路:

  • I_WBSElement->prps/prte
  • I_Project->proj

原文位置:

  • I_WBSElement:association [1..1] to I_ProjectByInternalKey as _Project on $projection.ProjectInternalID = _Project.ProjectInternalID
  • I_Project:association [1..*] to I_WBSElement as _WBSElement on $projection.ProjectInternalID = _WBSElement.ProjectInternalID

说明:WBS只有内部ID,项目主键是外部编号,SAP建辅助视图I_ProjectByInternalKey解决。


知识点7:多表JOIN与字段来源

用法总结:网络活动数据分散在多张表,用JOIN整合成宽表视图。

视图链路:

  • I_NetworkActivity->afvc/afvv/afvu/afko/aufk/t430
  • I_NetworkActivityVersion->vsafvc_cn/vsafvv_cn/vsafvu_cn/vsafko_cn/vsaufk_cn/t430

原文位置:

  • I_NetworkActivity:from afvc left outer join afvv ... inner join aufk on aufk.autyp='20' inner join t430 on t430.steus=afvc.steus
  • I_NetworkActivityVersion:from vsafvc_cn left outer join vsafvv_cn ... inner join vsaufk_cn ... inner join t430

说明:AFVC主表,AFVV/AFVU/AFKO左连接,AUFK/T430内连接过滤有效数据。


知识点8:CASE表达式与投影逻辑

用法总结:根据活动是否挂WBS,取不同的项目/WBS字段。

视图链路:

  • I_NetworkActivity->afvc/afvv/afvu/afko/aufk/t430
  • I_NetworkActivityVersion->vsafvc_cn/vsafvv_cn/vsafvu_cn/vsafko_cn/vsaufk_cn/t430

原文位置:

  • I_NetworkActivity:case when afvc.projn = '00000000' then _Project.Project else _WBSElement._Project.Project end as Project
  • I_NetworkActivityVersion:case when vsafvc_cn.projn = '00000000' then _Project.Project else _WBSElement._Project.Project end as Project

说明:projn='00000000'表示活动不挂WBS,直接挂项目。_WBSElement._Project是多级关联导航。


知识点9:扩展视图(E_)机制

用法总结:SAP预留的空壳视图,客户通过扩展视图加自定义字段。

视图链路:

  • 项目定义:C_ProjectBasicInfo->I_ProjectWithVersion->P_ProjectWithVersion->I_ProjectVersion/I_Project->proj
  • WBS:C_WBSElementBasicInfo->I_WBSElementWithVersion->P_WBSElementWithVersion->I_WBSElementVersion/I_WBSElement->prps
  • 网络活动:C_NetworkActivityBasicInfo->I_NetworkActivityWithVersion->P_NetworkActivityWithVersion->I_NetworkActivityVersion/I_NetworkActivity->afvc

原文位置:

  • I_Project:@Metadata.allowExtensions:true/association [1..1] to E_Project as _Extension on proj.pspid = _Extension.Project
  • I_ProjectWithVersion:_Extension(运营)/_VersionExtension(版本)
  • I_WBSElement:association [1..1] to E_WBSElement as _Extension on prps.posid = _Extension.WBSElement
  • I_NetworkActivityWithVersion:_Extension用内部编号关联

说明:SAP标准视图加字段的官方入口,升级不冲突,通过_Extension自动向上传递。


知识点10:语义键与代表键

用法总结:语义键给UI显示用,代表键给外键关联用。

视图链路:

  • 项目定义:C_ProjectBasicInfo->I_ProjectWithVersion/I_Project->proj
  • WBS:C_WBSElementBasicInfo->I_WBSElementWithVersion/I_WBSElement->prps
  • 网络活动:C_NetworkActivityBasicInfo->I_NetworkActivityWithVersion/I_NetworkActivity->afvc

原文位置:

  • C_ProjectBasicInfo:@ObjectModel.semanticKey: [ 'Project', 'Version' ]
  • I_Project:@ObjectModel.representativeKey: 'Project'
  • C_WBSElementBasicInfo:@ObjectModel.semanticKey: [ 'WBSElement','Version']
  • I_WBSElement:@ObjectModel.representativeKey: 'WBSElement'
  • C_NetworkActivityBasicInfo:@ObjectModel.semanticKey: ['ProjectNetwork', 'NetworkActivity']
  • I_NetworkActivity:@ObjectModel.representativeKey: 'NetworkActivity'

说明:语义键多字段用于UI粗体显示,代表键单字段用于外键关联目标。


知识点11:权限控制注解

用法总结:声明视图的权限检查行为和特权关联。

视图链路:

  • 项目定义:C_ProjectBasicInfo->I_ProjectWithVersion/I_ProjectVersion->vsproj_cn
  • WBS:C_WBSElementBasicInfo->I_WBSElementWithVersion/I_WBSElement->prps
  • 网络活动:C_NetworkActivityBasicInfo->I_NetworkActivityWithVersion/I_NetworkActivity->afvc

原文位置:

  • I_ProjectWithVersion:#NOT_REQUIRED/privilegedAssociations: ['_Extension','_VersionExtension']/#BLOCKED_DATA_EXCLUDED
  • I_ProjectVersion:#CHECK/#REQUIRED
  • I_WBSElementWithVersion:#CHECK/privilegedAssociations
  • I_WBSElement:privilegedAssociations: ['_WBSElementHierarchyNode']/#REQUIRED
  • I_NetworkActivity:privilegedAssociations: ['_MRPController']

说明:privilegedAssociations让扩展/层级关联继承主视图权限,避免重复检查。


知识点12:文本关联与语言处理

用法总结:按登录语言取文本字段,多语言环境必备。

视图链路:

  • C_ProjectBasicInfo->I_ProjectWithVersion->P_ProjectWithVersion->I_ProjectVersion/I_Project
  • C_WBSElementBasicInfo->I_WBSElementWithVersion->P_WBSElementWithVersion->I_WBSElementVersion/I_WBSElement
  • C_NetworkActivityBasicInfo->I_NetworkActivityWithVersion->P_NetworkActivityWithVersion->I_NetworkActivityVersion/I_NetworkActivity

原文位置:

  • C_ProjectBasicInfo:cast( I_ProjectWithVersion._NetworkProfile._Text[1: Language = $session.system_language ].NetworkProfileName ...)
  • C_WBSElementBasicInfo:cast( WBSElement._ProjectType._Text[1: Language = $session.system_language ].ProjectTypeName ...)
  • C_NetworkActivityBasicInfo:cast ( _NetworkActivity._CostElementOnChartOfAccounts._Text[1:Language = $session.system_language].CostElementName ...)
  • I_NetworkActivityWithVersion:cast ( _ProfitCenter._Text[1:Language = $session.system_language].ProfitCenterName ...)

说明:文本关联只在组合层/消费层过滤语言,基础层保持中立。


知识点13:日期有效性处理

用法总结:用dats_is_valid检查日期,避免无效日期显示异常。

视图链路:

  • I_WBSElementVersion->vsprps_cn/prps/vsprte_cn
  • I_WBSElement->prps/prte
  • I_NetworkActivity->afvc/afvv/afvu/afko/aufk

原文位置:

  • I_WBSElementVersion/I_WBSElement:cast ( case dats_is_valid( prte.pstrt ) when 0 then '00000000' else prte.pstrt end as ps_s4_pstrt preserving type ) as BasicStartDate

说明:PRPS/PRTE日期字段可能是初始值,CASE包装保证输出统一。


知识点14:单位/货币语义关联

用法总结:数量和金额绑定单位/货币,前端自动格式化。

视图链路:

  • I_NetworkActivity->afvc/afvv/afvu/afko/aufk

原文位置:

  • I_NetworkActivity:@Semantics.unitOfMeasure: true/@Semantics.quantity.unitOfMeasure: 'NetworkActivityQuantityUnit'/@Semantics.currencyCode: true

说明:OData自动生成sap:semantics,前端显示100 PC而非100。


知识点15:聚合控制注解

用法总结:定义字段在分析场景中的默认聚合行为。

视图链路:

  • I_NetworkActivity->afvc/afvv/afvu/afko/aufk
  • I_WBSElementVersion->vsprps_cn/prps/vsprte_cn

原文位置:

  • I_NetworkActivity:@DefaultAggregation: #NONE/@DefaultAggregation: #SUM
  • I_WBSElementVersion:@DefaultAggregation: #NONE

说明:分析视图中#SUM自动求和,#NONE不聚合(日期、单位、文本)。


知识点16:生命周期契约注解

用法总结:声明视图稳定性承诺,客户不应依赖内部API。

视图链路:

  • 项目定义:I_ProjectWithVersion/I_ProjectVersion
  • WBS:I_WBSElementWithVersion/I_WBSElementVersion
  • 网络活动:I_NetworkActivityWithVersion/I_NetworkActivity

原文位置:

  • I_ProjectWithVersion/I_ProjectVersion/I_WBSElementWithVersion/I_NetworkActivity:@VDM.lifecycle.contract.type: #SAP_INTERNAL_API

说明:SAP可随时修改,客户应通过C_消费视图或Z视图访问。


知识点17:虚拟元素与计算字段

用法总结:版本分支硬编码0,运营分支动态计算,保证快照稳定。

视图链路:

  • WBS:P_WBSElementWithVersion->I_WBSElementVersion/I_WBSElement->prps/prte
  • 网络活动:P_NetworkActivityWithVersion->I_NetworkActivityVersion/I_NetworkActivity->afvc/afvv

原文位置:

  • P_WBSElementWithVersion/P_NetworkActivityWithVersion:版本分支cast(0 as int4),运营分支CASE动态计算

说明:版本是历史快照,动态天数依赖当前日期会破坏可比性。


知识点18:会话变量使用

用法总结:运行时获取当前日期和语言,实现动态过滤。

视图链路:

  • P_WBSElementWithVersion->I_WBSElementVersion/I_WBSElement
  • P_NetworkActivityWithVersion->I_NetworkActivityVersion/I_NetworkActivity
  • C_ProjectBasicInfo->I_ProjectWithVersion
  • C_WBSElementBasicInfo->I_WBSElementWithVersion

原文位置:

  • P_WBSElementWithVersion:DATS_DAYS_BETWEEN( cast($session.system_date as sydatum), ...)
  • C_ProjectBasicInfo:[1: Language = $session.system_language ]
  • C_WBSElementBasicInfo:WBSElement._ProfitCenter[1: ValidityEndDate >= $session.system_date and ValidityStartDate <= $session.system_date ]

说明:会话变量运行时求值,基础层不用,组合/消费层才用。


知识点19:UNION ALL分支差异化处理

用法总结:合并运营和版本数据,字段结构一致但语义差异化。

视图链路:

  • 项目定义:P_ProjectWithVersion->I_ProjectVersion->vsproj_cn/I_Project->proj
  • WBS:P_WBSElementWithVersion->I_WBSElementVersion->vsprps_cn/prps/vsprte_cn/I_WBSElement->prps/prte
  • 网络活动:P_NetworkActivityWithVersion->I_NetworkActivityVersion->vsafvc_cn/… /I_NetworkActivity->afvc/…

原文位置:

  • P_ProjectWithVersion:版本分支'X' as IsProjectVersionObject,运营分支key '' as Version, '' as IsProjectVersionObject
  • P_WBSElementWithVersion:同上 + Due/Overdue差异化
  • P_NetworkActivityWithVersion:同上 + Due/Overdue差异化

说明:字段结构必须一致,值语义差异化。运营分支硬编码'',版本分支用实际值。


知识点20:层级节点关联与UI树控件

用法总结:声明WBS层级关联,让UI支持树形展开。

视图链路:
C_WBSElementBasicInfo->I_WBSElementWithVersion->P_WBSElementWithVersion->I_WBSElementVersion->vsprps_cn/prps/vsprte_cn
->I_WBSElement->prps/prte

原文位置:

  • I_WBSElement:@ObjectModel.hierarchy.association: '_WBSElementHierarchyNode'/association [0..*] to I_WBSElementHierarchyNode as _WBSElementHierarchyNode on $projection.WBSElement = _WBSElementHierarchyNode.WBSElement/prps.stufe as WBSElementHierarchyLevel
  • C_WBSElementBasicInfo:仅暴露WBSElementHierarchyLevel

说明:层级能力定义在I_WBSElement,消费层只暴露平铺层级号,不携带树形导航。


知识点总结表(含视图链路)

序号知识点核心机制关键视图链路
1WBS层级结构@ObjectModel.hierarchy.associationC_WBSElementBasicInfo->I_WBSElementWithVersion->P_WBSElementWithVersion->I_WBSElementVersion/I_WBSElement->prps
2状态管理_StsObjConcatActiveStsILLC_ProjectBasicInfo->I_ProjectWithVersion->P_ProjectWithVersion / C_WBSElementBasicInfo->I_WBSElementWithVersion / C_NetworkActivityBasicInfo->I_NetworkActivityWithVersion->P_NetworkActivityWithVersion
3延期/逾期天数DATS_DAYS_BETWEENC_WBSElementBasicInfo->…->P_WBSElementWithVersion / C_NetworkActivityBasicInfo->…->P_NetworkActivityWithVersion
4语义注解@Semantics.*I_NetworkActivity->afvc/afvv/afvu/afko/aufk / I_Project->proj
5外键注解@ObjectModel.foreignKey.associationI_ProjectVersion->vsproj_cn / I_WBSElementVersion->vsprps_cn / I_NetworkActivity->afvc
6辅助视图解耦I_ProjectByInternalKeyI_WBSElement->prps / I_Project->proj
7多表JOINAFVC+AFVV+AFVU+AFKO+AUFKI_NetworkActivity->afvc/afvv/afvu/afko/aufk/t430
8CASE投影case when projn='00000000'I_NetworkActivity->afvc/afvv/afvu/afko/aufk
9扩展视图E_Project/E_WBSElementC_ProjectBasicInfo->…->I_Project / C_WBSElementBasicInfo->…->I_WBSElement
10语义键/代表键@ObjectModel.semanticKeyC_ProjectBasicInfo->I_ProjectWithVersion / C_WBSElementBasicInfo->I_WBSElementWithVersion / C_NetworkActivityBasicInfo->I_NetworkActivityWithVersion
11权限控制@AccessControl.*各视图
12文本关联$session.system_languageC_ProjectBasicInfo->I_ProjectWithVersion / C_WBSElementBasicInfo->I_WBSElementWithVersion / C_NetworkActivityBasicInfo->I_NetworkActivityWithVersion
13日期有效性dats_is_validI_WBSElementVersion->vsprps_cn / I_WBSElement->prps
14单位/货币语义@Semantics.unitOfMeasureI_NetworkActivity->afvc/afvv
15聚合控制@DefaultAggregationI_NetworkActivity->afvv / I_WBSElementVersion->vsprte_cn
16生命周期契约@VDM.lifecycle.contract.typeI_ProjectWithVersion / I_WBSElementWithVersion / I_NetworkActivityWithVersion
17虚拟元素版本分支硬编码0P_WBSElementWithVersion / P_NetworkActivityWithVersion
18会话变量$session.system_dateP_WBSElementWithVersion / P_NetworkActivityWithVersion / C_ProjectBasicInfo
19UNION ALL差异化版本分支''/'X'P_ProjectWithVersion / P_WBSElementWithVersion / P_NetworkActivityWithVersion
20层级节点UI_WBSElementHierarchyNodeC_WBSElementBasicInfo->I_WBSElementWithVersion->P_WBSElementWithVersion->I_WBSElementVersion/I_WBSElement->prps

所有内容均严格来源于用户提供的CDS源文件,视图链路从消费层追溯到DB表。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询