В пользовательском сервисе 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
пуст.
Как мне заполнить GENERATED_ID
в пользовательских oDataСервис?
Я придерживался следующих документов:
Код 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.