in src/zgoog_i_demo_struct_output_imp.prog.abap [0:0]
METHOD get_json_schema_v2.
DATA(lo_metadata_provider) = /iwbep/cl_mgw_med_provider=>get_med_provider_wo_cache( ).
TRY.
DATA(lo_model) = lo_metadata_provider->get_model(
EXPORTING
iv_technical_name = CONV #( iv_v2_model )
iv_version = 0001
).
DATA(lo_entity) = lo_model->get_entity_type( CONV #( iv_v2_entity ) ).
DATA(lt_properties) = lo_entity->get_properties( ).
DATA: lt_properties_comp TYPE abap_component_tab.
DATA(ls_schema_object) = VALUE t_schema_object( type = 'OBJECT' ).
LOOP AT lt_properties REFERENCE INTO DATA(ls_properties).
DATA(lo_property_inner_field) =
cl_abap_structdescr=>get(
VALUE #(
( name = 'TYPE' type = cl_abap_elemdescr=>get_string( ) ) ) ).
APPEND VALUE #( name = ls_properties->name
type = lo_property_inner_field )
TO lt_properties_comp.
ENDLOOP.
DATA(lo_properties_struc) = cl_abap_structdescr=>get( lt_properties_comp ).
CREATE DATA ls_schema_object-properties TYPE HANDLE lo_properties_struc.
ASSIGN ls_schema_object-properties->* TO FIELD-SYMBOL(<ls_properties>).
LOOP AT lt_properties REFERENCE INTO DATA(ls_properties_upd).
DATA(lv_index) = sy-tabix.
ASSIGN COMPONENT lv_index OF STRUCTURE <ls_properties> TO FIELD-SYMBOL(<ls_comp_outer>).
ASSIGN COMPONENT 1 OF STRUCTURE <ls_comp_outer> TO FIELD-SYMBOL(<lv_comp_inner>).
DATA(lv_edm_type) = ls_properties_upd->property->/iwbep/if_mgw_odata_re_prop~get_core_type( ).
<lv_comp_inner> = edm_to_swagger( CONV #( lv_edm_type+4 ) ).
ENDLOOP.
rv_schema = /ui2/cl_json=>serialize(
data = ls_schema_object
ts_as_iso8601 = abap_true
compress = abap_true
pretty_name = /ui2/cl_json=>pretty_mode-low_case ).
CATCH /iwbep/cx_mgw_med_exception INTO DATA(lo_mgw_ex).
MESSAGE lo_mgw_ex->get_text( ) TYPE 'I'.
RETURN.
ENDTRY.