SAP UI5 异步加载 metadata 的代码实现
2023-09-14 09:02:42 时间
Created by Jerry Wang, last modified on Sep 14, 2015
- sMockdataBaseUrl
- oMockServer
- oConfig
- loadMetadataAsync
- useBatch
- mockedDataSource
- serviceUrl
- sap.ushell
- sap-language
- bUseV2Model
- v2
- attachMetadataLoaded
遍历application配置的所有service:
取得异步加载flag:
准备创建model:
new 语句会导致Metadata的加载:
成功取回后,trigger application注册的event handler:
application的处理代码在此处执行:
2022-8-18 更新
从源代码实现能看出,SAP UI5 元数据只支持 xml 格式的返回:
METHOD /iwcor/if_ds_svc_proc~get_supported_formats.
DATA:
ls_format TYPE /iwcor/if_ds_svc_proc=>format_s,
lv_service_version type string.
lv_service_version = me->/iwcor/if_ds_svc~get_version( ).
CASE lv_service_version.
WHEN /iwcor/if_ds_edm=>gc_data_service_version_20.
CASE iv_processor_type.
WHEN /iwcor/if_ds_svc_proc~gc_proc_type_entity_set.
" atom
add_content_type atom atom appl_atom_xml_feed.
add_content_type atom atom appl_atom_xml.
" json
add_content_type json json appl_json.
add_content_type json json appl_json_odata_verbose.
" xml
add_content_type xml xml appl_xml.
WHEN /iwcor/if_ds_svc_proc~gc_proc_type_entity OR
/iwcor/if_ds_svc_proc~gc_proc_type_func_import_ent.
" atom
add_content_type atom atom appl_atom_xml_entry.
add_content_type atom atom appl_atom_xml.
" json
add_content_type json json appl_json.
add_content_type json json appl_json_odata_verbose.
" xml
add_content_type xml xml appl_xml.
WHEN /iwcor/if_ds_svc_proc~gc_proc_type_service.
" atom
add_content_type atom atom appl_atomsvc_xml.
" json
add_content_type json json appl_json.
add_content_type json json appl_json_odata_verbose.
" xml
add_content_type xml xml appl_xml.
WHEN /iwcor/if_ds_svc_proc~gc_proc_type_metadata.
" xml
add_content_type xml xml appl_xml.
WHEN /iwcor/if_ds_svc_proc~gc_proc_type_func_import OR
/iwcor/if_ds_svc_proc~gc_proc_type_entity_cprop OR
/iwcor/if_ds_svc_proc~gc_proc_type_entity_sprop OR
/iwcor/if_ds_svc_proc~gc_proc_type_entity_links OR
/iwcor/if_ds_svc_proc~gc_proc_type_entity_link.
" xml
add_content_type xml xml appl_xml.
" json
add_content_type json json appl_json.
add_content_type json json appl_json_odata_verbose.
WHEN /iwcor/if_ds_svc_proc~gc_proc_type_entity_media OR
/iwcor/if_ds_svc_proc~gc_proc_type_entity_vprop OR
/iwcor/if_ds_svc_proc~gc_proc_type_func_import_value.
" all content types are supported by default
CLEAR et_format.
WHEN /iwcor/if_ds_svc_proc~gc_proc_type_batch.
ls_format-abap_format = 'batch'. "#EC NOTEXT
ls_format-format = 'batch'. "#EC NOTEXT
ls_format-content_type = /iwcor/if_rest_media_type=>gc_multipart_mixed.
APPEND ls_format TO et_format.
ENDCASE.
WHEN /iwcor/if_ds_edm=>gc_data_service_version_30.
* Within OData 3.0 specification there is a paradigm change.
* The name of the format json was changed to verbosejson. Therefore we have
* the following format transitions:
* V2 V3(format) V3 ('format_abap' used within the Library)
* json => verbosejson => json
*
CASE iv_processor_type.
WHEN /iwcor/if_ds_svc_proc~gc_proc_type_entity_set.
" atom
add_content_type atom atom appl_atom_xml_feed.
add_content_type atom atom appl_atom_xml.
" json
add_content_type json verbosejson appl_json_odata_verbose.
" xml
add_content_type xml xml appl_xml.
WHEN /iwcor/if_ds_svc_proc~gc_proc_type_entity OR
/iwcor/if_ds_svc_proc~gc_proc_type_func_import_ent.
" atom
add_content_type atom atom appl_atom_xml_entry.
add_content_type atom atom appl_atom_xml.
" json
add_content_type json verbosejson appl_json_odata_verbose.
" xml
add_content_type xml xml appl_xml.
WHEN /iwcor/if_ds_svc_proc~gc_proc_type_service.
" atom
add_content_type atom atom appl_atomsvc_xml.
" json
add_content_type json verbosejson appl_json_odata_verbose.
" xml
add_content_type xml xml appl_xml.
WHEN /iwcor/if_ds_svc_proc~gc_proc_type_metadata.
" xml
add_content_type xml xml appl_xml.
WHEN /iwcor/if_ds_svc_proc~gc_proc_type_func_import OR
/iwcor/if_ds_svc_proc~gc_proc_type_entity_cprop OR
/iwcor/if_ds_svc_proc~gc_proc_type_entity_sprop OR
/iwcor/if_ds_svc_proc~gc_proc_type_entity_links OR
/iwcor/if_ds_svc_proc~gc_proc_type_entity_link.
" xml
add_content_type xml xml appl_xml.
" json
add_content_type json verbosejson appl_json_odata_verbose.
WHEN /iwcor/if_ds_svc_proc~gc_proc_type_entity_media OR
/iwcor/if_ds_svc_proc~gc_proc_type_entity_vprop OR
/iwcor/if_ds_svc_proc~gc_proc_type_func_import_value.
" all content types are supported by default
CLEAR et_format.
WHEN /iwcor/if_ds_svc_proc~gc_proc_type_batch.
ls_format-abap_format = 'batch'. "#EC NOTEXT
ls_format-format = 'batch'. "#EC NOTEXT
ls_format-content_type = /iwcor/if_rest_media_type=>gc_multipart_mixed.
APPEND ls_format TO et_format.
ENDCASE.
WHEN OTHERS.
ASSERT 1 = 2.
ENDCASE.
ENDMETHOD. "/iwcor/if_ds_svc_proc~get_supported_formats
相关文章
- 53. 如何自定义 SAP UI5 数据类型(Data Type)
- 45. 如何在 SAP UI5 应用里使用 jQuery 和原生的 DOM API
- 关于 SAP UI5 应用 render2 实例异步创建的编码实现
- SAP UI5应用里使用jQuery.ajax异步读取xml文档并显示在SAP UI5应用界面上
- SAP UI5自学教程一:button.js的加载逻辑
- SAP UI5中的同步请求和异步请求
- SAP ABAP OData 服务里 EntityType 和 EntitySet 的区别试读版
- 网友提问:SAP FUNCTION使用cl_http_client POST REQUEST的问题
- SAP CRM IDOC的详尽调试步骤
- 一个讨论:SAP项目实施的顾问,需要花时间去调试代码了解技术细节吗
- SAP C4C Embedded Component最常见的故障原因分析
- SAP Fiori Elements的change and save实现原理
- SAP LUW Database update discuss mengniu 蒙牛
- SAP Authenticator Android app
- SAP标准培训课程C4C10学习笔记(三)第三单元
- 如何处理SAP Fiori Launchpad KPI tile点击后出现的错误消息