Удаление фильтров из серверной части Fiori ABAP

#sapui5 #abap #sap-fiori

#sapui5 #abap #sap-fiori

Вопрос:

Я пытался удалить строку из it_filter_select_options , но не знаю как. Есть ли какой-либо способ сделать это?

Мой URI передает значение в filter, но иногда в некоторых конкретных условиях я не хочу фильтровать с его помощью, но в то же время я хочу фильтровать с другими значениями.

 if foo = 'xyz'.

  delete it_filter_select_options where property = 'foo'.

  call method /iwbep/cl_mgw_data_util=>filtering
    exporting
      it_select_options = it_filter_select_options
    changing
      ct_data = et_entityset.
endif.
  

выдает эту синтаксическую ошибку в строке delete it_filter_select_options where property = 'foo'. :

поле не может быть изменено

Комментарии:

1. этот параметр фильтра устарел, избегайте его использования

Ответ №1:

ИМПОРТ определяет входные параметры. При вызове метода для каждого необязательного входного параметра должен быть указан соответствующий фактический параметр. Содержимое фактического параметра передается входному параметру при выполнении вызова. Содержимое входного параметра, для которого определена передача по ссылке, не может быть изменено в методе.[1]

Сохраните параметры выбора фильтра в локальной таблице.

Data(lt_select_options) = io_tech_request_context->get_filter( )->get_filter_select_options( ).

Теперь вы можете изменить lt_select_options .

 if foo = 'xyz'
"delete lt_select_options[ property = 'foo' ]-select_options[ sign = 'I' ].
delete it_select_options where property = 'foo'.
call method /iwbep/cl_mgw_data_util=>filtering
  exporting
   it_select_options = lt_select_options
  changing
   ct_data = et_entityset.
endif.
  

Ответ №2:

  1. Пожалуйста, используйте io_tech_request_context->get_filter( )->get_filter_select_options( ) .

  2. Снимите флажок фильтра для полей, которые вы не хотите фильтровать. (см. Транзакция SEGW , дважды щелкните соответствующий объект OData)

  3. Не оценивайте ненужные фильтры в ситуациях, которые вы имеете в виду программно.