Skip to content

New Sample #535

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 1 commit 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
7 changes: 6 additions & 1 deletion src/z2ui5_cl_demo_app_000.clas.abap
Original file line number Diff line number Diff line change
Expand Up @@ -2011,7 +2011,12 @@ CLASS z2ui5_cl_demo_app_000 IMPLEMENTATION.
mode = 'LineMode'
class = 'sapUiTinyMarginEnd sapUiTinyMarginBottom'
).

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



Expand Down
25 changes: 13 additions & 12 deletions src/z2ui5_cl_demo_app_337.clas.abap
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,10 @@ CLASS z2ui5_cl_demo_app_337 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 ).
mo_layout_obj_2 = z2ui5_cl_demo_app_333=>factory( i_data = REF #( ms_data )
Expand All @@ -53,15 +57,15 @@ CLASS z2ui5_cl_demo_app_337 IMPLEMENTATION.
client->nav_app_call( app ).
ENDCASE.

" Kommen wir aus einer anderen APP
IF client->get( )-check_on_navigated = abap_true.
TRY.
" Kommen wir aus einer anderen APP
DATA(obj) = CAST z2ui5_cl_demo_app_336( client->get_app( client->get( )-s_draft-id_prev_app ) ).
get_data( ).
CATCH cx_root.
ENDTRY.
ENDIF.
* " Kommen wir aus einer anderen APP
* IF client->get( )-check_on_navigated = abap_true.
* TRY.
* " Kommen wir aus einer anderen APP
* DATA(obj) = CAST z2ui5_cl_demo_app_336( client->get_app( client->get( )-s_draft-id_prev_app ) ).
* get_data( ).
* CATCH cx_root.
* ENDTRY.
* ENDIF.



Expand Down Expand Up @@ -90,9 +94,6 @@ CLASS z2ui5_cl_demo_app_337 IMPLEMENTATION.
ENDIF.





client->view_model_update( ).

ENDMETHOD.
Expand Down
16 changes: 9 additions & 7 deletions src/z2ui5_cl_demo_app_348.clas.abap
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ CLASS z2ui5_cl_demo_app_348 DEFINITION PUBLIC.
PUBLIC SECTION.
INTERFACES z2ui5_if_app.

DATA ms_data TYPE z2ui5_t_01.
DATA ms_struc TYPE z2ui5_t_01.
DATA mo_layout_obj TYPE REF TO z2ui5_cl_demo_app_333.

METHODS get_data.
Expand All @@ -17,6 +17,7 @@ CLASS z2ui5_cl_demo_app_348 DEFINITION PUBLIC.
PRIVATE SECTION.
METHODS xml_form
IMPORTING
i_data type ref to data
i_page TYPE REF TO z2ui5_cl_xml_view
i_client TYPE REF TO z2ui5_if_client.

Expand All @@ -31,7 +32,7 @@ CLASS z2ui5_cl_demo_app_348 IMPLEMENTATION.

get_data( ).

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

ui5_view_display( client ).
Expand All @@ -54,13 +55,13 @@ CLASS z2ui5_cl_demo_app_348 IMPLEMENTATION.
client->message_toast_display( 'ERROR - mo_layout_obj->mr_data is not bound!' ).
ENDIF.

IF ms_data IS INITIAL.
IF ms_struc 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.
IF <val> <> ms_struc.
client->message_toast_display( 'ERROR - mo_layout_obj_2->mr_data <> ms_data!' ).
ENDIF.

Expand All @@ -78,7 +79,8 @@ CLASS z2ui5_cl_demo_app_348 IMPLEMENTATION.
press = client->_event( 'GO' )
type = 'Success' ).

xml_form( i_page = page
xml_form( i_data = ref #( ms_struc )
i_page = page
i_client = client ).

client->view_display( page ).
Expand All @@ -93,7 +95,7 @@ CLASS z2ui5_cl_demo_app_348 IMPLEMENTATION.
id_prev_app_stack,
timestampl
FROM z2ui5_t_01
INTO CORRESPONDING FIELDS OF @ms_data.
INTO CORRESPONDING FIELDS OF @ms_struc.

ENDMETHOD.

Expand All @@ -110,7 +112,7 @@ CLASS z2ui5_cl_demo_app_348 IMPLEMENTATION.

index = index + 1.

ASSIGN COMPONENT layout->name OF STRUCTURE ms_data TO FIELD-SYMBOL(<value>).
ASSIGN COMPONENT layout->name OF STRUCTURE i_data->* TO FIELD-SYMBOL(<value>).
" assign component layout->name of structure ms_struc to field-symbol(<value>).
IF <value> IS NOT ASSIGNED.
RETURN.
Expand Down
188 changes: 188 additions & 0 deletions src/z2ui5_cl_demo_app_349.clas.abap
Original file line number Diff line number Diff line change
@@ -0,0 +1,188 @@
CLASS z2ui5_cl_demo_app_349 DEFINITION PUBLIC.

PUBLIC SECTION.
INTERFACES z2ui5_if_app.

DATA mt_data TYPE STANDARD TABLE OF z2ui5_t_01.
DATA ms_data TYPE z2ui5_t_01.
DATA mo_layout_obj TYPE REF TO z2ui5_cl_demo_app_333.
DATA mo_layout_obj_2 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.

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_349 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 ).
mo_layout_obj_2 = z2ui5_cl_demo_app_333=>factory( i_data = REF #( ms_data )
vis_cols = 3 ).
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 mo_layout_obj_2->mr_data IS NOT BOUND.
client->message_toast_display( 'ERROR - mo_layout_obj_2->mr_data is not bound!' ).
ENDIF.

IF mt_data IS INITIAL.
client->message_toast_display( 'ERROR - mt_data is INITIAL!' ).
ENDIF.
IF ms_data IS INITIAL.
client->message_toast_display( 'ERROR - ms_data is INITIAL!' ).
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.
ASSIGN mo_layout_obj_2->mr_data->* TO FIELD-SYMBOL(<val2>).
IF <val2> <> 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_table( i_page = page
i_client = client ).

xml_form( 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.

ms_data = VALUE #( mt_data[ 1 ] OPTIONAL ).

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_349.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_349</CLSNAME>
<LANGU>E</LANGU>
<DESCRIPT>RTTI - Table with Class Data and Popup</DESCRIPT>
<STATE>1</STATE>
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>
<UNICODE>X</UNICODE>
</VSEOCLASS>
</asx:values>
</asx:abap>
</abapGit>