Skip to content

New RTTI Samples #534

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Jul 15, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions src/z2ui5_cl_demo_app_000.clas.abap
Original file line number Diff line number Diff line change
Expand Up @@ -1998,6 +1998,23 @@ CLASS z2ui5_cl_demo_app_000 IMPLEMENTATION.
class = 'sapUiTinyMarginEnd sapUiTinyMarginBottom'
).

panel->generic_tile( header = 'Model XV'
subheader = 'Check Error Table with Ref'
press = client->_event( 'Z2UI5_CL_DEMO_APP_347' )
mode = 'LineMode'
class = 'sapUiTinyMarginEnd sapUiTinyMarginBottom'
).

panel->generic_tile( header = 'Model XVI'
subheader = 'Check Error Sruc with Ref'
press = client->_event( 'Z2UI5_CL_DEMO_APP_348' )
mode = 'LineMode'
class = 'sapUiTinyMarginEnd sapUiTinyMarginBottom'
).




panel->generic_tile( header = 'Date Format Error in internal table'
subheader = ''
press = client->_event( 'Z2UI5_CL_DEMO_APP_118' )
Expand Down
4 changes: 3 additions & 1 deletion src/z2ui5_cl_demo_app_345.clas.abap
Original file line number Diff line number Diff line change
Expand Up @@ -127,8 +127,10 @@ CLASS z2ui5_cl_demo_app_345 IMPLEMENTATION.

METHOD xml_table.

ASSIGN i_data->* to FIELD-SYMBOL(<data>).

DATA(table) = i_page->table( width = 'auto'
items = i_client->_bind( i_data->* ) ).
items = i_client->_bind( <data> ) ).

DATA(columns) = table->columns( ).

Expand Down
144 changes: 144 additions & 0 deletions src/z2ui5_cl_demo_app_347.clas.abap
Original file line number Diff line number Diff line change
@@ -0,0 +1,144 @@
CLASS z2ui5_cl_demo_app_347 DEFINITION PUBLIC.

PUBLIC SECTION.
INTERFACES z2ui5_if_app.

DATA mt_data TYPE STANDARD TABLE OF z2ui5_t_01.
DATA mo_layout_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.
METHODS xml_table
IMPORTING
i_page TYPE REF TO z2ui5_cl_xml_view
i_client TYPE REF TO z2ui5_if_client.



ENDCLASS.


CLASS z2ui5_cl_demo_app_347 IMPLEMENTATION.

METHOD z2ui5_if_app~main.

IF client->check_on_init( ).

get_data( ).

mo_layout_obj = z2ui5_cl_demo_app_333=>factory( i_data = REF #( mt_data )
vis_cols = 5 ).

ui5_view_display( client ).
ENDIF.




CASE client->get( )-event.
WHEN 'BACK'.
client->nav_app_leave( ).
WHEN 'GO'.
DATA(app) = z2ui5_cl_demo_app_336=>factory( ).
client->nav_app_call( app ).
ENDCASE.

IF client->get( )-check_on_navigated = abap_true
AND client->check_on_init( ) = abap_false.
ui5_view_display( client ).
ENDIF.


IF mo_layout_obj->mr_data IS NOT BOUND.
client->message_toast_display( 'ERROR - mo_layout_obj->mr_data is not bound!' ).
ENDIF.

IF mt_data IS INITIAL.
client->message_toast_display( 'ERROR - mt_data is inital!' ).
ENDIF.

ASSIGN mo_layout_obj->mr_data->* TO FIELD-SYMBOL(<val>).
IF <val> <> mt_data.
client->message_toast_display( 'ERROR - mo_layout_obj_2->mr_data <> mt_data!' ).
ENDIF.

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 = 'CALL Next App'
press = client->_event( 'GO' )
type = 'Success' ).

xml_table( i_page = page
i_client = client ).



client->view_display( page ).

ENDMETHOD.

METHOD xml_table.

DATA(table) = i_page->table( width = 'auto'
items = i_client->_bind_edit( val = mt_data ) ).

DATA(columns) = table->columns( ).

LOOP AT mo_layout_obj->ms_data-t_layout REFERENCE INTO DATA(layout).
DATA(lv_index) = sy-tabix.

columns->column( visible = i_client->_bind( val = layout->visible
tab = mo_layout_obj->ms_data-t_layout
tab_index = lv_index )
)->text( layout->name ).

ENDLOOP.

DATA(column_list_item) = columns->get_parent( )->items(
)->column_list_item( valign = 'Middle'
type = `Inactive` ).

DATA(cells) = column_list_item->cells( ).

LOOP AT mo_layout_obj->ms_data-t_layout REFERENCE INTO layout.

lv_index = sy-tabix.

cells->object_identifier( text = |\{{ layout->name }\}| ). "."|\{{ layout->fname }\}| ).

ENDLOOP.

ENDMETHOD.

METHOD get_data.

SELECT id,
id_prev,
id_prev_app,
id_prev_app_stack,
timestampl
FROM z2ui5_t_01
INTO CORRESPONDING FIELDS OF TABLE @mt_data
UP TO 10 ROWS.


ENDMETHOD.



ENDCLASS.
16 changes: 16 additions & 0 deletions src/z2ui5_cl_demo_app_347.clas.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<VSEOCLASS>
<CLSNAME>Z2UI5_CL_DEMO_APP_347</CLSNAME>
<LANGU>E</LANGU>
<DESCRIPT>RTTI - Table with Ref in Object</DESCRIPT>
<STATE>1</STATE>
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>
<UNICODE>X</UNICODE>
</VSEOCLASS>
</asx:values>
</asx:abap>
</abapGit>
131 changes: 131 additions & 0 deletions src/z2ui5_cl_demo_app_348.clas.abap
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
CLASS z2ui5_cl_demo_app_348 DEFINITION PUBLIC.

PUBLIC SECTION.
INTERFACES z2ui5_if_app.

DATA ms_data TYPE z2ui5_t_01.
DATA mo_layout_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.
METHODS xml_form
IMPORTING
i_page TYPE REF TO z2ui5_cl_xml_view
i_client TYPE REF TO z2ui5_if_client.

ENDCLASS.


CLASS z2ui5_cl_demo_app_348 IMPLEMENTATION.

METHOD z2ui5_if_app~main.

IF client->check_on_init( ).

get_data( ).

mo_layout_obj = z2ui5_cl_demo_app_333=>factory( i_data = REF #( ms_data )
vis_cols = 5 ).

ui5_view_display( client ).
ENDIF.

CASE client->get( )-event.
WHEN 'BACK'.
client->nav_app_leave( ).
WHEN 'GO'.
DATA(app) = z2ui5_cl_demo_app_336=>factory( ).
client->nav_app_call( app ).
ENDCASE.

IF client->get( )-check_on_navigated = abap_true
AND client->check_on_init( ) = abap_false.
ui5_view_display( client ).
ENDIF.

IF mo_layout_obj->mr_data IS NOT BOUND.
client->message_toast_display( 'ERROR - mo_layout_obj->mr_data is not bound!' ).
ENDIF.

IF ms_data IS INITIAL.
" TODO: check spelling: inital (typo) -> initial (ABAP cleaner)
client->message_toast_display( 'ERROR - ms_data is inital!' ).
ENDIF.

ASSIGN mo_layout_obj->mr_data->* TO FIELD-SYMBOL(<val>).
IF <val> <> ms_data.
client->message_toast_display( 'ERROR - mo_layout_obj_2->mr_data <> ms_data!' ).
ENDIF.

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 = 'CALL Next App'
press = client->_event( 'GO' )
type = 'Success' ).

xml_form( i_page = page
i_client = client ).

client->view_display( page ).

ENDMETHOD.

METHOD get_data.

SELECT SINGLE id,
id_prev,
id_prev_app,
id_prev_app_stack,
timestampl
FROM z2ui5_t_01
INTO CORRESPONDING FIELDS OF @ms_data.

ENDMETHOD.

METHOD xml_form.

DATA(form) = i_page->simple_form( editable = abap_true
layout = `ResponsiveGridLayout`
adjustlabelspan = abap_true
)->content( ns = `form` ).

DATA(index) = 0.

LOOP AT mo_layout_obj->ms_data-t_layout REFERENCE INTO DATA(layout).

index = index + 1.

ASSIGN COMPONENT layout->name OF STRUCTURE ms_data TO FIELD-SYMBOL(<value>).
" assign component layout->name of structure ms_struc to field-symbol(<value>).
IF <value> IS NOT ASSIGNED.
RETURN.
ENDIF.

DATA(line) = form->label( wrapping = abap_false
text = layout->name ).

line->input( value = i_client->_bind( <value> )
visible = i_client->_bind( val = layout->visible
tab = mo_layout_obj->ms_data-t_layout
tab_index = index )
enabled = abap_false ).
ENDLOOP.

ENDMETHOD.

ENDCLASS.
16 changes: 16 additions & 0 deletions src/z2ui5_cl_demo_app_348.clas.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<VSEOCLASS>
<CLSNAME>Z2UI5_CL_DEMO_APP_348</CLSNAME>
<LANGU>E</LANGU>
<DESCRIPT>RTTI - Struc with Ref in Object</DESCRIPT>
<STATE>1</STATE>
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>
<UNICODE>X</UNICODE>
</VSEOCLASS>
</asx:values>
</asx:abap>
</abapGit>