table selection mode (#112)

* Update README.md

* table selection modes

* Update README.md

* table selection modes

* table selection mode
This commit is contained in:
oblomov 2023-03-20 17:07:53 +01:00
parent 83abc8911e
commit 7154968aea
10 changed files with 281 additions and 341 deletions

View File

@ -4,8 +4,8 @@ Development of UI5 Apps in pure ABAP. Follow this project on [twitter](https://t
### Project Features
* easy to use implement just one interface for a standalone UI5 application
* pure ABAP development in 100% ABAP source code (no JavaScript, EML, DDL or Customizing)
* low system footprint - based on a plain http handler (no BSP, OData, BOPF, CDS, FE or RAP)
* pure ABAP development in 100% ABAP source code (no JavaScript, DDL, EML or Customizing)
* low system footprint - based on a plain http handler (no BSP, OData, CDS, BOPF, FE or RAP)
* cloud and on-premise ready works with both language versions (ABAP for Cloud, Standard ABAP)
* high system compatibility runs on all available ABAP stacks (NW 7.02 to ABAP 2302)
* easy installation abapGit project, no additional app deployment needed
@ -32,7 +32,7 @@ Works with all available ABAP stacks and language versions:
* S/4 Public Cloud ABAP Environment (ABAP for Cloud)
* S/4 Private Cloud or On-Premise (ABAP for Cloud, Standard ABAP)
* R/3 NetWeaver AS ABAP 7.50 or higher (Standard ABAP)
* R/3 NetWeaver AS ABAP 7.02 to 7.40 - use the low syntax [branch](https://github.com/oblomov-dev/ABAP2UI5/tree/main_v702)
* R/3 NetWeaver AS ABAP 7.02 to 7.42 - use the low syntax [branch](https://github.com/oblomov-dev/ABAP2UI5/tree/main_v702)
Install with [abapGit](https://abapgit.org), create a new HTTP service and call abap2UI5 [(more information)](https://github.com/oblomov-dev/abap2ui5/wiki).

View File

@ -44,10 +44,12 @@ CLASS z2ui5_cl_app_demo_00 IMPLEMENTATION.
DATA(view) = client->factory_view( ).
DATA(page) = view->page( title = 'abap2UI5 - Demo Section'
class = 'sapUiContentPadding sapUiResponsivePadding--subHeader sapUiResponsivePadding--content sapUiResponsivePadding--footer'
navbuttontap = view->_event( 'BACK' ) ).
page->header_content(
)->toolbar_spacer(
)->link( text = 'SCN' href = 'https://blogs.sap.com/tag/abap2ui5/'
)->link( text = 'Twitter' href = 'https://twitter.com/OblomovDev'
)->link( text = 'GitHub' href = 'https://github.com/oblomov-dev/abap2ui5' ).
@ -65,7 +67,7 @@ CLASS z2ui5_cl_app_demo_00 IMPLEMENTATION.
)->button( text = 'Layout (Header, Footer, Grid)' press = view->_event( 'z2ui5_cl_app_demo_10' )
)->button( text = 'Scrolling & Focus' press = view->_event( 'z2ui5_cl_app_demo_22' )
)->button( text = 'Popups' press = view->_event( 'Z2UI5_CL_APP_DEMO_21' )
" )->button( text = 'Popups II (F4 Help)' press = view->_event( '0101' )
)->button( text = 'Popups & Flow Logic' press = view->_event( 'z2ui5_cl_app_demo_12' )
).
grid->simple_form( 'HowTo - Selection-Screen' )->content( 'f'
@ -77,7 +79,7 @@ CLASS z2ui5_cl_app_demo_00 IMPLEMENTATION.
grid->simple_form( 'HowTo - Tables' )->content( 'f'
)->button( text = 'List' press = view->_event( 'z2ui5_cl_app_demo_03' )
)->button( text = 'Toolbar, Scroll Container' press = view->_event( 'z2ui5_cl_app_demo_06' )
" )->button( text = 'Selection Modes' press = view->_event( 'z2ui5_cl_app_demo_19' )
)->button( text = 'Selection Modes' press = view->_event( 'z2ui5_cl_app_demo_19' )
)->button( text = 'Editable' press = view->_event( 'z2ui5_cl_app_demo_11' )
).
@ -86,7 +88,7 @@ CLASS z2ui5_cl_app_demo_00 IMPLEMENTATION.
DATA(form) = grid->simple_form( 'Applications and Examples' )->vbox( ).
form->flex_box( class = 'columns'
)->button( text = 'MIME Editor' press = view->_event( 'MIME_EDITOR' )
)->button( text = 'MIME Editor' press = view->_event( 'Z2UI5_CL_APP_DEMO_14' )
)->get(
)->layout_data(
)->flex_item_data(
@ -102,7 +104,7 @@ CLASS z2ui5_cl_app_demo_00 IMPLEMENTATION.
).
form->flex_box( class = 'columns'
)->button( text = 'Table Maintenance' press = view->_event( 'TABLE_MAINTENANCE' )
)->button( text = 'Table Maintenance' press = view->_event( 'Z2UI5_CL_APP_DEMO_13' )
)->get(
)->layout_data(
)->flex_item_data(

View File

@ -45,7 +45,7 @@ CLASS z2ui5_cl_app_demo_01 IMPLEMENTATION.
)->label( 'quantity'
)->input( view->_bind( quantity )
)->label( 'product'
)->input( value = product editable = abap_False
)->input( value = product enabled = abap_False
)->button( text = 'post' press = view->_event( 'BUTTON_POST' ) ).
ENDCASE.

View File

@ -82,7 +82,10 @@ CLASS z2ui5_cl_app_demo_09 IMPLEMENTATION.
DATA(view) = client->factory_view( 'MAIN' ).
DATA(page) = view->page( title = 'abap2UI5 - Value Help Examples' navbuttontap = view->_event( 'BACK' ) ).
page->header_content( )->link( text = 'Go to Source Code' href = client->get( )-s_request-url_source_code ).
page->header_content(
)->link( text = 'Demo' href = 'https://twitter.com/OblomovDev/status/1637470531136921600'
)->link( text = 'Source_Code' href = client->get( )-s_request-url_source_code
).
DATA(grid) = page->grid( 'XL12 L12 M12 S12' )->content( 'l' ).

View File

@ -68,7 +68,10 @@ CLASS z2ui5_cl_app_demo_11 IMPLEMENTATION.
DATA(view) = client->factory_view( ).
DATA(page) = view->page( title = 'abap2UI5 - Tables and editable' navbuttontap = view->_event( 'BACK' ) ).
page->header_content( )->link( text = 'Go to Source Code' href = client->get( )-s_request-url_source_code ).
page->header_content(
)->link( text = 'Demo' href = 'https://twitter.com/OblomovDev/status/1630240894581608448'
)->link( text = 'Source_Code' href = client->get( )-s_request-url_source_code
).

View File

@ -4,21 +4,6 @@ CLASS z2ui5_cl_app_demo_12 DEFINITION PUBLIC.
INTERFACES z2ui5_if_app.
TYPES:
BEGIN OF ty_row,
title TYPE string,
value TYPE string,
descr TYPE string,
icon TYPE string,
info TYPE string,
checkbox TYPE abap_bool,
END OF ty_row.
DATA t_tab TYPE STANDARD TABLE OF ty_row WITH EMPTY KEY.
DATA mv_value TYPE string VALUE 'value'.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
@ -32,85 +17,47 @@ CLASS z2ui5_cl_app_demo_12 IMPLEMENTATION.
CASE client->get( )-lifecycle_method.
WHEN client->cs-lifecycle_method-on_init.
t_tab = REDUCE #( INIT ret = VALUE #( ) FOR n = 1 WHILE n < 11 NEXT ret =
VALUE #( BASE ret ( title = 'Hans' value = 'red' info = 'completed' descr = 'this is a description' checkbox = abap_true ) ) ).
WHEN client->cs-lifecycle_method-on_event.
CASE client->get( )-event.
when 'POPUP_TO_DECIDE'.
WHEN 'BUTTON_POPUP_DECIDE'.
client->nav_app_call( z2ui5_cl_app_demo_20=>factory(
i_text = 'Do really want to continue?'
i_cancel_text = 'No'
i_cancel_event = 'POPUP_CONFIRM_NO'
i_confirm_text = 'Yes'
i_confirm_event = 'POPUP_CONFIRM_YES' )
).
WHEN 'BUTTON_POPUP_SELECT'.
DATA(lo_popup_select) = z2ui5_cl_app_demo_23=>factory(
event_callback = 'POPUP_SELECT_RETURN'
i_tab = VALUE #( descr = 'this is a description'
( title = 'title_01' value = 'value_01' )
( title = 'title_02' value = 'value_02' )
( title = 'title_03' value = 'value_03' )
( title = 'title_04' value = 'value_04' ) ) ).
client->nav_app_call( lo_popup_select ).
WHEN 'POPUP_SELECT_RETURN'.
lo_popup_select = CAST z2ui5_cl_app_demo_23( client->get_app_by_id( client->get( )-id_prev_app ) ).
DELETE lo_popup_select->t_tab WHERE selkz <> abap_true.
client->popup_message_box( 'Entry selected: ' && lo_popup_select->t_tab[ 1 ]-title ).
WHEN 'POPUP_CONFIRM_YES'.
client->popup_message_box( 'decide yes' ).
WHEN 'POPUP_CONFIRM_NO'.
client->popup_message_box( 'decide no' ).
WHEN 'F4HELP'.
client->popup_message_box( 'F4HELP' ).
WHEN 'BUTTON_POPUP_01'.
client->view_popup( 'BAL_POPUP' ).
client->view_popup( 'POPUP_DECIDE' ).
WHEN 'POPUP_DECIDE_CONTINUE'.
client->popup_message_toast( 'continue pressed' ).
WHEN 'POPUP_DECIDE_CANCEL'.
client->popup_message_toast( 'cancel pressed' ).
WHEN 'BUTTON_POPUP_02'.
client->view_show( 'MAIN' ).
client->view_popup( 'BAL_POPUP' ).
client->view_popup( 'POPUP_DECIDE' ).
WHEN 'BUTTON_POPUP_03'.
client->view_show( 'MAIN' ).
client->view_popup( 'BAL_POPUP2' ).
client->view_popup( 'POPUP_DECIDE_FRONTEND_CLOSE' ).
WHEN 'BUTTON_POPUP_04'.
client->set( set_prev_view = abap_true ).
client->view_popup( 'BAL_POPUP2' ).
client->view_popup( 'POPUP_DECIDE' ).
WHEN 'BUTTON_POPUP_05'.
client->nav_app_call( z2ui5_cl_app_demo_20=>factory(
i_text = 'Do really want to continue?'
i_cancel_text = 'No'
i_cancel_event = 'POPUP_CONFIRM_NO'
i_confirm_text = 'Yes'
i_confirm_event = 'POPUP_CONFIRM_YES' )
).
i_text = '(new app )this is a popup to decide, the text is send from the previous app and the answer will be send back'
i_cancel_text = 'Cancel '
i_cancel_event = 'POPUP_DECIDE_CANCEL'
i_confirm_text = 'Continue'
i_confirm_event = 'POPUP_DECIDE_CONTINUE'
i_check_show_previous_view = abap_false ) ).
WHEN 'BUTTON_POPUP_06'.
" client->set( set_prev_view = abap_true ).
client->view_popup( 'POPUP_TABLE' ).
WHEN 'POPUP_TABLE_SEND'.
client->popup_message_box( 'entries edited' ).
client->nav_app_call( z2ui5_cl_app_demo_20=>factory(
i_text = '(new app )this is a popup to decide, the text is send from the previous app and the answer will be send back'
i_cancel_text = 'Cancel'
i_cancel_event = 'POPUP_DECIDE_CANCEL'
i_confirm_text = 'Continue'
i_confirm_event = 'POPUP_DECIDE_CONTINUE' ) ).
WHEN 'BACK'.
client->nav_app_leave( client->get( )-id_prev_app_stack ).
@ -120,154 +67,66 @@ CLASS z2ui5_cl_app_demo_12 IMPLEMENTATION.
WHEN client->cs-lifecycle_method-on_rendering.
DATA(view) = client->factory_view( ).
DATA(view) = client->factory_view( name = 'MAIN' ).
DATA(page) = view->page( title = 'abap2UI5 - Popups' navbuttontap = view->_event( 'BACK' ) ).
page->header_content( )->link( text = 'Go to Source Code' href = client->get( )-s_request-url_source_code ).
page->header_content( )->link( text = 'Go to Source_Code' href = client->get( )-s_request-url_source_code ).
DATA(grid) = page->grid( 'L6 M12 S12' )->content( 'l' ).
grid->simple_form( 'Input' )->content( 'f'
)->label( '01'
)->button( text = 'Popup to Decide' press = view->_event( 'POPUP_TO_DECIDE' )
)->label( '02'
)->button( text = 'Popup Get Text Input' press = view->_event( 'POPUP_TO_TEXTAREA' )
)->label( '03'
)->button( text = 'Popup Get Input Values' press = view->_event( 'POPUP_TO_INPUT' )
)->label( '04'
)->button( text = 'Popup Get selected Entry' press = view->_event( 'POPUP_TO_SELECT' )
)->label( '06'
)->button( text = 'Popup show BAL' press = view->_event( 'POPUP_TO_BAL' )
).
page->input(
value = view->_bind( mv_value )
showvaluehelp = abap_true
valuehelprequest = view->_event( 'F4HELP' )
).
page->button(
text = 'Popup new app - popup renderung, no view'
press = view->_event( 'BUTTON_POPUP_DECIDE' )
).
page->button(
text = 'Popup same app - popup rendering, no view rendering'
DATA(grid) = page->grid( 'L7 M12 S12' )->content( 'l' ).
grid->simple_form( 'Popup in same App' )->content( 'f'
)->label( 'Demo'
)->button(
text = 'popup rendering, no background rendering'
press = view->_event( 'BUTTON_POPUP_01' )
).
page->button(
text = 'Popup same app - popup rendering, view rendering'
)->label( 'Demo'
)->button(
text = 'popup rendering, background rendering'
press = view->_event( 'BUTTON_POPUP_02' )
).
page->button(
text = 'Popup same app - popup rendering, view rendering - frontend close'
)->label( 'Demo'
)->button(
text = 'popup rendering, background rendering - close (no roundtrip)'
press = view->_event( 'BUTTON_POPUP_03' )
).
page->button(
text = 'Popup same app - popup rendering, view previous'
press = view->_event( 'BUTTON_POPUP_04' )
).
page->button(
text = 'Popup next app - popup rendering, view previous'
press = view->_event( 'BUTTON_POPUP_05' )
).
page->button(
text = 'Popup select'
press = view->_event( 'BUTTON_POPUP_06' )
).
" client->set( focus = mv_value ).
page->footer( )->overflow_toolbar(
)->toolbar_spacer(
)->button(
text = 'Send to Server'
press = view->_event( 'BUTTON_SEND' )
type = 'Success' ).
)->label( 'Demo'
)->button(
text = 'popup rendering, background rendering (previous view)'
press = view->_event( 'BUTTON_POPUP_04' ) ).
grid->simple_form( 'Popup in new App' )->content( 'f'
)->label( 'Demo'
)->button( text = 'popup rendering, no background'
press = view->_event( 'BUTTON_POPUP_05' )
)->label( 'Demo'
)->button(
text = 'popup rendering, background rendering (previous view)'
press = view->_event( 'BUTTON_POPUP_06' ) ).
view = client->factory_view( 'POPUP_DECIDE' ).
DATA(popup) = view->dialog( title = 'Popup - Decide' ).
popup->text( text = 'this is a message' ).
popup->button( text = 'YES' press = view->_event( 'POPUP_CONFIRM_YES' ) ).
popup->button( text = 'NO' press = view->_event( 'POPUP_CONFIRM_NO' ) ).
popup->footer( )->overflow_toolbar(
DATA(popup) = view->dialog( title = 'Popup - Decide'
)->vbox( )->text( text = 'this is a popup to decide, you have to make a decision now...'
)->get_parent(
)->footer( )->overflow_toolbar(
)->toolbar_spacer(
)->button(
text = 'Send to Server'
press = view->_event( 'BUTTON_SEND' )
type = 'Success' ).
text = 'Cancel'
press = view->_event( 'POPUP_DECIDE_CANCEL' )
)->button(
text = 'Continue'
press = view->_event( 'POPUP_DECIDE_CONTINUE' )
type = 'Emphasized' ).
view = client->factory_view( 'POPUP_DECIDE_FRONTEND_CLOSE' ).
view = client->factory_view( 'BAL_POPUP2' ).
popup = view->dialog( title = 'Example - ZZ2UI5_CL_APP_DEMO_07' ).
popup->text( text = 'this popup frontend close' ).
popup->button( text = 'YES' press = view->_event( 'POPUP_CONFIRM_YES' ) ).
popup->button( text = 'NO' press = view->_event( 'POPUP_CONFIRM_NO' ) ).
popup->footer( )->overflow_toolbar(
popup = view->dialog( title = 'Popup - Info'
)->vbox( )->text( text = 'this is an information, press close to go back to the main view without a server roundtrip'
)->get_parent(
)->footer( )->overflow_toolbar(
)->toolbar_spacer(
)->button(
text = 'frontend close'
text = 'close'
press = view->_event_close_popup( )
type = 'Success' ).
type = 'Emphasized' ).
view = client->factory_view( 'POPUP_TABLE' ).
popup = view->dialog( title = 'Example - ZZ2UI5_CL_APP_DEMO_07' ).
DATA(tab) = popup->table( view->_bind( t_tab ) ).
"set toolbar
tab->header_toolbar( )->overflow_toolbar(
)->title( 'title of the table' ).
"set header
tab->columns(
)->column( )->text( 'Title' )->get_parent(
)->column( )->text( 'Color' )->get_parent(
)->column( )->text( 'Info' )->get_parent(
)->column( )->text( 'Description' )->get_parent(
)->column( )->text( 'Checkbox' ).
tab->items( )->column_list_item( )->cells(
)->input( '{TITLE}'
)->input( '{VALUE}'
)->input( '{INFO}'
)->input( '{DESCR}'
)->checkbox( selected = '{CHECKBOX}' enabled = abap_true ).
popup->footer( )->overflow_toolbar(
)->toolbar_spacer(
)->button(
text = 'Commit'
press = view->_event( 'POPUP_TABLE_SEND' )
type = 'Success' ).
ENDCASE.
ENDMETHOD.

View File

@ -6,6 +6,19 @@ CLASS z2ui5_cl_app_demo_18 DEFINITION PUBLIC.
DATA mv_path TYPE string.
DATA mv_value TYPE string.
TYPES:
BEGIN OF ty_file,
selkz TYPE abap_bool,
name TYPE string,
format TYPE string,
size TYPE string,
descr TYPE string,
data TYPE string,
END OF ty_file.
DATA mt_file TYPE STANDARD TABLE OF ty_file WITH EMPTY KEY.
DATA ms_file TYPE ty_file.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
@ -26,27 +39,25 @@ CLASS z2ui5_cl_app_demo_18 IMPLEMENTATION.
WHEN client->cs-lifecycle_method-on_event.
*
CASE client->get( )-event.
*
* WHEN 'DB_LOAD'.
*
* mv_editor = COND #(
* WHEN mv_path CS 'abap' THEN lcl_mime_api=>read_abap( )
* WHEN mv_path CS 'json' THEN lcl_mime_api=>read_json( )
* WHEN mv_path CS 'yaml' THEN lcl_mime_api=>read_yaml( )
* WHEN mv_path CS 'text' THEN lcl_mime_api=>read_text( ) ).
* client->display_message_toast( 'Download successfull').
*
* WHEN 'DB_SAVE'.
* lcl_mime_api=>save_data( mv_editor ).
* client->display_message_box( text = 'Upload successfull. File saved!' type = 'success' ).
*
* WHEN 'EDIT'.
* mv_check_editable = xsdbool( mv_check_editable = abap_False ).
* WHEN 'CLEAR'.
* mv_editor = ``.
WHEN 'DISPLAY'.
ms_file = mt_file[ selkz = abap_true ].
WHEN 'UPLOAD'.
DATA(lv_dummy) = ''.
INSERT VALUE #( name = mv_path data = mv_value size = strlen( mv_value ) format = mv_value+5(5) ) INTO TABLE mt_file.
WHEN 'TEXTAREA_CONFIRM'.
mt_file[ name = ms_file-name ] = ms_file.
CLEAR ms_file.
WHEN 'POPUP_DESCR'.
ms_file = mt_file[ selkz = abap_true ].
client->view_popup( 'POPUP_DESCR' ).
WHEN 'POPUP_DATA'.
ms_file = mt_file[ selkz = abap_true ].
client->view_popup( 'POPUP_DATA' ).
WHEN 'BACK'.
client->nav_app_leave( client->get( )-id_prev_app_stack ).
@ -56,28 +67,91 @@ CLASS z2ui5_cl_app_demo_18 IMPLEMENTATION.
DATA(view) = client->factory_view( 'VIEW_INPUT' ).
DATA(page) = view->page( title = 'abap2UI5 - Upload/Download Files' navbuttontap = view->_event( 'BACK' ) ).
" DATA(grid) = page->grid( 'L12 M12 S12' )->content( 'l' ).
DATA(lv_html_text) = `<h3>subheader</h3><p>link: <a href="//www.sap.com" style="color:green; font-weight:600;">link to sap.com</a> - links open in a new window.</p><p>paragraph: <strong>strong</strong> and <em>emphasized</em>.</p><p>list:</p><ul` &&
`><li>list item 1</li><li>list item 2<ul><li>sub item 1</li><li>sub item 2</li></ul></li></ul><p>pre:</p><pre>abc def ghi</pre><p>code: <code>var el = document.getElementById("myId");</code></p><p>cite: <cite>a reference to a source</cite></p>` &&
`<dl><dt>definition:</dt><dd>definition list of terms and descriptions</dd>`.
page->vbox( 'sapUiSmallMargin' )->formatted_text( htmltext = lv_html_text ).
page->zz_file_uploader(
value = view->_bind( mv_value )
path = view->_bind( mv_path )
placeholder = 'filepath here...'
upload = view->_event( 'UPLOAD' )
).
upload = view->_event( 'UPLOAD' ) ).
IF mv_value IS NOT INITIAL.
page->zz_html( '<iframe src="' && mv_value && '" height="90%" width="98%"/>' ).
DATA(tab) = page->table(
headertext = 'Table'
mode = 'SingleSelectLeft'
items = view->_bind( mt_file ) ).
"set toolbar
tab->header_toolbar( )->overflow_toolbar(
)->title( 'Files'
)->toolbar_spacer(
)->button( text = 'Edit Description' press = view->_event( 'POPUP_DESCR' )
)->button( text = 'Show Base64' press = view->_event( 'POPUP_DATA' )
)->button( text = 'display' press = view->_event( 'DISPLAY' )
).
tab->columns(
)->column( width = '10%'
" )->text( 'Title'
)->get_parent(
)->column( width = '10%'
" )->text( 'Value'
)->get_parent(
)->column( width = '10%'
" )->text( 'Value'
)->get_parent(
)->column(
" )->text( 'Description'
).
tab->items( )->column_list_item( selected = '{SELKZ}' )->cells(
)->text( '{NAME}'
)->text( '{FORMAT}'
)->text( '{SIZE}'
)->text( '{DESCR}' ).
IF ms_file-data IS NOT INITIAL.
page->zz_html( '<iframe src="' && ms_file-data && '" height="75%" width="98%"/>' ).
CLEAR mv_value.
ENDIF.
RETURN.
" mv_editor = escape( val = mv_editor format = cl_abap_format=>e_json_string ).
view = client->factory_view( 'POPUP_DESCR' ).
DATA(popup) = view->dialog( title = 'Edit Description' icon = 'sap-icon://edit' ).
popup->content(
)->text_area(
height = '100%'
width = '100%'
value = view->_bind( ms_file-descr ) ).
popup->footer( )->overflow_toolbar(
)->toolbar_spacer(
)->button(
text = 'Cancel'
press = view->_event( 'TEXTAREA_CANCEL' )
)->button(
text = 'Confirm'
press = view->_event( 'TEXTAREA_CONFIRM' )
type = 'Emphasized' ).
view = client->factory_view( 'POPUP_DATA' ).
popup = view->dialog( stretch = abaP_true title = 'Data:' ).
popup->content(
)->text_area(
height = '99%'
width = '99%'
enabled = abap_false
value = view->_bind( ms_file-data ) ).
popup->footer( )->overflow_toolbar(
)->toolbar_spacer(
)->button(
text = 'close'
press = view->_event( 'TEXTAREA_CONFIRM' )
type = 'Emphasized' ).
ENDCASE.

View File

@ -5,22 +5,21 @@ CLASS z2ui5_cl_app_demo_20 DEFINITION PUBLIC.
INTERFACES z2ui5_if_app.
CLASS-METHODS factory
IMPORTING
i_text TYPE string
i_cancel_text TYPE string
i_cancel_event TYPE string
i_confirm_text TYPE string
i_confirm_event TYPE string
i_check_show_previous_view type abap_bool optional
i_text TYPE string
i_cancel_text TYPE string
i_cancel_event TYPE string
i_confirm_text TYPE string
i_confirm_event TYPE string
i_check_show_previous_view TYPE abap_bool DEFAULT abap_true
RETURNING
VALUE(r_result) TYPE REF TO z2ui5_cl_app_demo_20.
VALUE(r_result) TYPE REF TO z2ui5_cl_app_demo_20.
DATA mv_text TYPE string.
DATA mv_cancel_text TYPE string.
DATA mv_cancel_event TYPE string.
DATA mv_confirm_text TYPE string.
DATA mv_confirm_event TYPE string.
data mv_check_show_previous_view type abap_bool.
DATA mv_check_show_previous_view TYPE abap_bool.
PROTECTED SECTION.
PRIVATE SECTION.
@ -49,9 +48,9 @@ CLASS z2ui5_cl_app_demo_20 IMPLEMENTATION.
CASE client->get( )-lifecycle_method.
WHEN client->cs-lifecycle_method-on_init.
if mv_check_show_previous_view = abap_true.
client->set( set_prev_view = abap_true ).
endif.
IF mv_check_show_previous_view = abap_true.
client->set( set_prev_view = abap_true ).
ENDIF.
client->view_popup( 'POPUP_DECIDE' ).
WHEN client->cs-lifecycle_method-on_event.
@ -67,20 +66,18 @@ CLASS z2ui5_cl_app_demo_20 IMPLEMENTATION.
WHEN client->cs-lifecycle_method-on_rendering.
DATA(view) = client->factory_view( 'POPUP_DECIDE' ).
DATA(page) = view->dialog( title = 'abap2UI5 - Popup to decide'
)->vbox( )->text( text = mv_text )->get_parent(
)->footer( )->overflow_toolbar(
)->toolbar_spacer(
)->button(
text = mv_cancel_text
press = view->_event( mv_cancel_event )
)->button(
text = mv_confirm_text
press = view->_event( mv_confirm_event )
type = 'Emphasized' ).
DATA(page) = view->dialog( title = 'Example - ZZ2UI5_CL_APP_DEMO_07' ).
page->text( text = mv_text ).
page->button( text = mv_cancel_text press = view->_event( mv_cancel_event ) ).
page->button( text = mv_confirm_text press = view->_event( mv_confirm_event ) ).
page->footer( )->overflow_toolbar(
)->toolbar_spacer(
)->button(
text = 'Send to Server'
press = view->_event( 'BUTTON_SEND' )
type = 'Success' ).
ENDCASE.
ENDMETHOD.

View File

@ -67,7 +67,7 @@ CLASS z2ui5_lcl_utility DEFINITION INHERITING FROM cx_no_check.
CLASS-METHODS get_classname_by_ref
IMPORTING
in TYPE REF TO object
in TYPE REF TO object
RETURNING
VALUE(result) TYPE string.
@ -109,15 +109,15 @@ CLASS z2ui5_lcl_utility DEFINITION INHERITING FROM cx_no_check.
CLASS-METHODS get_attri_name_by_ref
IMPORTING
i_focus TYPE data
io_app TYPE REF TO object
t_attri TYPE ty-t-attri
i_focus TYPE data
io_app TYPE REF TO object
t_attri TYPE ty-t-attri
RETURNING
VALUE(result) TYPE string ##NEEDED.
CLASS-METHODS get_t_attri_by_ref
IMPORTING
io_app TYPE REF TO object
io_app TYPE REF TO object
RETURNING
VALUE(result) TYPE ty-t-attri ##NEEDED.
@ -129,14 +129,14 @@ CLASS z2ui5_lcl_utility DEFINITION INHERITING FROM cx_no_check.
CLASS-METHODS get_params_by_url
IMPORTING
url TYPE string
name TYPE string
url TYPE string
name TYPE string
RETURNING
VALUE(result) TYPE string.
CLASS-METHODS get_prev_when_no_handler
IMPORTING
val TYPE REF TO cx_root
val TYPE REF TO cx_root
RETURNING
VALUE(result) TYPE REF TO cx_root.
@ -149,7 +149,7 @@ CLASS z2ui5_lcl_utility DEFINITION INHERITING FROM cx_no_check.
CLASS-METHODS get_abap_2_json
IMPORTING
val TYPE any
val TYPE any
RETURNING
VALUE(result) TYPE string.
@ -161,7 +161,7 @@ CLASS z2ui5_lcl_utility DEFINITION INHERITING FROM cx_no_check.
CLASS-METHODS get_json_boolean
IMPORTING
val TYPE any
val TYPE any
RETURNING
VALUE(result) TYPE string.
@ -171,7 +171,7 @@ CLASS z2ui5_lcl_utility DEFINITION INHERITING FROM cx_no_check.
CLASS-METHODS get_trim_upper
IMPORTING
val TYPE clike
val TYPE clike
RETURNING
VALUE(result) TYPE string.
@ -181,8 +181,8 @@ CLASS z2ui5_lcl_utility DEFINITION INHERITING FROM cx_no_check.
CLASS-METHODS _get_t_attri
IMPORTING
io_app TYPE REF TO object
iv_attri TYPE csequence
io_app TYPE REF TO object
iv_attri TYPE csequence
RETURNING
VALUE(result) TYPE abap_attrdescr_tab.
@ -594,14 +594,14 @@ CLASS z2ui5_lcl_utility_tree_json DEFINITION.
CLASS-METHODS new
IMPORTING
io_root TYPE REF TO z2ui5_lcl_utility_tree_json
iv_name TYPE simple
io_root TYPE REF TO z2ui5_lcl_utility_tree_json
iv_name TYPE simple
RETURNING
VALUE(result) TYPE REF TO z2ui5_lcl_utility_tree_json.
CLASS-METHODS factory
IMPORTING
iv_json TYPE clike OPTIONAL
iv_json TYPE clike OPTIONAL
RETURNING
VALUE(result) TYPE REF TO z2ui5_lcl_utility_tree_json.
@ -613,7 +613,7 @@ CLASS z2ui5_lcl_utility_tree_json DEFINITION.
METHODS get_attribute
IMPORTING
name TYPE string
name TYPE string
RETURNING
VALUE(result) TYPE REF TO z2ui5_lcl_utility_tree_json.
@ -627,27 +627,27 @@ CLASS z2ui5_lcl_utility_tree_json DEFINITION.
METHODS add_list_val
IMPORTING
v TYPE string
v TYPE string
RETURNING
VALUE(result) TYPE REF TO z2ui5_lcl_utility_tree_json.
METHODS add_attribute
IMPORTING
n TYPE clike
v TYPE clike
apos_active TYPE abap_bool DEFAULT abap_true
n TYPE clike
v TYPE clike
apos_active TYPE abap_bool DEFAULT abap_true
RETURNING
VALUE(result) TYPE REF TO z2ui5_lcl_utility_tree_json.
METHODS add_attributes_name_value_tab
IMPORTING
it_name_value TYPE ty_T_name_value
it_name_value TYPE ty_T_name_value
RETURNING
VALUE(result) TYPE REF TO z2ui5_lcl_utility_tree_json.
METHODS add_attribute_object
IMPORTING
name TYPE clike
name TYPE clike
RETURNING
VALUE(result) TYPE REF TO z2ui5_lcl_utility_tree_json.
@ -661,13 +661,13 @@ CLASS z2ui5_lcl_utility_tree_json DEFINITION.
METHODS add_attribute_list
IMPORTING
name TYPE clike
name TYPE clike
RETURNING
VALUE(result) TYPE REF TO z2ui5_lcl_utility_tree_json.
METHODS add_attribute_instance
IMPORTING
val TYPE REF TO z2ui5_lcl_utility_tree_json
val TYPE REF TO z2ui5_lcl_utility_tree_json
RETURNING
VALUE(result) TYPE REF TO z2ui5_lcl_utility_tree_json.
@ -683,14 +683,14 @@ CLASS z2ui5_lcl_utility_tree_json DEFINITION.
METHODS wrap_json
IMPORTING
iv_text TYPE string
iv_text TYPE string
RETURNING
VALUE(result) TYPE string.
METHODS quote_json
IMPORTING
iv_text TYPE string
iv_cond TYPE abap_bool
iv_text TYPE string
iv_cond TYPE abap_bool
RETURNING
VALUE(result) TYPE string.
@ -979,8 +979,8 @@ CLASS z2ui5_lcl_if_view DEFINITION.
METHODS _get_name_by_ref
IMPORTING
value TYPE data
type TYPE string DEFAULT cs-bind_type-two_way
value TYPE data
type TYPE string DEFAULT cs-bind_type-two_way
RETURNING
VALUE(result) TYPE string.
@ -1027,6 +1027,7 @@ CLASS z2ui5_lcl_system_runtime DEFINITION.
id_prev_app TYPE string,
id_prev_app_stack TYPE string,
view_active TYPE string,
t_attri TYPE _=>ty-t-attri,
o_app TYPE REF TO object,
app_classname TYPE string,
@ -1085,9 +1086,9 @@ CLASS z2ui5_lcl_system_runtime DEFINITION.
RETURNING
VALUE(result) TYPE REF TO z2ui5_lcl_system_runtime.
CLASS-METHODS set_app_client_update
CLASS-METHODS set_app_update_by_client
IMPORTING
id_prev TYPE clike
id_prev TYPE clike
RETURNING
VALUE(result) TYPE REF TO z2ui5_lcl_system_runtime.
@ -1101,8 +1102,8 @@ CLASS z2ui5_lcl_system_runtime DEFINITION.
METHODS set_app_system_error
IMPORTING
kind TYPE string
ix TYPE REF TO cx_root
kind TYPE string
ix TYPE REF TO cx_root
RETURNING
VALUE(result) TYPE REF TO z2ui5_lcl_system_runtime.
@ -1370,6 +1371,7 @@ CLASS z2ui5_lcl_if_view IMPLEMENTATION.
( n = 'showClearIcon' v = _=>get_json_boolean( showclearicon ) )
( n = 'description' v = description )
( n = 'editable' v = _=>get_json_boolean( editable ) )
( n = 'enabled' v = _=>get_json_boolean( enabled ) )
( n = 'valueState' v = valuestate )
( n = 'valueStateText' v = valuestatetext )
( n = 'value' v = value )
@ -1460,7 +1462,8 @@ CLASS z2ui5_lcl_if_view IMPLEMENTATION.
result = _generic(
name = 'VBox'
t_prop = VALUE #(
( n = 'class' v = class )
( n = 'height' v = height )
( n = 'class' v = class )
) ).
ENDMETHOD.
@ -1737,6 +1740,8 @@ CLASS z2ui5_lcl_if_view IMPLEMENTATION.
( n = 'rows' v = rows )
( n = 'height' v = height )
( n = 'width' v = width )
( n = 'editable' v = _=>get_json_boolean( editable ) )
( n = 'enabled' v = _=>get_json_boolean( enabled ) )
( n = 'id' v = id )
( n = 'growing' v = _=>get_json_boolean( growing ) )
( n = 'growingMaxLines' v = growingMaxLines )
@ -2359,9 +2364,9 @@ CLASS z2ui5_lcl_system_app DEFINITION.
CLASS-METHODS factory_error
IMPORTING
error TYPE REF TO cx_root
app TYPE REF TO object OPTIONAL
kind TYPE string OPTIONAL
error TYPE REF TO cx_root
app TYPE REF TO object OPTIONAL
kind TYPE string OPTIONAL
RETURNING
VALUE(result) TYPE REF TO z2ui5_lcl_system_app.
@ -2512,9 +2517,13 @@ CLASS z2ui5_lcl_system_app IMPLEMENTATION.
view = client->factory_view( 'HOME' ).
DATA(page) = view->page(
class = 'sapUiContentPadding sapUiResponsivePadding--header sapUiResponsivePadding--subHeader sapUiResponsivePadding--content sapUiResponsivePadding--footer'
title = 'abap2UI5 - Development of UI5 Apps in pure ABAP' ).
class = 'sapUiContentPadding sapUiResponsivePadding--subHeader sapUiResponsivePadding--content sapUiResponsivePadding--footer'
" title = 'abap2UI5 - Development of UI5 Apps in pure ABAP'
).
page->header_content(
)->title( ''
)->title( 'abap2UI5 - Development of UI5 Apps in pure ABAP'
)->toolbar_spacer(
)->link( text = 'SCN' href = 'https://blogs.sap.com/tag/abap2ui5/'
)->link( text = 'Twitter' href = 'https://twitter.com/OblomovDev'
)->link( text = 'GitHub' href = 'https://github.com/oblomov-dev/abap2ui5' ).
@ -2652,7 +2661,7 @@ CLASS z2ui5_lcl_system_runtime IMPLEMENTATION.
RETURN.
ENDTRY.
result = set_app_client_update( lv_id_prev ).
result = set_app_update_by_client( lv_id_prev ).
ENDMETHOD.
@ -2670,7 +2679,7 @@ CLASS z2ui5_lcl_system_runtime IMPLEMENTATION.
CATCH cx_root.
_=>raise( `View with the name ` && ms_next-view && ` not found - check the rendering` ).
ENDTRY.
ELSEIF ms_actual-view_active IS NOT INITIAL.
ELSEIF ms_actual-view_active IS NOT INITIAL AND ms_next-view_popup IS INITIAL.
TRY.
lr_screen = REF #( ms_next-t_screen[ name = ms_actual-view_active ] ).
ms_next-view = ms_actual-view_active.
@ -2687,6 +2696,7 @@ CLASS z2ui5_lcl_system_runtime IMPLEMENTATION.
IF lr_screen IS BOUND.
DATA(ls_view) = lr_screen->o_parser->get_view( ).
lo_ui5_model->add_attribute( n = `vView` v = ls_view-xml ).
ms_db-view_active = lr_screen->name.
ls_view-o_model->mv_name = 'oViewModel'.
lo_ui5_model->add_attribute_instance( ls_view-o_model ).
ENDIF.
@ -2708,14 +2718,14 @@ CLASS z2ui5_lcl_system_runtime IMPLEMENTATION.
DATA(lo_system) = lo_ui5_model->add_attribute_object( 'oSystem' ).
lo_system->add_attribute( n = 'ID' v = ms_db-id ).
lo_system->add_attribute( n = 'VIEW_NAME' v = ms_next-view ).
lo_system->add_attribute( n = 'VIEW_POPUP_NAME' v = ms_next-view_popup ).
IF lr_screen IS BOUND.
lo_system->add_attribute( n = 'VIEW' v = lr_screen->name ).
ENDIF.
IF lr_screen_popup IS BOUND.
lo_system->add_attribute( n = 'VIEW_POPUP' v = lr_screen_popup->name ).
ENDIF.
* lo_system->add_attribute( n = 'VIEW_NAME' v = ms_next-view ).
* lo_system->add_attribute( n = 'VIEW_POPUP_NAME' v = ms_next-view_popup ).
* IF lr_screen IS BOUND.
* lo_system->add_attribute( n = 'VIEW' v = lr_screen->name ).
* ENDIF.
* IF lr_screen_popup IS BOUND.
* lo_system->add_attribute( n = 'VIEW_POPUP' v = lr_screen_popup->name ).
* ENDIF.
lo_system->add_attribute( n = 'CHECK_DEBUG_ACTIVE' v = _=>get_abap_2_json( z2ui5_cl_http_handler=>cs_config-check_debug_mode ) apos_active = abap_false ).
@ -2756,7 +2766,7 @@ CLASS z2ui5_lcl_system_runtime IMPLEMENTATION.
ENDMETHOD.
METHOD set_app_client_update.
METHOD set_app_update_by_client.
CONSTANTS c_prefix TYPE string VALUE `result->MS_DB-O_APP->`.
@ -2769,7 +2779,7 @@ CLASS z2ui5_lcl_system_runtime IMPLEMENTATION.
DATA(lo_system) = ss_client-o_body->get_attribute( 'OSYSTEM' ).
TRY.
result->ms_next-view_popup = lo_system->get_attribute( 'VIEW_POPUP' )->get_val( ).
* result->ms_next-view_popup = lo_system->get_attribute( 'VIEW_POPUP' )->get_val( ).
DATA(lo_popup_model) = ss_client-o_body->get_attribute( 'OPOPUP' ).
LOOP AT result->ms_db-t_attri REFERENCE INTO DATA(lr_attri)
@ -2825,22 +2835,9 @@ CLASS z2ui5_lcl_system_runtime IMPLEMENTATION.
result->ms_next-event = ss_client-o_body->get_attribute( 'OEVENT' )->get_attribute( 'EVENT' )->get_val( ).
CATCH cx_root.
ENDTRY.
* TRY.
* result->ms_next-page_scroll_pos = ss_client-o_body->get_attribute( 'scrollPos' )->get_val( ).
* CATCH cx_root.
* ENDTRY.
TRY.
result->ms_next-view = lo_system->get_attribute( 'VIEW' )->get_val( ).
CATCH cx_root.
ENDTRY.
TRY.
result->ms_next-view = lo_system->get_attribute( 'VIEW_NAME' )->get_val( ).
CATCH cx_root.
ENDTRY.
* TRY.
* result->ms_next-view = lo_system->get_attribute( 'VIEW_POPUP_NAME' )->get_val( ).
* CATCH cx_root.
* ENDTRY.
result->ms_next-view = result->ms_db-view_active.
CLEAR result->ms_db-view_active.
result->ms_next-lifecycle_method = z2ui5_if_client=>cs-lifecycle_method-on_event.

View File

@ -115,6 +115,7 @@ INTERFACE z2ui5_if_view
valueStateText TYPE clike OPTIONAL
description TYPE clike OPTIONAL
editable TYPE clike OPTIONAL
enabled TYPE clike OPTIONAL
suggestionItems TYPE clike OPTIONAL
showSuggestion TYPE clike OPTIONAL
showValueHelp TYPE clike OPTIONAL
@ -376,7 +377,9 @@ INTERFACE z2ui5_if_view
METHODS vbox
importing
class type clike optional
height type clike optional
class type clike optional
PREFERRED PARAMETER class
RETURNING
VALUE(result) TYPE REF TO z2ui5_if_view.
@ -545,6 +548,8 @@ INTERFACE z2ui5_if_view
rows TYPE clike OPTIONAL
height TYPE clike OPTIONAL
width TYPE clike OPTIONAL
editable TYPE clike OPTIONAL
enabled TYPE clike OPTIONAL
growing TYPE clike OPTIONAL
growingMaxLines TYPE clike OPTIONAL
id TYPE clike OPTIONAL