如何在自定义oData服务中创建GENERATED_ID以提供分析表?

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

在自定义oData服务中,我需要一个实体,该实体将在sapui5中提供一个分析表。该表应显示VBELN位置的总和。

实体已经收集了VBELN位置和所有需要的补充属性,并且数据可以在sapui5中的响应表中显示。

现在此表已更改为分析表,并且在DEFINE类的MPC_EXT方法中进行了汇总,维度和度量的注释。

SEGW中,在实体集和后端中用于收集数据的结构之间完成了映射。

DPC_EXT类中,方法if_sadl_gw_query_control~SET_QUERY_OPTIONS定义了SUM列,方法GET_ENTITY调用了get_keys_from_analytical_id

但是似乎有些东西丢失了。在我的前端应用程序中,我收到了很多相同记录的副本,当查看数据时,我可以看到GENERATED_ID为空。

如何在自定义oData服务中填充GENERATED_ID

我遵循了这些文档:

ABAP代码:

method DEFINE.
  DATA(lo_entity_type) = model->get_entity_type( 'Overview' ).
  lo_entity_type->set_semantic(
      /iwbep/if_ana_odata_types=>gcs_ana_odata_semantic_value-query-aggregate ).

  DATA(lo_property) = lo_entity_type->get_property( 'Auftraggeber' ).
  DATA(lo_annotation) = lo_property->/iwbep/if_mgw_odata_annotatabl~create_annotation( 
      /iwbep/if_mgw_med_odata_types=>gc_sap_namespace ).
  lo_annotation->add( 
      iv_key   = /iwbep/if_ana_odata_types=>gcs_ana_odata_annotation_key-aggregation_role
      iv_value = /iwbep/if_ana_odata_types=>gcs_ana_odata_annotation_value-dimension-dimension ).


  lo_property = lo_entity_type->get_property( 'Verkaufsbeleg' ).
  lo_annotation->add( 
      iv_key   = /iwbep/if_ana_odata_types=>gcs_ana_odata_annotation_key-aggregation_role
      iv_value = /iwbep/if_ana_odata_types=>gcs_ana_odata_annotation_value-dimension-dimension ).

  lo_property = lo_entity_type->get_property( 'Position' ).
  lo_annotation->add( 
      iv_key   = /iwbep/if_ana_odata_types=>gcs_ana_odata_annotation_key-aggregation_role
      iv_value = /iwbep/if_ana_odata_types=>gcs_ana_odata_annotation_value-dimension-dimension ).

  lo_property = lo_entity_type->get_property( 'Menge' ).
  lo_annotation->add( 
      iv_key   = /iwbep/if_ana_odata_types=>gcs_ana_odata_annotation_key-aggregation_role
      iv_value = /iwbep/if_ana_odata_types=>gcs_ana_odata_annotation_value-measure-measure ).

  lo_property = lo_entity_type->get_property( 'Umsatz' ).
  lo_annotation->add( 
      iv_key   = /iwbep/if_ana_odata_types=>gcs_ana_odata_annotation_key-aggregation_role
      iv_value = /iwbep/if_ana_odata_types=>gcs_ana_odata_annotation_value-measure-measure ).
endmethod.      


method IF_SADL_GW_QUERY_CONTROL~SET_QUERY_OPTIONS.
  io_query_options->set_aggregation( VALUE #(
  ( element = 'MENGE'  alias = 'MENGE'  type = if_sadl_gw_query_options=>co_aggregation_type-sum )
  ( element = 'UMSATZ' alias = 'UMSATZ' type = if_sadl_gw_query_options=>co_aggregation_type-sum )
  ) ).
endmethod.      

method /IWBEP/IF_MGW_APPL_SRV_RUNTIME~GET_ENTITY.
  if_sadl_gw_dpc_util~get_dpc( )->get_keys_from_analytical_id(
      EXPORTING io_tech_request_context = io_tech_request_context
      IMPORTING et_keys = DATA(lt_keys) ).
endmethod.
odata sapui5 abap
1个回答
0
投票
© www.soinside.com 2019 - 2024. All rights reserved.