Skip to content

Update Sample 190 #175

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 3 commits into from
Apr 25, 2024
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
25 changes: 21 additions & 4 deletions src/z2ui5_cl_demo_app_005.clas.abap
Original file line number Diff line number Diff line change
@@ -1,25 +1,39 @@
CLASS Z2UI5_CL_DEMO_APP_005 DEFINITION PUBLIC.
CLASS z2ui5_cl_demo_app_005 DEFINITION PUBLIC.

PUBLIC SECTION.

INTERFACES Z2UI5_if_app.
INTERFACES z2ui5_if_app.

DATA value1 TYPE int4.
DATA value2 TYPE int4.
DATA initialized TYPE abap_bool.

PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.



CLASS Z2UI5_CL_DEMO_APP_005 IMPLEMENTATION.
CLASS z2ui5_cl_demo_app_005 IMPLEMENTATION.


METHOD z2ui5_if_app~main.

METHOD Z2UI5_if_app~main.
IF initialized = abap_false.
initialized = abap_true.
value1 = 10.
value2 = 90.
ENDIF.

CASE client->get( )-event.

WHEN 'BACK'.
client->nav_app_leave( client->get_app( client->get( )-s_draft-id_prev_app_stack ) ).

WHEN 'SLIDER_CHANGE'.

client->message_toast_display( |Range Slider { cl_abap_char_utilities=>newline }value1 { value1 } { cl_abap_char_utilities=>newline }value2 { value2 }| ).

ENDCASE.

DATA(view) = z2ui5_cl_xml_view=>factory( ).
Expand All @@ -32,7 +46,7 @@

DATA(grid) = page->grid( 'L12 M12 S12' )->content( 'layout' ).

grid->simple_form( title = 'More Controls' editable = abap_true )->content( 'form'

Check failure on line 49 in src/z2ui5_cl_demo_app_005.clas.abap

View check run for this annotation

abaplint / abaplint

Method importing parameter "VALUE" does not exist

https://rules.abaplint.org/check_syntax

Check failure on line 49 in src/z2ui5_cl_demo_app_005.clas.abap

View check run for this annotation

abaplint / abaplint / abap_standard_readiness

Method importing parameter "VALUE" does not exist

https://rules.abaplint.org/check_syntax

Check failure on line 49 in src/z2ui5_cl_demo_app_005.clas.abap

View check run for this annotation

abaplint / abaplint / abap_cloud_readiness

Method importing parameter "VALUE" does not exist

https://rules.abaplint.org/check_syntax
)->label( 'Range Slider'
)->range_slider(
max = '100'
Expand All @@ -44,6 +58,9 @@
labelinterval = '2'
width = '80%'
class = 'sapUiTinyMargin'
value = client->_bind_edit( value1 )
value2 = client->_bind_edit( value2 )
change = client->_event( 'SLIDER_CHANGE' )
).
client->view_display( view->stringify( ) ).

Expand Down
12 changes: 12 additions & 0 deletions src/z2ui5_cl_demo_app_190.clas.abap
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ CLASS z2ui5_cl_demo_app_190 DEFINITION
DATA mv_table TYPE string.
DATA mt_table TYPE REF TO data.
DATA mt_table_tmp TYPE REF TO data.
* DATA ms_table_row TYPE REF TO data.
DATA mt_comp TYPE abap_component_tab.
DATA ms_fixval TYPE REF TO data.

Expand Down Expand Up @@ -39,6 +40,9 @@ ENDCLASS.
CLASS z2ui5_cl_demo_app_190 IMPLEMENTATION.

METHOD on_event.

FIELD-SYMBOLS <row> TYPE any.

CASE client->get( )-event.

WHEN 'BACK'.
Expand Down Expand Up @@ -87,6 +91,12 @@ CLASS z2ui5_cl_demo_app_190 IMPLEMENTATION.
cells->object_identifier( text = '{' && comp-name && '}' ).
ENDLOOP.

page->footer( )->overflow_toolbar(
)->toolbar_spacer(
)->button( text = 'Save'
press = client->_event( 'BUTTON' )
type = 'Success' ).

IF mo_parent_view IS INITIAL.

client->view_display( page->get_root( )->xml_get( ) ).
Expand All @@ -112,6 +122,8 @@ CLASS z2ui5_cl_demo_app_190 IMPLEMENTATION.
ENDMETHOD.

METHOD set_app_data.
" TODO: parameter COUNT is never used (ABAP cleaner)

mv_table = table.
ENDMETHOD.

Expand Down
2 changes: 1 addition & 1 deletion src/z2ui5_cl_demo_app_193.clas.abap
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ CLASS z2ui5_cl_demo_app_193 IMPLEMENTATION.

METHOD xml_parse.

IF mt_kopf_xml IS NOT INITIAL.
IF mt_pos_xml IS NOT INITIAL.
mt_kopf = z2ui5_cl_util_api=>xml_srtti_parse( mt_kopf_xml ).
CLEAR mt_kopf_xml.
ENDIF.
Expand Down
259 changes: 259 additions & 0 deletions src/z2ui5_cl_demo_app_194.clas.abap
Original file line number Diff line number Diff line change
@@ -0,0 +1,259 @@
CLASS z2ui5_cl_demo_app_194 DEFINITION
PUBLIC
CREATE PUBLIC.

PUBLIC SECTION.
INTERFACES z2ui5_if_app.

DATA mv_view_display TYPE abap_bool.
DATA mo_parent_view TYPE REF TO z2ui5_cl_xml_view.

DATA mv_table TYPE string.
DATA mt_table TYPE REF TO data.
DATA mt_table_tmp TYPE REF TO data.
DATA ms_table_row TYPE REF TO data.
DATA mt_comp TYPE abap_component_tab.
DATA ms_fixval TYPE REF TO data.

METHODS set_app_data
IMPORTING !count TYPE string
!table TYPE string.

PROTECTED SECTION.
DATA client TYPE REF TO z2ui5_if_client.
DATA check_initialized TYPE abap_bool.

METHODS on_init.
METHODS on_event.

METHODS render_main.

PRIVATE SECTION.
METHODS get_data.

METHODS get_comp
RETURNING VALUE(result) TYPE abap_component_tab.

METHODS get_fixval.
ENDCLASS.

CLASS z2ui5_cl_demo_app_194 IMPLEMENTATION.

METHOD on_event.

FIELD-SYMBOLS <row> TYPE any.

CASE client->get( )-event.

WHEN 'BACK'.

client->nav_app_leave( client->get_app( client->get( )-s_draft-id_prev_app_stack ) ).

WHEN 'BUTTON'.

LOOP AT mt_comp REFERENCE INTO DATA(comp).

ASSIGN ms_table_row->* TO <row>.
ASSIGN COMPONENT comp->name OF STRUCTURE <row> TO FIELD-SYMBOL(<val>).
IF <val> IS NOT ASSIGNED.
CONTINUE.
ELSE.

client->_bind( val = <val> ).

ENDIF.

ENDLOOP.

ENDCASE.
ENDMETHOD.

METHOD on_init.
get_data( ).
render_main( ).
ENDMETHOD.

METHOD render_main.

IF mo_parent_view IS INITIAL.
DATA(page) = z2ui5_cl_xml_view=>factory( ).
ELSE.
page = mo_parent_view->get( `Page` ).
ENDIF.

FIELD-SYMBOLS <tab> TYPE data.
ASSIGN mt_table->* TO <tab>.

DATA(table) = page->table( growing = 'true'
width = 'auto'
items = client->_bind( <tab> )
* headertext = mv_table
).

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

LOOP AT mt_comp INTO DATA(comp).

columns->column( )->text( comp-name ).

ENDLOOP.

DATA(cells) = columns->get_parent( )->items(
)->column_list_item( valign = 'Middle'
type = 'Navigation'
)->cells( ).

LOOP AT mt_comp INTO comp.
cells->object_identifier( text = '{' && comp-name && '}' ).
ENDLOOP.

page->footer( )->overflow_toolbar(
)->toolbar_spacer(
)->button( text = 'Save'
press = client->_event( 'BUTTON' )
type = 'Success' ).

IF mo_parent_view IS INITIAL.

client->view_display( page->get_root( )->xml_get( ) ).

ELSE.

mv_view_display = abap_true.

ENDIF.
ENDMETHOD.

METHOD z2ui5_if_app~main.
me->client = client.

IF check_initialized = abap_false.
check_initialized = abap_true.

on_init( ).

ENDIF.

on_event( ).
ENDMETHOD.

METHOD set_app_data.
" TODO: parameter COUNT is never used (ABAP cleaner)

mv_table = table.
ENDMETHOD.

METHOD get_data.

FIELD-SYMBOLS <table> TYPE STANDARD TABLE.
FIELD-SYMBOLS <table_tmp> TYPE STANDARD TABLE.

mt_comp = get_comp( ).

TRY.

DATA(new_struct_desc) = cl_abap_structdescr=>create( mt_comp ).

DATA(new_table_desc) = cl_abap_tabledescr=>create( p_line_type = new_struct_desc
p_table_kind = cl_abap_tabledescr=>tablekind_std ).

CREATE DATA mt_table TYPE HANDLE new_table_desc.
* CREATE DATA mt_table_del TYPE HANDLE new_table_desc.
CREATE DATA mt_table_tmp TYPE HANDLE new_table_desc.
CREATE DATA ms_table_row TYPE HANDLE new_struct_desc.

ASSIGN mt_table->* TO <table>.

SELECT *
FROM (mv_table)
INTO CORRESPONDING FIELDS OF TABLE @<table>
UP TO '100' ROWS.

CATCH cx_root.

ENDTRY.

ASSIGN mt_table_tmp->* TO <table_tmp>.

<table_tmp> = <table>.
get_fixval( ).

ENDMETHOD.

METHOD get_fixval.

TYPES:
BEGIN OF fixvalue,
low TYPE string,
high TYPE string,
option TYPE string,
ddlanguage TYPE string,
ddtext TYPE string,
END OF fixvalue.
TYPES fixvalues TYPE STANDARD TABLE OF fixvalue WITH DEFAULT KEY.

DATA comp TYPE cl_abap_structdescr=>component_table.
DATA structdescr TYPE REF TO cl_abap_structdescr.
DATA lt_fixval TYPE fixvalues.

LOOP AT mt_comp REFERENCE INTO DATA(dfies).

comp = VALUE cl_abap_structdescr=>component_table(
BASE comp
( name = dfies->name
type = CAST #( cl_abap_datadescr=>describe_by_data( lt_fixval ) ) ) ).
ENDLOOP.

structdescr = cl_abap_structdescr=>create( comp ).

CREATE DATA ms_fixval TYPE HANDLE structdescr.

* LOOP AT mt_comp REFERENCE INTO dfies.
*
* ASSIGN ms_fixval->* TO <s_fixval>.
* ASSIGN COMPONENT dfies->name OF STRUCTURE <s_fixval> TO FIELD-SYMBOL(<fixval>).
*
* IF <fixval> IS NOT ASSIGNED.
* CONTINUE.
* ENDIF.
*
*
* ENDLOOP.
ENDMETHOD.

METHOD get_comp.
TRY.

DATA index TYPE int4.

TRY.

cl_abap_typedescr=>describe_by_name( EXPORTING p_name = mv_table
RECEIVING p_descr_ref = DATA(typedesc)
EXCEPTIONS type_not_found = 1
OTHERS = 2 ).

DATA(structdesc) = CAST cl_abap_structdescr( typedesc ).
DATA(comp) = structdesc->get_components( ).

LOOP AT comp INTO DATA(com).
IF com-as_include = abap_false.
APPEND com TO result.
ENDIF.
ENDLOOP.

CATCH cx_root.

ENDTRY.

DATA(component) = VALUE cl_abap_structdescr=>component_table(
( name = 'ROW_ID'
type = CAST #( cl_abap_datadescr=>describe_by_data( index ) ) ) ).

APPEND LINES OF component TO result.

CATCH cx_root.
ENDTRY.
ENDMETHOD.

ENDCLASS.
16 changes: 16 additions & 0 deletions src/z2ui5_cl_demo_app_194.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_194</CLSNAME>
<LANGU>E</LANGU>
<DESCRIPT>Deep Structure Sub App</DESCRIPT>
<STATE>1</STATE>
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>
<UNICODE>X</UNICODE>
</VSEOCLASS>
</asx:values>
</asx:abap>
</abapGit>
Loading