if_xco_data_definition
.
DATA(travel_bo_entities) = new zcl_af_get_nodes_from_rap_bo( '/DMO/R_TRAVEL_D' ).
LOOP AT travel_bo_entities->get_entities( ) INTO DATA(entity).
out->write( entity->name ).
ENDLOOP.
traverse_child_entities( )
is the one that traverses our tree.if_xco_data_definition
is created for the root entitiy.traverse_child_entities( )
is called recursively. The child entities of the current entity are being retrieved using the method get_composition_childs().
METHOD traverse_child_entities.
" syntax as found in
" https://www.geeksforgeeks.org/inorder-traversal-of-an-n-ary-tree/
DATA current_child_number TYPE i.
DATA(child_entities) = get_composition_childs( definition ).
CHECK child_entities IS NOT INITIAL.
DATA(number_of_child_entities) = lines( child_entities ).
WHILE current_child_number < number_of_child_entities - 1.
current_child_number += 1 .
APPEND child_entities[ current_child_number ] TO entities.
traverse_child_entities( child_entities[ current_child_number ] ).
ENDWHILE.
APPEND child_entities[ number_of_child_entities ] TO entities.
"last child entity
traverse_child_entities( child_entities[ number_of_child_entities ] ).
ENDMETHOD.
METHOD get_composition_childs.
DATA compositions TYPE sxco_t_cds_compositions.
DATA composition TYPE REF TO if_xco_cds_composition .
DATA composition_targets TYPE STANDARD TABLE OF sxco_cds_object_name.
DATA(view_type) = definition->get_type( ).
CASE view_type.
WHEN xco_cp_data_definition=>type->view_entity.
compositions = definition->view_entity( )->compositions->all->get( ).
WHEN xco_cp_data_definition=>type->custom_entity.
DATA(lo_fields) = definition->custom_entity( )->fields->all->get( ).
LOOP AT lo_fields INTO DATA(lo_field).
IF lo_field->content( )->get( )-composition-target IS NOT INITIAL.
APPEND lo_field->content( )->get( )-composition-target TO composition_targets.
ENDIF.
ENDLOOP.
WHEN xco_cp_data_definition=>type->view.
compositions = definition->view( )->compositions->all->get( ).
WHEN OTHERS.
"do nothing
ENDCASE.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
13 | |
11 | |
10 | |
9 | |
9 | |
7 | |
6 | |
5 | |
5 | |
5 |