虚拟元素不计算

问题描述 投票:0回答:1

我正在尝试在 Fiori 应用程序中显示项目文本 在总帐中显示行项目 (F2217)。我已经用虚拟元素扩展了标准 CDS 视图,但是没有调用计算虚拟元素的代码。

我扩展了 CDS 视图

C_JournalEntryItemBrowser
,并将扩展关联到包含虚拟元素的自定义 CDS 视图,如本博客文章中所述。虚拟元素由类
ZCL_ACCOUNTING_ITEM_TEXTS
计算。该类实现接口
IF_SADL_EXIT_CALC_ELEMENT_READ

这是方法的代码

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.

组件

ZZ_ZTID
对应的新列出现在Fiori应用程序中,且值为空,查询应用程序时不会触发Eclipse中设置的断点。

这是包含虚拟元素的 CDS 视图:

@EndUserText.label: 'Query accounting document item texts'
@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
}
abap sap-fiori cds
1个回答
0
投票

直接用虚拟元素ZZ_ZTID扩展视图

C_JournalEntryItemBrowser
,然后在
FAC_GLV_GL_ACCOUNT_LINE_ITEMS
事务中打开项目
SEGW
时,会出现错误:
Error related to element 'ZZ_ZTID' of entity 'C_JOURNALENTRYITEMBROWSER(CDS)': Transformation @OBJECTMODEL.VIRTUALELEMENTCALCULATEDBY on element ZZ_ZTID is not allowed in analytical views
当从
/IWFND/ERROR_LOG
事务
执行 $metadata 调用时,可以在 
/IWFND/GW_CLIENT

事务中发现相同的错误

我相信也是同样的原因,虚拟元素计算没有被触发,并且对于你的场景没有显示任何值

我扩展了另一个 CDS 视图(不是分析性的),并将扩展关联到包含虚拟元素的自定义 CDS 视图,并触发计算并正确填充值。

因此,简短的回答是虚拟元素不能在分析 CDS 视图中使用。

© www.soinside.com 2019 - 2024. All rights reserved.