From a8672325455d870f9176b47d3c23875596532fe1 Mon Sep 17 00:00:00 2001 From: Viktor Hoffmann Date: Tue, 1 Jul 2025 09:30:12 +0000 Subject: [PATCH 1/3] New RTTI Sample Cell Binding --- src/z2ui5_cl_demo_app_331.clas.abap | 2 + src/z2ui5_cl_demo_app_332.clas.abap | 96 +++++++++++++++++++++++++++++ src/z2ui5_cl_demo_app_332.clas.xml | 16 +++++ src/z2ui5_cl_demo_app_333.clas.abap | 51 +++++++++++++++ src/z2ui5_cl_demo_app_333.clas.xml | 16 +++++ 5 files changed, 181 insertions(+) create mode 100644 src/z2ui5_cl_demo_app_332.clas.abap create mode 100644 src/z2ui5_cl_demo_app_332.clas.xml create mode 100644 src/z2ui5_cl_demo_app_333.clas.abap create mode 100644 src/z2ui5_cl_demo_app_333.clas.xml diff --git a/src/z2ui5_cl_demo_app_331.clas.abap b/src/z2ui5_cl_demo_app_331.clas.abap index eb387dc0..bae7cc35 100644 --- a/src/z2ui5_cl_demo_app_331.clas.abap +++ b/src/z2ui5_cl_demo_app_331.clas.abap @@ -35,6 +35,8 @@ CLASS z2ui5_cl_demo_app_331 IMPLEMENTATION. ENDCASE. +client->view_model_update( ). + ENDMETHOD. METHOD ui5_view_display. diff --git a/src/z2ui5_cl_demo_app_332.clas.abap b/src/z2ui5_cl_demo_app_332.clas.abap new file mode 100644 index 00000000..9398038a --- /dev/null +++ b/src/z2ui5_cl_demo_app_332.clas.abap @@ -0,0 +1,96 @@ +CLASS z2ui5_cl_demo_app_332 DEFINITION PUBLIC. + + PUBLIC SECTION. + INTERFACES z2ui5_if_app. + + DATA ms_struc TYPE z2ui5_t_01. + DATA mo_table_obj TYPE REF TO z2ui5_cl_demo_app_333. + + METHODS get_data. + + METHODS ui5_view_display + IMPORTING + !client TYPE REF TO z2ui5_if_client. + + PROTECTED SECTION. + + PRIVATE SECTION. +ENDCLASS. + + +CLASS z2ui5_cl_demo_app_332 IMPLEMENTATION. + + METHOD z2ui5_if_app~main. + + IF client->check_on_init( ). + + get_data( ). + + mo_table_obj = z2ui5_cl_demo_app_333=>factory( REF #( ms_struc ) ). + + ui5_view_display( client ). + + ENDIF. + + CASE client->get( )-event. + + WHEN 'BACK'. + + client->nav_app_leave( ). + + ENDCASE. + + + client->view_model_update( ). + + ENDMETHOD. + + METHOD ui5_view_display. + + DATA(page) = z2ui5_cl_xml_view=>factory( )->shell( )->page( title = 'RTTI IV' + navbuttonpress = client->_event( 'BACK' ) + shownavbutton = client->check_app_prev_stack( ) ). + + page->button( text = 'GO' + press = client->_event( 'GO' ) + type = 'Success' ). + + DATA(form) = page->simple_form( editable = abap_true + layout = `ResponsiveGridLayout` + adjustlabelspan = abap_true + )->content( ns = `form` ). + + DATA(index) = 0. + + LOOP AT mo_table_obj->mt_layout REFERENCE INTO DATA(layout). + + index += 1. + + ASSIGN COMPONENT layout->name OF STRUCTURE mo_table_obj->mr_data->* TO FIELD-SYMBOL(). + " assign component layout->name of structure ms_struc to field-symbol(). + IF IS NOT ASSIGNED. + RETURN. + ENDIF. + + DATA(line) = form->label( wrapping = abap_false + text = layout->name ). + + line->input( value = client->_bind( ) + visible = client->_bind( val = layout->visible + tab = mo_table_obj->mt_layout + tab_index = index ) + enabled = abap_false ). + ENDLOOP. + + client->view_display( page ). + + ENDMETHOD. + + METHOD get_data. + + SELECT SINGLE * FROM z2ui5_t_01 + INTO CORRESPONDING FIELDS OF @ms_STRUC. + + ENDMETHOD. + +ENDCLASS. diff --git a/src/z2ui5_cl_demo_app_332.clas.xml b/src/z2ui5_cl_demo_app_332.clas.xml new file mode 100644 index 00000000..af407c6b --- /dev/null +++ b/src/z2ui5_cl_demo_app_332.clas.xml @@ -0,0 +1,16 @@ + + + + + + Z2UI5_CL_DEMO_APP_332 + E + RTTI - Struc wit Cell Binding + 1 + X + X + X + + + + diff --git a/src/z2ui5_cl_demo_app_333.clas.abap b/src/z2ui5_cl_demo_app_333.clas.abap new file mode 100644 index 00000000..3d83cd89 --- /dev/null +++ b/src/z2ui5_cl_demo_app_333.clas.abap @@ -0,0 +1,51 @@ +CLASS z2ui5_cl_demo_app_333 DEFINITION PUBLIC. + + PUBLIC SECTION. + INTERFACES if_serializable_object. + + TYPES: + BEGIN OF ty_s_layout, + name TYPE string, + visible TYPE abap_bool, + END OF ty_s_layout. + TYPES ty_t_layout TYPE STANDARD TABLE OF ty_s_layout WITH EMPTY KEY. + + DATA mt_layout TYPE ty_t_layout. + DATA mr_data TYPE REF TO data. + + CLASS-METHODS factory + IMPORTING + i_data TYPE REF TO data + RETURNING + VALUE(result) TYPE REF TO z2ui5_cl_demo_app_333. + + PROTECTED SECTION. + + PRIVATE SECTION. +ENDCLASS. + + +CLASS z2ui5_cl_demo_app_333 IMPLEMENTATION. + + METHOD factory. + + result = NEW #( ). + + DATA(t_comp) = z2ui5_cl_util=>rtti_get_t_attri_by_any( i_data ). + + LOOP AT t_comp INTO DATA(comp). + + APPEND INITIAL LINE TO result->mt_layout REFERENCE INTO DATA(layout). + + layout->name = comp-name. + IF sy-tabix < 4. + layout->visible = abap_true. + ENDIF. + + ENDLOOP. + + result->mr_data = i_data. + + ENDMETHOD. + +ENDCLASS. diff --git a/src/z2ui5_cl_demo_app_333.clas.xml b/src/z2ui5_cl_demo_app_333.clas.xml new file mode 100644 index 00000000..62e749e8 --- /dev/null +++ b/src/z2ui5_cl_demo_app_333.clas.xml @@ -0,0 +1,16 @@ + + + + + + Z2UI5_CL_DEMO_APP_333 + E + Data Object for Sample 331 + 1 + X + X + X + + + + From 1ae8a0cd4b2acc132e3455a9ccf3bfaf1e20226f Mon Sep 17 00:00:00 2001 From: Viktor Hoffmann Date: Tue, 1 Jul 2025 09:32:18 +0000 Subject: [PATCH 2/3] Update --- src/z2ui5_cl_demo_app_331.clas.abap | 8 ++++---- src/z2ui5_cl_demo_app_332.clas.abap | 5 ++--- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/z2ui5_cl_demo_app_331.clas.abap b/src/z2ui5_cl_demo_app_331.clas.abap index bae7cc35..eb510a42 100644 --- a/src/z2ui5_cl_demo_app_331.clas.abap +++ b/src/z2ui5_cl_demo_app_331.clas.abap @@ -24,7 +24,7 @@ CLASS z2ui5_cl_demo_app_331 IMPLEMENTATION. IF client->check_on_init( ). get_data( ). - mo_table_obj = z2ui5_cl_demo_app_329=>factory( ref #( ms_struc ) ). + mo_table_obj = z2ui5_cl_demo_app_329=>factory( REF #( ms_struc ) ). ui5_view_display( client ). ENDIF. @@ -35,7 +35,7 @@ CLASS z2ui5_cl_demo_app_331 IMPLEMENTATION. ENDCASE. -client->view_model_update( ). + client->view_model_update( ). ENDMETHOD. @@ -86,8 +86,8 @@ client->view_model_update( ). * * ASSIGN ms_struc->* TO FIELD-SYMBOL(). - SELECT SINGLE * FROM z2ui5_t_01 - INTO CORRESPONDING FIELDS OF @ms_STRUC. + SELECT SINGLE * FROM z2ui5_t_01 + INTO CORRESPONDING FIELDS OF @ms_STRUC. * CATCH cx_root. diff --git a/src/z2ui5_cl_demo_app_332.clas.abap b/src/z2ui5_cl_demo_app_332.clas.abap index 9398038a..1874a05e 100644 --- a/src/z2ui5_cl_demo_app_332.clas.abap +++ b/src/z2ui5_cl_demo_app_332.clas.abap @@ -40,8 +40,7 @@ CLASS z2ui5_cl_demo_app_332 IMPLEMENTATION. ENDCASE. - - client->view_model_update( ). + client->view_model_update( ). ENDMETHOD. @@ -64,7 +63,7 @@ CLASS z2ui5_cl_demo_app_332 IMPLEMENTATION. LOOP AT mo_table_obj->mt_layout REFERENCE INTO DATA(layout). - index += 1. + index = index + 1. ASSIGN COMPONENT layout->name OF STRUCTURE mo_table_obj->mr_data->* TO FIELD-SYMBOL(). " assign component layout->name of structure ms_struc to field-symbol(). From 553eee3cb35770aee0b66e052af84b088b4e1b18 Mon Sep 17 00:00:00 2001 From: Viktor Hoffmann Date: Tue, 1 Jul 2025 09:41:08 +0000 Subject: [PATCH 3/3] RTTI Sample Cell Binding --- src/z2ui5_cl_demo_app_000.clas.abap | 8 ++++++++ src/z2ui5_cl_demo_app_330.clas.xml | 2 +- src/z2ui5_cl_demo_app_331.clas.abap | 4 ++++ src/z2ui5_cl_demo_app_331.clas.xml | 2 +- src/z2ui5_cl_demo_app_332.clas.abap | 4 ++++ 5 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/z2ui5_cl_demo_app_000.clas.abap b/src/z2ui5_cl_demo_app_000.clas.abap index ef438079..745e2851 100644 --- a/src/z2ui5_cl_demo_app_000.clas.abap +++ b/src/z2ui5_cl_demo_app_000.clas.abap @@ -1940,6 +1940,14 @@ CLASS z2ui5_cl_demo_app_000 IMPLEMENTATION. mode = 'LineMode' class = 'sapUiTinyMarginEnd sapUiTinyMarginBottom' ). + panel->generic_tile( header = 'Model VI' + subheader = 'RTTI Data - Struc and Cell Binding' + press = client->_event( 'Z2UI5_CL_DEMO_APP_332' ) + mode = 'LineMode' + class = 'sapUiTinyMarginEnd sapUiTinyMarginBottom' + ). + + panel->generic_tile( header = 'Date Format Error in internal table' diff --git a/src/z2ui5_cl_demo_app_330.clas.xml b/src/z2ui5_cl_demo_app_330.clas.xml index e47d74cb..0acde9d7 100644 --- a/src/z2ui5_cl_demo_app_330.clas.xml +++ b/src/z2ui5_cl_demo_app_330.clas.xml @@ -5,7 +5,7 @@ Z2UI5_CL_DEMO_APP_330 E - basic - popups with ref from prev App + RTTI with Struc 1 X X diff --git a/src/z2ui5_cl_demo_app_331.clas.abap b/src/z2ui5_cl_demo_app_331.clas.abap index eb510a42..b029fa3b 100644 --- a/src/z2ui5_cl_demo_app_331.clas.abap +++ b/src/z2ui5_cl_demo_app_331.clas.abap @@ -35,6 +35,10 @@ CLASS z2ui5_cl_demo_app_331 IMPLEMENTATION. ENDCASE. + IF ms_struc IS INITIAL. + client->message_toast_display( 'ERROR - MS_STRUC is initial!' ). + ENDIF. + client->view_model_update( ). ENDMETHOD. diff --git a/src/z2ui5_cl_demo_app_331.clas.xml b/src/z2ui5_cl_demo_app_331.clas.xml index 93d75a6b..234eb69c 100644 --- a/src/z2ui5_cl_demo_app_331.clas.xml +++ b/src/z2ui5_cl_demo_app_331.clas.xml @@ -5,7 +5,7 @@ Z2UI5_CL_DEMO_APP_331 E - basic - popups with ref from prev App + RTTI - Struc 1 X X diff --git a/src/z2ui5_cl_demo_app_332.clas.abap b/src/z2ui5_cl_demo_app_332.clas.abap index 1874a05e..ecf32ec2 100644 --- a/src/z2ui5_cl_demo_app_332.clas.abap +++ b/src/z2ui5_cl_demo_app_332.clas.abap @@ -40,6 +40,10 @@ CLASS z2ui5_cl_demo_app_332 IMPLEMENTATION. ENDCASE. + IF ms_struc IS INITIAL. + client->message_toast_display( 'ERROR - MS_STRUC is initial!' ). + ENDIF. + client->view_model_update( ). ENDMETHOD.