Сложный тип в методе определения для `загрузки` в UI5

#odata #sapui5 #abap

#odata #sapui5 #abap

Вопрос:

Я использую FileUploader элемент и в бэкэнде я переопределил DEFINE метод.

Поля value , Mimetype , и filename находятся в отдельном сложном типе внутри объекта. Я установил флажок media для объекта Data = true .

Мой метод определения:

 SUPER->DEFINE( ).

LO_ENTITY = MODEL->GET_ENTITY_TYPE( IV_ENTITY_NAME = 'Data' ).
IF LO_ENTITY IS BOUND.
  LO_ENTITY->GET_CMPLX_TYPE_PROPERTY( 'ComplexType' )->GET_COMPLEX_TYPE( )->GET_PROPERTY( 'Mimetype' )->SET_AS_CONTENT_TYPE( ).
ENDIF.
  

Но я все равно получаю сообщение об ошибке Invalid или нет сопоставления с системными типами данных.
Может быть, сложный тип и носитель не работают?

Ответ №1:

Я не уверен насчет сложных типов, но недавно я решил именно эту проблему. Попробуйте следующий код, он должен работать.

 super->define().
DATA: lo_entity TYPE REF TO /iwbep/if_mgw_odata_entity_typ,
      lo_property TYPE REF TO /iwbep/if_mgw_odata_property.

lo_entity = model->get_entity_type( iv_entity_name = 'Data' ).

IF lo_entity IS BOUND.
   lo_property = lo_entity->get_property( iv_property_name = 'value' ).
   lo_property->set_as_content_type( ).
   lo_property = lo_entity->get_property( iv_property_name = 'Mimetype' ).
   lo_property->set_as_content_type( ).
   lo_property = lo_entity->get_property( iv_property_name = 'filename' ).
   lo_property->set_as_content_type( ).
ENDIF.