Skip to content

Commit

Permalink
New Layout (abap2UI5#1167)
Browse files Browse the repository at this point in the history
Co-authored-by: Viktor Hoffmann <[email protected]>
  • Loading branch information
abapsheep and Viktor Hoffmann authored Jun 7, 2024
1 parent 29dc9b6 commit 39eac5c
Show file tree
Hide file tree
Showing 5 changed files with 1,475 additions and 0 deletions.
76 changes: 76 additions & 0 deletions src/01/01/z2ui5_cl_util_api.clas.abap
Original file line number Diff line number Diff line change
Expand Up @@ -368,6 +368,16 @@ CLASS z2ui5_cl_util_api DEFINITION

CLASS-METHODS check_raise_srtti_installed.



CLASS-METHODS get_comps_by_data
IMPORTING !data TYPE REF TO data
RETURNING VALUE(result) TYPE abap_component_tab.

CLASS-METHODS get_comp_by_struc
IMPORTING !type TYPE REF TO cl_abap_datadescr
RETURNING VALUE(result) TYPE abap_component_tab.

PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
Expand Down Expand Up @@ -1195,4 +1205,70 @@ CLASS z2ui5_cl_util_api IMPLEMENTATION.

ENDMETHOD.


METHOD get_comps_by_data.

TRY.
DATA(typedesc) = cl_abap_typedescr=>describe_by_data( data->* ).

CASE typedesc->kind.

WHEN cl_abap_typedescr=>kind_table.

DATA(tabledesc) = CAST cl_abap_tabledescr( typedesc ).
DATA(structdesc) = CAST cl_abap_structdescr( tabledesc->get_table_line_type( ) ).

WHEN cl_abap_typedescr=>kind_struct.

structdesc = CAST cl_abap_structdescr( typedesc ).

WHEN OTHERS.
ENDCASE.

DATA(comp) = structdesc->get_components( ).

LOOP AT comp INTO DATA(com).

IF com-as_include = abap_true.

APPEND LINES OF get_comp_by_struc( com-type ) TO result.

ELSE.

APPEND com TO result.

ENDIF.

ENDLOOP.

CATCH cx_root.
ENDTRY.

ENDMETHOD.


METHOD get_comp_by_struc.

DATA struc TYPE REF TO cl_abap_structdescr.

struc ?= type.

DATA(comp) = struc->get_components( ).

LOOP AT comp INTO DATA(com).

IF com-as_include = abap_true.

APPEND LINES OF get_comp_by_struc( com-type ) TO result.

ELSE.

APPEND com TO result.

ENDIF.

ENDLOOP.

ENDMETHOD.

ENDCLASS.
Loading

0 comments on commit 39eac5c

Please sign in to comment.