You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Fiori应用F2217虚拟元素计算代码未触发问题求助

问题:Fiori应用F2217的虚拟元素计算代码未触发

在Fiori应用Display Line Items in General Ledger(事务码F2217)中,尝试显示项目文本,已按教程扩展标准CDS视图C_JournalEntryItemBrowser,关联至包含虚拟元素的自定义CDS视图Z_I_ACCOUNTING_ITEM_TEXTS。该视图中的虚拟元素ZZ_ZTID由实现接口IF_SADL_EXIT_CALC_ELEMENT_READ的ABAP类ZCL_ACCOUNTING_ITEM_TEXTS计算,但计算代码未被调用:Fiori应用中对应列显示为空,Eclipse中设置的断点也未触发。


关联代码

ABAP类ZCL_ACCOUNTING_ITEM_TEXTS的计算方法代码

METHOD IF_SADL_EXIT_CALC_ELEMENT_READ~calculate.
  MOVE-CORRESPONDING it_original_data TO ct_calculated_data.
  LOOP AT ct_calculated_data ASSIGNING FIELD-SYMBOL(<calculated_line>).
    ASSIGN COMPONENT 'ZZ_ZTID' OF STRUCTURE <calculated_line> TO FIELD-SYMBOL(<fs_component>).
    <fs_component> = 'Test'.
  ENDLOOP.
ENDMETHOD.

自定义CDS视图Z_I_ACCOUNTING_ITEM_TEXTS代码

@EndUserText.label: '查询会计凭证行项目文本'
@AccessControl.authorizationCheck: #NOT_REQUIRED
@ObjectModel.supportedCapabilities: [ #CDS_MODELING_ASSOCIATION_TARGET, #CDS_MODELING_DATA_SOURCE ]
@OData.publish: true
define view entity Z_I_ACCOUNTING_ITEM_TEXTS as select from  I_GLAccountLineItem
{
  key SourceLedger,
  key CompanyCode,
  key FiscalYear,
  key AccountingDocument,
  key LedgerGLLineItem,
  key Ledger,
  
  @ObjectModel.readOnly: true
  @ObjectModel.virtualElement: true
  @ObjectModel.virtualElementCalculatedBy: 'ABAP:ZCL_ACCOUNTING_ITEM_TEXTS'
  cast( '' as z_ztid ) as ZZ_ZTID,
  
  _SourceLedger,
  _CompanyCode,
  _FiscalYear,
  _JournalEntry,
  _Ledger
}

排查与解决步骤

  1. 校验CDS视图关联逻辑

    • 确认扩展C_JournalEntryItemBrowser时,关联Z_I_ACCOUNTING_ITEM_TEXTS的所有主键字段(SourceLedger、CompanyCode等6个键值)完全匹配,无类型不匹配或字段遗漏。
    • 扩展视图中必须显式包含ZZ_ZTID字段,否则Fiori应用无法触发计算逻辑。
  2. 检查ABAP类的有效性

    • 确认ZCL_ACCOUNTING_ITEM_TEXTS完整实现IF_SADL_EXIT_CALC_ELEMENT_READ接口的所有方法,且类与接口均已激活。
    • 类的可见性需设为PUBLIC,否则SADL框架无法调用。
  3. 核对虚拟元素注解配置

    • 确保@ObjectModel.virtualElementCalculatedBy的格式为ABAP:<类名>,类名完全匹配(区分大小写)。
    • 检查z_ztid类型与代码中赋值的Test字符串类型兼容,避免因类型不匹配导致赋值失败。
  4. 直接测试CDS视图

    • 在SE16N或CDS预览中查询Z_I_ACCOUNTING_ITEM_TEXTS,查看ZZ_ZTID是否有值。若直接查询为空,问题出在视图或类的实现;若有值,则排查Fiori应用的扩展配置。
  5. 检查Fiori应用字段配置

    • 确认Fiori应用的字段选择中已添加ZZ_ZTID列,未被隐藏。
    • 若使用自定义UI配置,需确保字段映射正确,未遗漏虚拟元素的绑定。
  6. 清除缓存并重新激活

    • 通过事务码/IWFND/CACHE_CLEANUP清除CDS元数据缓存,重新激活所有相关对象(CDS视图、ABAP类、扩展视图)。
    • 刷新Fiori前端缓存,确保加载最新元数据。

内容的提问来源于stack exchange,提问作者Cutter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 12:53:24