|  | 
|  | 1 | +CLASS z2ui5_cl_demo_app_345 DEFINITION PUBLIC. | 
|  | 2 | + | 
|  | 3 | +  PUBLIC SECTION. | 
|  | 4 | +    INTERFACES z2ui5_if_app. | 
|  | 5 | + | 
|  | 6 | +    DATA mt_data1       TYPE REF TO data. | 
|  | 7 | +*    DATA mt_data2       TYPE REF TO data. | 
|  | 8 | +*    DATA mt_data3       TYPE REF TO data. | 
|  | 9 | +*    DATA mt_data4       TYPE REF TO data. | 
|  | 10 | +*    DATA mt_data5       TYPE REF TO data. | 
|  | 11 | +*    DATA mt_data6       TYPE REF TO data. | 
|  | 12 | + | 
|  | 13 | +    DATA mo_layout_obj1 TYPE REF TO z2ui5_cl_demo_app_333. | 
|  | 14 | +*    DATA mo_layout_obj2 TYPE REF TO z2ui5_cl_demo_app_333. | 
|  | 15 | +*    DATA mo_layout_obj3 TYPE REF TO z2ui5_cl_demo_app_333. | 
|  | 16 | +*    DATA mo_layout_obj4 TYPE REF TO z2ui5_cl_demo_app_333. | 
|  | 17 | +*    DATA mo_layout_obj5 TYPE REF TO z2ui5_cl_demo_app_333. | 
|  | 18 | +*    DATA mo_layout_obj6 TYPE REF TO z2ui5_cl_demo_app_333. | 
|  | 19 | + | 
|  | 20 | +    METHODS get_data. | 
|  | 21 | + | 
|  | 22 | +    METHODS render_main | 
|  | 23 | +      IMPORTING | 
|  | 24 | +        !client TYPE REF TO z2ui5_if_client. | 
|  | 25 | + | 
|  | 26 | +  PROTECTED SECTION. | 
|  | 27 | + | 
|  | 28 | +  PRIVATE SECTION. | 
|  | 29 | +    METHODS xml_table | 
|  | 30 | +      IMPORTING | 
|  | 31 | +        i_page   TYPE REF TO z2ui5_cl_xml_view | 
|  | 32 | +        i_client TYPE REF TO z2ui5_if_client | 
|  | 33 | +        i_data   TYPE REF TO data | 
|  | 34 | +        i_layout TYPE REF TO z2ui5_cl_demo_app_333. | 
|  | 35 | + | 
|  | 36 | +    METHODS get_comp | 
|  | 37 | +      RETURNING | 
|  | 38 | +        VALUE(result) TYPE abap_component_tab. | 
|  | 39 | + | 
|  | 40 | +ENDCLASS. | 
|  | 41 | + | 
|  | 42 | + | 
|  | 43 | + | 
|  | 44 | +CLASS z2ui5_cl_demo_app_345 IMPLEMENTATION. | 
|  | 45 | + | 
|  | 46 | + | 
|  | 47 | +  METHOD get_comp. | 
|  | 48 | + | 
|  | 49 | +    TRY. | 
|  | 50 | +        TRY. | 
|  | 51 | + | 
|  | 52 | +            cl_abap_typedescr=>describe_by_name( EXPORTING  p_name         = 'Z2UI5_T_01' | 
|  | 53 | +                                                 RECEIVING  p_descr_ref    = DATA(typedesc) | 
|  | 54 | +                                                 EXCEPTIONS type_not_found = 1 | 
|  | 55 | +                                                            OTHERS         = 2 ). | 
|  | 56 | + | 
|  | 57 | +            DATA(structdesc) = CAST cl_abap_structdescr( typedesc ). | 
|  | 58 | + | 
|  | 59 | +            DATA(comp) = structdesc->get_components( ). | 
|  | 60 | + | 
|  | 61 | +            LOOP AT comp INTO DATA(com). | 
|  | 62 | + | 
|  | 63 | +              IF com-as_include = abap_false. | 
|  | 64 | + | 
|  | 65 | +                APPEND com TO result. | 
|  | 66 | + | 
|  | 67 | +              ENDIF. | 
|  | 68 | + | 
|  | 69 | +            ENDLOOP. | 
|  | 70 | + | 
|  | 71 | +          CATCH cx_root. | 
|  | 72 | +        ENDTRY. | 
|  | 73 | + | 
|  | 74 | +      CATCH cx_root. | 
|  | 75 | +    ENDTRY. | 
|  | 76 | + | 
|  | 77 | +  ENDMETHOD. | 
|  | 78 | + | 
|  | 79 | + | 
|  | 80 | +  METHOD get_data. | 
|  | 81 | + | 
|  | 82 | +    FIELD-SYMBOLS <table1> TYPE STANDARD TABLE. | 
|  | 83 | + | 
|  | 84 | +    DATA(t_comp) = get_comp( ). | 
|  | 85 | +    TRY. | 
|  | 86 | + | 
|  | 87 | +        DATA(new_struct_desc) = cl_abap_structdescr=>create( t_comp ). | 
|  | 88 | +        DATA(new_table_desc) = cl_abap_tabledescr=>create( p_line_type  = new_struct_desc | 
|  | 89 | +                                                           p_table_kind = cl_abap_tabledescr=>tablekind_std ). | 
|  | 90 | + | 
|  | 91 | +        CREATE DATA mt_data1 TYPE HANDLE new_table_desc. | 
|  | 92 | +        ASSIGN mt_data1->* TO <table1>. | 
|  | 93 | + | 
|  | 94 | +        SELECT * FROM Z2ui5_t_01 | 
|  | 95 | +          INTO TABLE @<table1> | 
|  | 96 | +          UP TO 5 ROWS. | 
|  | 97 | + | 
|  | 98 | +      CATCH cx_root. | 
|  | 99 | +    ENDTRY. | 
|  | 100 | + | 
|  | 101 | +    mo_layout_obj1 = z2ui5_cl_demo_app_333=>factory( i_data   = mt_data1 | 
|  | 102 | +                                                     vis_cols = 2 ). | 
|  | 103 | + | 
|  | 104 | +  ENDMETHOD. | 
|  | 105 | + | 
|  | 106 | + | 
|  | 107 | +  METHOD render_main. | 
|  | 108 | + | 
|  | 109 | +    DATA(page) = z2ui5_cl_xml_view=>factory( )->shell( )->page( title          = 'RTTI IV' | 
|  | 110 | +                                                                navbuttonpress = client->_event( 'BACK' ) | 
|  | 111 | +                                                                shownavbutton  = client->check_app_prev_stack( ) ). | 
|  | 112 | + | 
|  | 113 | +    page->button( text  = 'CALL Next App' | 
|  | 114 | +                  press = client->_event( 'GO' ) | 
|  | 115 | +                  type  = 'Success' ). | 
|  | 116 | + | 
|  | 117 | + | 
|  | 118 | +    TRY. | 
|  | 119 | +        xml_table( i_page   = page | 
|  | 120 | +          i_client = client | 
|  | 121 | +          i_data   = mt_data1 | 
|  | 122 | +          i_layout = mo_layout_obj1 ). | 
|  | 123 | +        client->message_box_display( `error - reference processed in binding without error` ). | 
|  | 124 | +      CATCH cx_root. | 
|  | 125 | +        client->message_box_display( `success - reference not allowed for binding throwed` ). | 
|  | 126 | +    ENDTRY. | 
|  | 127 | + | 
|  | 128 | + | 
|  | 129 | +    client->view_display( page ). | 
|  | 130 | + | 
|  | 131 | +  ENDMETHOD. | 
|  | 132 | + | 
|  | 133 | + | 
|  | 134 | +  METHOD xml_table. | 
|  | 135 | + | 
|  | 136 | +    DATA(table) = i_page->table( width = 'auto' | 
|  | 137 | +                                 items = i_client->_bind( val = i_data ) ). | 
|  | 138 | + | 
|  | 139 | +    DATA(columns) = table->columns( ). | 
|  | 140 | + | 
|  | 141 | +    LOOP AT i_layout->ms_data-t_layout REFERENCE INTO DATA(layout). | 
|  | 142 | +      DATA(lv_index) = sy-tabix. | 
|  | 143 | + | 
|  | 144 | +      columns->column( visible = i_client->_bind( val       = layout->visible | 
|  | 145 | +                                                  tab       = i_layout->ms_data-t_layout | 
|  | 146 | +                                                  tab_index = lv_index ) | 
|  | 147 | +       )->text( layout->name ). | 
|  | 148 | + | 
|  | 149 | +    ENDLOOP. | 
|  | 150 | + | 
|  | 151 | +    DATA(column_list_item) = columns->get_parent( )->items( | 
|  | 152 | +                                       )->column_list_item(    ). | 
|  | 153 | + | 
|  | 154 | +    DATA(cells) = column_list_item->cells( ). | 
|  | 155 | + | 
|  | 156 | +    LOOP AT i_layout->ms_data-t_layout REFERENCE INTO layout. | 
|  | 157 | + | 
|  | 158 | +      lv_index = sy-tabix. | 
|  | 159 | + | 
|  | 160 | +      cells->object_identifier( text = |\{{ layout->name }\}| ).  "."|\{{ layout->fname }\}| ). | 
|  | 161 | + | 
|  | 162 | +    ENDLOOP. | 
|  | 163 | + | 
|  | 164 | +  ENDMETHOD. | 
|  | 165 | + | 
|  | 166 | + | 
|  | 167 | +  METHOD z2ui5_if_app~main. | 
|  | 168 | + | 
|  | 169 | +    IF client->check_on_init( ). | 
|  | 170 | +      get_data( ). | 
|  | 171 | +      render_main( client ). | 
|  | 172 | +    ENDIF. | 
|  | 173 | + | 
|  | 174 | +    CASE client->get( )-event. | 
|  | 175 | +      WHEN 'BACK'. | 
|  | 176 | +        client->nav_app_leave( ). | 
|  | 177 | +      WHEN 'GO'. | 
|  | 178 | +        DATA(app) = z2ui5_cl_demo_app_336=>factory( ). | 
|  | 179 | +        client->nav_app_call( app ). | 
|  | 180 | +    ENDCASE. | 
|  | 181 | + | 
|  | 182 | + | 
|  | 183 | +    IF client->get( )-check_on_navigated = abap_true | 
|  | 184 | +       AND client->check_on_init( )          = abap_false. | 
|  | 185 | +      render_main( client ). | 
|  | 186 | +    ENDIF. | 
|  | 187 | + | 
|  | 188 | + | 
|  | 189 | +    IF mo_layout_obj1->mr_data IS NOT BOUND. | 
|  | 190 | +      client->message_toast_display( 'ERROR - mo_layout_obj->mr_data is not bound!' ). | 
|  | 191 | +    ENDIF. | 
|  | 192 | + | 
|  | 193 | +    IF mo_layout_obj1->mr_data->* <> mt_data1->*. | 
|  | 194 | +      client->message_toast_display( 'ERROR - mo_layout_obj_2->mr_data  <> mt_data!' ). | 
|  | 195 | +    ENDIF. | 
|  | 196 | + | 
|  | 197 | + | 
|  | 198 | +  ENDMETHOD. | 
|  | 199 | +ENDCLASS. | 
0 commit comments