Как GENERATED_ID создается в пользовательской службе oData для подачи в аналитическую таблицу? - PullRequest
0 голосов
/ 01 июля 2019

В пользовательском сервисе 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.
...