在自定义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.