mirror of
https://github.com/abap2UI5/abap2UI5.git
synced 2025-04-29 15:26:16 +08:00
unit tests and bugfixes (#199)
* unit tests * unit test * frontend messages update * scroll function * scroll * bugs scrolling * bugfix value help * abaplint fixes * unit tests * unit tests * unit tests * unit tests
This commit is contained in:
parent
af7fab71b2
commit
ccfa2e2585
|
@ -207,7 +207,7 @@ CLASS Z2UI5_CL_APP_DEMO_09 IMPLEMENTATION.
|
|||
|
||||
METHOD z2ui5_on_rendering.
|
||||
|
||||
DATA(page) = Z2UI5_CL_XML_VIEW=>factory(
|
||||
DATA(page) = Z2UI5_CL_XML_VIEW=>factory( )->shell(
|
||||
)->page(
|
||||
title = 'abap2UI5 - Value Help Examples'
|
||||
navbuttonpress = client->_event( 'BACK' )
|
||||
|
|
|
@ -19,7 +19,7 @@ CLASS Z2UI5_CL_APP_DEMO_10 IMPLEMENTATION.
|
|||
client->nav_app_leave( client->get_app( client->get( )-id_prev_app_stack ) ).
|
||||
ENDCASE.
|
||||
|
||||
DATA(page) = Z2UI5_CL_XML_VIEW=>factory(
|
||||
DATA(page) = Z2UI5_CL_XML_VIEW=>factory( )->shell(
|
||||
)->page(
|
||||
title = 'abap2UI5 - Demo Layout'
|
||||
navbuttonpress = client->_event( 'BACK' )
|
||||
|
|
|
@ -34,14 +34,13 @@ ENDCLASS.
|
|||
|
||||
|
||||
|
||||
CLASS Z2UI5_CL_APP_DEMO_22 IMPLEMENTATION.
|
||||
CLASS z2ui5_cl_app_demo_22 IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD z2ui5_if_app~main.
|
||||
|
||||
app-client = client.
|
||||
app-s_get = client->get( ).
|
||||
app-view_popup = ``.
|
||||
|
||||
IF app-check_initialized = abap_false.
|
||||
app-check_initialized = abap_true.
|
||||
|
@ -60,6 +59,11 @@ CLASS Z2UI5_CL_APP_DEMO_22 IMPLEMENTATION.
|
|||
|
||||
ENDIF.
|
||||
|
||||
app-s_next-t_scroll_pos = VALUE #(
|
||||
( name = 'id_page' )
|
||||
( name = 'id_text3' )
|
||||
).
|
||||
|
||||
CASE client->get( )-event.
|
||||
|
||||
WHEN 'BUTTON_SCROLL_TOP'.
|
||||
|
@ -68,15 +72,16 @@ CLASS Z2UI5_CL_APP_DEMO_22 IMPLEMENTATION.
|
|||
WHEN 'BUTTON_SCROLL_BOTTOM'.
|
||||
app-s_next-t_scroll_pos = VALUE #( ( name = 'id_page' value = '99999' ) ).
|
||||
|
||||
" WHEN 'BUTTON_SCROLL_UP'.
|
||||
" DATA(lv_pos) = client->get( )-page_scroll_pos - 500.
|
||||
" client->set( page_scroll_pos = COND #( WHEN lv_pos < 0 THEN 0 ELSE lv_pos ) ).
|
||||
WHEN 'BUTTON_SCROLL_UP'.
|
||||
DATA(lv_pos) = CONV i( app-s_get-t_scroll_pos[ name = `id_page` ]-value ) - 500.
|
||||
app-s_next-t_scroll_pos = VALUE #( ( name = 'id_page' value = lv_pos ) ).
|
||||
|
||||
" WHEN 'BUTTON_SCROLL_DOWN'.
|
||||
" client->set( page_scroll_pos = client->get( )-page_scroll_pos + 500 ).
|
||||
WHEN 'BUTTON_SCROLL_DOWN'.
|
||||
lv_pos = CONV i( app-s_get-t_scroll_pos[ name = `id_page` ]-value ) + 500.
|
||||
app-s_next-t_scroll_pos = VALUE #( ( name = 'id_page' value = lv_pos ) ).
|
||||
|
||||
" WHEN 'BUTTON_SCROLL_HOLD'.
|
||||
" client->set( page_scroll_pos = client->get( )-page_scroll_pos ).
|
||||
WHEN 'BUTTON_SCROLL_HOLD'.
|
||||
app-s_next-t_scroll_pos = app-s_get-t_scroll_pos.
|
||||
|
||||
WHEN 'BUTTON_FOCUS_FIRST'.
|
||||
app-s_next-s_cursor_pos = VALUE #( id = 'id_text1' cursorpos = '3' selectionstart = '3' selectionend = '3' ).
|
||||
|
@ -100,7 +105,7 @@ CLASS Z2UI5_CL_APP_DEMO_22 IMPLEMENTATION.
|
|||
ENDCASE.
|
||||
|
||||
|
||||
DATA(view) = Z2UI5_CL_XML_VIEW=>factory( )->shell( ).
|
||||
DATA(view) = z2ui5_cl_xml_view=>factory( )->shell( ).
|
||||
DATA(page) = view->page(
|
||||
id = 'id_page'
|
||||
title = 'abap2ui5 - Scrolling and Cursor (use the browser Chrome to avoid incompatibilities)'
|
||||
|
@ -108,7 +113,7 @@ CLASS Z2UI5_CL_APP_DEMO_22 IMPLEMENTATION.
|
|||
shownavbutton = abap_true
|
||||
).
|
||||
|
||||
page->header_content( )->link( text = 'Source_Code' target = '_blank' href = Z2UI5_CL_XML_VIEW=>hlp_get_source_code_url( app = me get = client->get( ) ) ).
|
||||
page->header_content( )->link( text = 'Source_Code' target = '_blank' href = z2ui5_cl_xml_view=>hlp_get_source_code_url( app = me get = client->get( ) ) ).
|
||||
|
||||
|
||||
page->input(
|
||||
|
@ -147,15 +152,18 @@ CLASS Z2UI5_CL_APP_DEMO_22 IMPLEMENTATION.
|
|||
|
||||
page->footer( )->overflow_toolbar(
|
||||
)->button( text = 'Scroll Top' press = client->_event( 'BUTTON_SCROLL_TOP' )
|
||||
" )->button( text = 'Scroll 500 up' press = view->_event( 'BUTTON_SCROLL_UP' )
|
||||
" )->button( text = 'Scroll 500 down' press = view->_event( 'BUTTON_SCROLL_DOWN' )
|
||||
)->button( text = 'Scroll 500 up' press = client->_event( 'BUTTON_SCROLL_UP' )
|
||||
)->button( text = 'Scroll 500 down' press = client->_event( 'BUTTON_SCROLL_DOWN' )
|
||||
)->button( text = 'Scroll Bottom' press = client->_event( 'BUTTON_SCROLL_BOTTOM' )
|
||||
" )->toolbar_spacer(
|
||||
" )->button( text = 'Server Event and hold position' press = view->_event( 'BUTTON_SCROLL_HOLD' )
|
||||
)->toolbar_spacer(
|
||||
)->button( text = 'Server Event and hold position' press = client->_event( 'BUTTON_SCROLL_HOLD' )
|
||||
).
|
||||
|
||||
app-s_next-xml_main = page->get_root( )->xml_get( ).
|
||||
client->set_next( app-s_next ).
|
||||
|
||||
app-view_popup = ``.
|
||||
CLEAR app-s_next.
|
||||
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
|
|
|
@ -123,27 +123,23 @@ CLASS Z2UI5_CL_HTTP_HANDLER IMPLEMENTATION.
|
|||
` var oView = this.getView();` && |\n| &&
|
||||
` try {` && |\n| &&
|
||||
` if (sap.z2ui5.oResponse.oCursor) {` && |\n| &&
|
||||
` var ofocus = oView.byId(sap.z2ui5.oResponse.oCursor.id).getFocusInfo();` && |\n| &&
|
||||
` ofocus.cursorPos = sap.z2ui5.oResponse.oCursor.cursorPos;` && |\n| &&
|
||||
` ofocus.selectionStart = sap.z2ui5.oResponse.oCursor.selectionStart;` && |\n| &&
|
||||
` ofocus.selectionEnd = sap.z2ui5.oResponse.oCursor.selectionEnd;` && |\n| &&
|
||||
` var ofocus = oView.byId(sap.z2ui5.oResponse.oCursor.ID).getFocusInfo();` && |\n| &&
|
||||
` ofocus.cursorPos = parseInt( sap.z2ui5.oResponse.oCursor.CURSORPOS );` && |\n| &&
|
||||
` ofocus.selectionStart = parseInt( sap.z2ui5.oResponse.oCursor.SELECTIONSTART );` && |\n| &&
|
||||
` ofocus.selectionEnd = parseInt( sap.z2ui5.oResponse.oCursor.SELECTIONEND );` && |\n| &&
|
||||
` }` && |\n| &&
|
||||
` oView.byId(sap.z2ui5.oResponse.oCursor.id).applyFocusInfo(ofocus);` && |\n| &&
|
||||
` oView.byId(sap.z2ui5.oResponse.oCursor.ID).applyFocusInfo(ofocus);` && |\n| &&
|
||||
` } catch (error) { };` && |\n| &&
|
||||
` try {` && |\n| &&
|
||||
` // oView.getContent()[0].getApp().scrollTo(sap.z2ui5.oResponse.PAGE_SCROLL_POS);` && |\n| &&
|
||||
` } catch (error) { };` && |\n| &&
|
||||
` //todo` && |\n| &&
|
||||
` if (sap.z2ui5.oResponse.oScroll) {` && |\n| &&
|
||||
` sap.z2ui5.oResponse.oScroll.forEach(item => Object.keys(item).forEach(function (key, index) {` && |\n| &&
|
||||
` try {` && |\n| &&
|
||||
` oView.byId(key).scrollTo(item[key]);` && |\n| &&
|
||||
` } catch (e) {` && |\n| &&
|
||||
` var ele = '#' + oView.byId(key).getId() + '-inner';` && |\n| &&
|
||||
` $(ele).scrollTop(item[key]);` && |\n| &&
|
||||
` }` && |\n| &&
|
||||
` // index: the ordinal position of the key within the object ` && |\n| &&
|
||||
` }));` && |\n| &&
|
||||
` sap.z2ui5.oResponse.oScroll.forEach(` && |\n| &&
|
||||
` item => { try { oView.byId(item.NAME).scrollTo( parseInt( item.VALUE ) ); ` && |\n| &&
|
||||
` } catch (e) {` && |\n| &&
|
||||
` var ele = '#' + oView.byId(item.NAME).getId() + '-inner';` && |\n| &&
|
||||
` $(ele).scrollTop(item.VALUE); ` && |\n| &&
|
||||
` } ` && |\n| &&
|
||||
` } );` && |\n| &&
|
||||
` }` && |\n| &&
|
||||
` if (sap.z2ui5.oResponse.vViewPopup) {` && |\n| &&
|
||||
` ` && |\n| &&
|
||||
|
@ -163,9 +159,9 @@ CLASS Z2UI5_CL_HTTP_HANDLER IMPLEMENTATION.
|
|||
` }` && |\n| &&
|
||||
` if (sap.z2ui5.oResponse.oTimer){ ` && |\n| &&
|
||||
` var oEvent = { 'EVENT' : 'BUTTON_CHECK', 'METHOD' : 'UPDATE' };` && |\n| &&
|
||||
` oEvent.EVENT = sap.z2ui5.oResponse.oTimer.eventFinished;` && |\n| &&
|
||||
` oEvent.EVENT = sap.z2ui5.oResponse.oTimer.EVENT_FINISHED;` && |\n| &&
|
||||
` sap.z2ui5.checkTimerActive = true;` && |\n| &&
|
||||
` setTimeout( ( ) => { if ( sap.z2ui5.checkTimerActive ) { sap.z2ui5.oView.getController().onEvent( oEvent ); } }, sap.z2ui5.oResponse.oTimer.intervalMs, oEvent );` && |\n| &&
|
||||
` setTimeout( ( ) => { if ( sap.z2ui5.checkTimerActive ) { sap.z2ui5.oView.getController().onEvent( oEvent ); } }, parseInt( sap.z2ui5.oResponse.oTimer.INTERVAL_MS ) , oEvent );` && |\n| &&
|
||||
` }` && |\n| &&
|
||||
` sap.ui.core.BusyIndicator.hide();` && |\n| &&
|
||||
` },` && |\n| &&
|
||||
|
@ -203,6 +199,19 @@ CLASS Z2UI5_CL_HTTP_HANDLER IMPLEMENTATION.
|
|||
` this.oBody.oUpdate = sap.z2ui5.oView.getModel().oData.oUpdate;` && |\n| &&
|
||||
` }` && |\n| &&
|
||||
|\n| &&
|
||||
` if (sap.z2ui5.oResponse.oScroll) {` && |\n| &&
|
||||
` this.oBody.oScroll = sap.z2ui5.oResponse.oScroll; ` && |\n| &&
|
||||
` this.oBody.oScroll .forEach(` && |\n| &&
|
||||
` item => { try { ` && |\n| &&
|
||||
` item.VALUE = this.getView().byId( item.NAME ).getScrollDelegate().getScrollTop(); ` && |\n| &&
|
||||
` } catch (e) {` && |\n| &&
|
||||
` var ele = '#' + this.getView( ).byId(item.NAME).getId() + '-inner';` && |\n| &&
|
||||
` item.VALUE = $(ele).scrollTop(); ` && |\n| &&
|
||||
` } ` && |\n| &&
|
||||
` } );` && |\n| &&
|
||||
` }` && |\n| &&
|
||||
|
||||
|
||||
` this.oBody.oSystem = sap.z2ui5.oResponse.oSystem;` && |\n| &&
|
||||
` this.oBody.oEvent = oEvent;` && |\n| &&
|
||||
` this.oBody.oEvent.vData = vData;` && |\n| &&
|
||||
|
@ -251,9 +260,9 @@ CLASS Z2UI5_CL_HTTP_HANDLER IMPLEMENTATION.
|
|||
` }` && |\n| &&
|
||||
` }` && |\n| &&
|
||||
|\n| &&
|
||||
` if (sap.z2ui5.oResponse.oAfter) {` && |\n| &&
|
||||
` sap.z2ui5.oResponse.oAfter.forEach(item => sap.m[item[0]][item[1]](item[2]));` && |\n| &&
|
||||
` }` && |\n| &&
|
||||
` if (sap.z2ui5.oResponse.oMessage) {` && |\n| &&
|
||||
` sap.m[sap.z2ui5.oResponse.oMessage.CONTROL][sap.z2ui5.oResponse.oMessage.TYPE](sap.z2ui5.oResponse.oMessage.TEXT);` && |\n| &&
|
||||
` }` && |\n| &&
|
||||
|\n| &&
|
||||
` if (sap.z2ui5.oResponse.vView) {` && |\n| &&
|
||||
` var oModel = new sap.ui.model.json.JSONModel(sap.z2ui5.oResponse.oViewModel);` && |\n| &&
|
||||
|
|
|
@ -14,8 +14,6 @@ CLASS z2ui5_lcl_utility DEFINITION INHERITING FROM cx_no_check.
|
|||
END OF ty_attri.
|
||||
TYPES ty_T_attri TYPE STANDARD TABLE OF ty_attri WITH EMPTY KEY.
|
||||
|
||||
TYPES ty_tt_string TYPE STANDARD TABLE OF string_table WITH EMPTY KEY.
|
||||
|
||||
DATA:
|
||||
BEGIN OF ms_error,
|
||||
x_root TYPE REF TO cx_root,
|
||||
|
@ -65,12 +63,6 @@ CLASS z2ui5_lcl_utility DEFINITION INHERITING FROM cx_no_check.
|
|||
RETURNING
|
||||
VALUE(result) TYPE timestampl.
|
||||
|
||||
CLASS-METHODS trans_json_2_data
|
||||
IMPORTING
|
||||
iv_json TYPE clike
|
||||
EXPORTING
|
||||
ev_result TYPE REF TO data.
|
||||
|
||||
CLASS-METHODS trans_any_2_json
|
||||
IMPORTING
|
||||
any TYPE any
|
||||
|
@ -83,14 +75,6 @@ CLASS z2ui5_lcl_utility DEFINITION INHERITING FROM cx_no_check.
|
|||
EXPORTING
|
||||
data TYPE data.
|
||||
|
||||
CLASS-METHODS get_attri_name_by_ref
|
||||
IMPORTING
|
||||
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
|
||||
|
@ -103,26 +87,6 @@ CLASS z2ui5_lcl_utility DEFINITION INHERITING FROM cx_no_check.
|
|||
RETURNING
|
||||
VALUE(result) TYPE string.
|
||||
|
||||
CLASS-METHODS get_params_by_url
|
||||
IMPORTING
|
||||
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
|
||||
RETURNING
|
||||
VALUE(result) TYPE REF TO cx_root.
|
||||
|
||||
CLASS-METHODS get_ref_data
|
||||
IMPORTING
|
||||
n TYPE clike
|
||||
o TYPE REF TO object
|
||||
RETURNING
|
||||
VALUE(result) TYPE REF TO data.
|
||||
|
||||
CLASS-METHODS get_abap_2_json
|
||||
IMPORTING
|
||||
val TYPE any
|
||||
|
@ -144,8 +108,8 @@ CLASS z2ui5_lcl_utility DEFINITION INHERITING FROM cx_no_check.
|
|||
CLASS-METHODS trans_ref_tab_2_tab
|
||||
IMPORTING
|
||||
ir_tab_from TYPE REF TO data
|
||||
CHANGING
|
||||
ct_to TYPE STANDARD TABLE.
|
||||
EXPORTING
|
||||
t_result TYPE STANDARD TABLE.
|
||||
|
||||
CLASS-METHODS get_trim_upper
|
||||
IMPORTING
|
||||
|
@ -230,51 +194,6 @@ CLASS z2ui5_lcl_utility IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD get_params_by_url.
|
||||
|
||||
DATA(url_segments) = segment( val = get_trim_upper( url ) index = 2 sep = `?` ).
|
||||
SPLIT url_segments AT `&` INTO TABLE DATA(lt_params).
|
||||
|
||||
DATA lt_url_params TYPE z2ui5_if_client=>ty_t_name_value.
|
||||
|
||||
LOOP AT lt_params INTO DATA(lv_param).
|
||||
|
||||
SPLIT lv_param AT `=` INTO DATA(lv_name) DATA(lv_value) DATA(lv_dummy).
|
||||
|
||||
INSERT VALUE #( name = lv_name
|
||||
value = lv_value ) INTO TABLE lt_url_params.
|
||||
|
||||
ENDLOOP.
|
||||
|
||||
result = lt_url_params[ name = get_trim_upper( name ) ]-value.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD get_prev_when_no_handler.
|
||||
|
||||
TRY.
|
||||
result = CAST cx_sy_no_handler( val )->previous.
|
||||
CATCH cx_root.
|
||||
ENDTRY.
|
||||
|
||||
IF result IS NOT BOUND.
|
||||
result = val.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD get_ref_data.
|
||||
|
||||
FIELD-SYMBOLS <field> TYPE data.
|
||||
|
||||
ASSIGN o->(n) TO <field>.
|
||||
raise( when = xsdbool( sy-subrc <> 0 ) ).
|
||||
|
||||
result = REF #( <field> ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD get_timestampl.
|
||||
|
||||
|
@ -343,31 +262,6 @@ CLASS z2ui5_lcl_utility IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD get_attri_name_by_ref.
|
||||
|
||||
CONSTANTS c_prefix TYPE string VALUE `IO_APP->`.
|
||||
|
||||
DATA lr_in TYPE REF TO data.
|
||||
GET REFERENCE OF i_focus INTO lr_in.
|
||||
|
||||
LOOP AT t_attri REFERENCE INTO DATA(lr_attri).
|
||||
|
||||
FIELD-SYMBOLS <attribute> TYPE any.
|
||||
DATA(lv_name) = c_prefix && to_upper( lr_attri->name ).
|
||||
ASSIGN (lv_name) TO <attribute>.
|
||||
raise( when = xsdbool( sy-subrc <> 0 ) v = `Attribute in App with name ` && lv_name && ` not found` ).
|
||||
|
||||
DATA lr_ref TYPE REF TO data.
|
||||
GET REFERENCE OF <attribute> INTO lr_ref.
|
||||
|
||||
IF lr_in = lr_ref.
|
||||
result = to_upper( lr_attri->name ).
|
||||
EXIT.
|
||||
ENDIF.
|
||||
|
||||
ENDLOOP.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD get_t_attri_by_ref.
|
||||
|
||||
|
@ -427,23 +321,6 @@ CLASS z2ui5_lcl_utility IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD trans_json_2_data.
|
||||
|
||||
CLEAR ev_result.
|
||||
IF iv_json IS INITIAL.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
/ui2/cl_json=>deserialize(
|
||||
EXPORTING
|
||||
json = CONV string( iv_json )
|
||||
assoc_arrays = abap_true
|
||||
CHANGING
|
||||
data = ev_result
|
||||
).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD trans_object_2_xml.
|
||||
|
||||
|
@ -467,10 +344,10 @@ CLASS z2ui5_lcl_utility IMPLEMENTATION.
|
|||
ASSIGN ir_tab_from->* TO <lt_from>.
|
||||
raise( when = xsdbool( sy-subrc <> 0 ) ).
|
||||
|
||||
CLEAR ct_to.
|
||||
CLEAR t_result.
|
||||
|
||||
DATA lr_row TYPE REF TO data.
|
||||
CREATE DATA lr_row LIKE LINE OF ct_to.
|
||||
CREATE DATA lr_row LIKE LINE OF t_result.
|
||||
ASSIGN lr_row->* TO FIELD-SYMBOL(<row>).
|
||||
|
||||
DATA(lo_descr) = cl_abap_datadescr=>describe_by_data( <row> ).
|
||||
|
@ -504,7 +381,7 @@ CLASS z2ui5_lcl_utility IMPLEMENTATION.
|
|||
ENDIF.
|
||||
ENDLOOP.
|
||||
|
||||
INSERT <row> INTO TABLE ct_to.
|
||||
INSERT <row> INTO TABLE t_result.
|
||||
ENDLOOP.
|
||||
|
||||
ENDMETHOD.
|
||||
|
@ -548,15 +425,6 @@ CLASS z2ui5_lcl_utility_tree_json DEFINITION.
|
|||
|
||||
PUBLIC SECTION.
|
||||
|
||||
TYPES:
|
||||
BEGIN OF ty_s_name,
|
||||
n TYPE string,
|
||||
v TYPE string,
|
||||
no_apos TYPE abap_bool,
|
||||
END OF ty_s_name.
|
||||
|
||||
TYPES ty_t_name_value TYPE STANDARD TABLE OF ty_s_name.
|
||||
|
||||
DATA mo_root TYPE REF TO z2ui5_lcl_utility_tree_json.
|
||||
DATA mo_parent TYPE REF TO z2ui5_lcl_utility_tree_json.
|
||||
DATA mv_name TYPE string.
|
||||
|
@ -595,10 +463,6 @@ CLASS z2ui5_lcl_utility_tree_json DEFINITION.
|
|||
RETURNING
|
||||
VALUE(result) TYPE string.
|
||||
|
||||
METHODS get_parent
|
||||
RETURNING
|
||||
VALUE(result) TYPE REF TO z2ui5_lcl_utility_tree_json.
|
||||
|
||||
METHODS add_list_val
|
||||
IMPORTING
|
||||
v TYPE string
|
||||
|
@ -613,18 +477,18 @@ CLASS z2ui5_lcl_utility_tree_json DEFINITION.
|
|||
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
|
||||
RETURNING
|
||||
VALUE(result) TYPE REF TO z2ui5_lcl_utility_tree_json.
|
||||
|
||||
METHODS add_attribute_object
|
||||
IMPORTING
|
||||
name TYPE clike
|
||||
RETURNING
|
||||
VALUE(result) TYPE REF TO z2ui5_lcl_utility_tree_json.
|
||||
|
||||
METHODS add_attribute_struc
|
||||
IMPORTING
|
||||
val TYPE data
|
||||
RETURNING
|
||||
VALUE(result) TYPE REF TO z2ui5_lcl_utility_tree_json.
|
||||
|
||||
METHODS add_list_object
|
||||
RETURNING
|
||||
VALUE(result) TYPE REF TO z2ui5_lcl_utility_tree_json.
|
||||
|
@ -649,9 +513,6 @@ CLASS z2ui5_lcl_utility_tree_json DEFINITION.
|
|||
RETURNING
|
||||
VALUE(result) TYPE string.
|
||||
|
||||
METHODS get_name
|
||||
RETURNING
|
||||
VALUE(result) TYPE string.
|
||||
|
||||
PROTECTED SECTION.
|
||||
|
||||
|
@ -692,20 +553,6 @@ CLASS z2ui5_lcl_utility_tree_json IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD add_attributes_name_value_tab.
|
||||
|
||||
LOOP AT it_name_value INTO DATA(ls_value).
|
||||
add_attribute(
|
||||
n = ls_value-n
|
||||
v = ls_value-v
|
||||
apos_active = xsdbool( ls_value-no_apos = abap_false ) ).
|
||||
ENDLOOP.
|
||||
|
||||
result = me.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD add_attribute_instance.
|
||||
|
||||
val->mo_root = mo_root.
|
||||
|
@ -724,6 +571,21 @@ CLASS z2ui5_lcl_utility_tree_json IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD add_attribute_struc.
|
||||
|
||||
FIELD-SYMBOLS <value> TYPE any.
|
||||
DATA(lo_struc) = CAST cl_abap_structdescr( cl_abap_datadescr=>describe_by_data( val ) ).
|
||||
DATA(lt_comp) = lo_struc->get_components( ).
|
||||
|
||||
LOOP AT lt_comp REFERENCE INTO DATA(lr_comp).
|
||||
ASSIGN COMPONENT lr_comp->name OF STRUCTURE val TO <value>.
|
||||
add_attribute( n = lr_comp->name v = <value> ).
|
||||
ENDLOOP.
|
||||
|
||||
result = me.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD add_attribute_object.
|
||||
|
||||
DATA(lo_attri) = new( io_root = mo_root iv_name = name ).
|
||||
|
@ -824,19 +686,6 @@ CLASS z2ui5_lcl_utility_tree_json IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD get_name.
|
||||
|
||||
result = mv_name.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD get_parent.
|
||||
|
||||
result = COND #( WHEN mo_parent IS NOT BOUND THEN me ELSE mo_parent ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD get_root.
|
||||
|
||||
|
@ -914,8 +763,12 @@ CLASS z2ui5_lcl_fw_handler DEFINITION.
|
|||
BEGIN OF ty_s_next,
|
||||
check_app_leave TYPE abap_bool,
|
||||
o_call_app TYPE REF TO z2ui5_if_app,
|
||||
t_after TYPE z2ui5_lcl_utility=>ty_tt_string,
|
||||
s_set TYPE z2ui5_if_client=>ty_S_next,
|
||||
BEGIN OF s_msg,
|
||||
control TYPE string,
|
||||
type TYPE string,
|
||||
text TYPE string,
|
||||
END OF s_msg,
|
||||
END OF ty_s_next.
|
||||
|
||||
DATA ms_actual TYPE z2ui5_if_client=>ty_s_get.
|
||||
|
@ -1403,46 +1256,35 @@ CLASS z2ui5_lcl_fw_handler IMPLEMENTATION.
|
|||
ENDIF.
|
||||
ENDIF.
|
||||
|
||||
z2ui5_lcl_utility=>raise( when = xsdbool( ms_next-s_set-check_set_prev_view = abap_false AND ms_next-s_set-xml_popup IS INITIAL AND ms_next-s_set-xml_main IS INITIAL )
|
||||
v = `No view or popup found. Check your view rendering!` ).
|
||||
IF ms_next-s_set-check_set_prev_view = abap_false AND ms_next-s_set-xml_popup IS INITIAL AND ms_next-s_set-xml_main IS INITIAL.
|
||||
z2ui5_lcl_utility=>raise( `No view or popup found. Check your view rendering!` ).
|
||||
ENDIF.
|
||||
|
||||
lo_ui5_model->add_attribute_object( `oSystem`
|
||||
)->add_attribute( n = `ID` v = ms_db-id
|
||||
" )->add_attribute( n = `CHECK_DEBUG_ACTIVE` v = z2ui5_lcl_utility=>get_abap_2_json( abap_true ) apos_active = abap_false
|
||||
).
|
||||
lo_ui5_model->add_attribute_object( `oSystem` )->add_attribute( n = `ID` v = ms_db-id ).
|
||||
|
||||
IF ms_next-t_after IS NOT INITIAL.
|
||||
DATA(lo_list) = lo_ui5_model->add_attribute_list( `oAfter` ).
|
||||
LOOP AT ms_next-t_after REFERENCE INTO DATA(lr_after).
|
||||
DATA(lo_list2) = lo_list->add_list_list( ).
|
||||
LOOP AT lr_after->* REFERENCE INTO DATA(lr_con).
|
||||
lo_list2->add_list_val( lr_con->* ).
|
||||
ENDLOOP.
|
||||
IF ms_next-s_msg IS NOT INITIAL.
|
||||
lo_ui5_model->add_attribute_object( `oMessage` )->add_attribute_struc( ms_next-s_msg ).
|
||||
ENDIF.
|
||||
|
||||
IF ms_next-s_set-t_scroll_pos IS NOT INITIAL.
|
||||
DATA(lo_list) = lo_ui5_model->add_attribute_list( `oScroll` ).
|
||||
LOOP AT ms_next-s_set-t_scroll_pos REFERENCE INTO DATA(lr_focus).
|
||||
lo_list->add_list_object( )->add_attribute_struc( lr_focus->* ).
|
||||
ENDLOOP.
|
||||
ENDIF.
|
||||
|
||||
lo_list = lo_ui5_model->add_attribute_list( `oScroll` ).
|
||||
LOOP AT ms_next-s_set-t_scroll_pos REFERENCE INTO DATA(lr_focus).
|
||||
lo_list->add_list_object( )->add_attribute( n = lr_focus->name v = lr_focus->value apos_active = abap_false ).
|
||||
ENDLOOP.
|
||||
|
||||
IF ms_next-s_set-s_cursor_pos IS NOT INITIAL.
|
||||
lo_ui5_model->add_attribute_object( `oCursor`
|
||||
)->add_attribute( n = `cursorPos` v = ms_next-s_set-s_cursor_pos-cursorpos apos_active = abap_false
|
||||
)->add_attribute( n = `id` v = ms_next-s_set-s_cursor_pos-id
|
||||
)->add_attribute( n = `selectionEnd` v = ms_next-s_set-s_cursor_pos-selectionend apos_active = abap_false
|
||||
)->add_attribute( n = `selectionStart` v = ms_next-s_set-s_cursor_pos-selectionstart apos_active = abap_false ).
|
||||
lo_ui5_model->add_attribute_object( `oCursor` )->add_attribute_struc( ms_next-s_set-s_cursor_pos ).
|
||||
ENDIF.
|
||||
|
||||
IF ms_next-s_set-s_timer IS NOT INITIAL.
|
||||
lo_ui5_model->add_attribute_object( `oTimer`
|
||||
)->add_attribute( n = `eventFinished` v = ms_next-s_set-s_timer-event_finished
|
||||
)->add_attribute( n = `intervalMs` v = ms_next-s_set-s_timer-interval_ms apos_active = abap_false ).
|
||||
lo_ui5_model->add_attribute_object( `oTimer` )->add_attribute_struc( ms_next-s_set-s_timer ).
|
||||
ENDIF.
|
||||
|
||||
IF ms_next-s_set-check_set_prev_view = abap_true.
|
||||
lo_ui5_model->add_attribute( n = `SET_PREV_VIEW` v = `true` apos_active = abap_false ).
|
||||
ENDIF.
|
||||
|
||||
result = lo_ui5_model->get_root( )->stringify( ).
|
||||
z2ui5_lcl_fw_db=>create( id = ms_db-id db = ms_db ).
|
||||
|
||||
|
@ -1496,7 +1338,7 @@ CLASS z2ui5_lcl_fw_handler IMPLEMENTATION.
|
|||
WHEN `h`.
|
||||
z2ui5_lcl_utility=>trans_ref_tab_2_tab(
|
||||
EXPORTING ir_tab_from = lo_model->get_attribute( lr_attri->name )->mr_actual
|
||||
CHANGING ct_to = <attribute> ).
|
||||
IMPORTING t_result = <attribute> ).
|
||||
|
||||
WHEN OTHERS.
|
||||
ENDCASE.
|
||||
|
@ -1508,6 +1350,14 @@ CLASS z2ui5_lcl_fw_handler IMPLEMENTATION.
|
|||
CATCH cx_root.
|
||||
ENDTRY.
|
||||
|
||||
TRY.
|
||||
DATA(lo_scroll) = mo_body->get_attribute( `OSCROLL` ).
|
||||
z2ui5_lcl_utility=>trans_ref_tab_2_tab(
|
||||
EXPORTING ir_tab_from = lo_scroll->mr_actual
|
||||
IMPORTING t_result = result->ms_actual-t_scroll_pos ).
|
||||
CATCH cx_root.
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
|
@ -1568,7 +1418,7 @@ CLASS z2ui5_lcl_fw_handler IMPLEMENTATION.
|
|||
result->ms_db-id_prev_app = ms_db-id.
|
||||
result->ms_db-id_prev_app_stack = ms_db-id.
|
||||
|
||||
result->ms_next-t_after = ms_next-t_after.
|
||||
result->ms_next-s_msg = ms_next-s_msg.
|
||||
|
||||
result->ms_db-t_attri = z2ui5_lcl_utility=>get_t_attri_by_ref( result->ms_db-o_app ).
|
||||
CLEAR ms_next.
|
||||
|
@ -1679,10 +1529,7 @@ CLASS z2ui5_lcl_fw_handler IMPLEMENTATION.
|
|||
|
||||
result->ms_db-id_prev_app = ms_db-id.
|
||||
result->ms_db-id_prev_app_stack = ms_db-id.
|
||||
|
||||
result->ms_next-t_after = ms_next-t_after.
|
||||
|
||||
|
||||
result->ms_next-s_msg = ms_next-s_msg.
|
||||
result->ms_db-id_prev_app = ms_db-id.
|
||||
|
||||
ELSE.
|
||||
|
@ -1763,14 +1610,22 @@ CLASS z2ui5_lcl_fw_client IMPLEMENTATION.
|
|||
|
||||
METHOD z2ui5_if_client~popup_message_toast.
|
||||
|
||||
INSERT VALUE #( ( `MessageToast` ) ( `show` ) ( text ) ) INTO TABLE mo_handler->ms_next-t_after.
|
||||
mo_handler->ms_next-s_msg = VALUE #(
|
||||
control = `MessageToast`
|
||||
type = `show`
|
||||
text = text
|
||||
).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD z2ui5_if_client~popup_message_box.
|
||||
|
||||
INSERT VALUE #( ( `MessageBox` ) ( type ) ( text ) ) INTO TABLE mo_handler->ms_next-t_after.
|
||||
mo_handler->ms_next-s_msg = VALUE #(
|
||||
control = `MessageBox`
|
||||
type = type
|
||||
text = text
|
||||
).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
@ -1787,6 +1642,7 @@ CLASS z2ui5_lcl_fw_client IMPLEMENTATION.
|
|||
result = VALUE #( BASE CORRESPONDING #( mo_handler->ms_db )
|
||||
event = mo_handler->ms_actual-event
|
||||
event_data = mo_handler->ms_actual-event_data
|
||||
t_scroll_pos = mo_handler->ms_actual-t_scroll_pos
|
||||
t_req_header = z2ui5_cl_http_handler=>client-t_header
|
||||
t_req_param = z2ui5_cl_http_handler=>client-t_param
|
||||
).
|
||||
|
|
|
@ -1,24 +1,19 @@
|
|||
CLASS ltcl_unit_test_basic DEFINITION FINAL FOR TESTING
|
||||
CLASS ltcl_unit_01_json DEFINITION FINAL FOR TESTING
|
||||
DURATION SHORT
|
||||
RISK LEVEL HARMLESS.
|
||||
|
||||
PUBLIC SECTION.
|
||||
INTERFACES z2ui5_if_app.
|
||||
|
||||
DATA product TYPE string.
|
||||
DATA quantity TYPE string.
|
||||
DATA check_initialized TYPE abap_bool.
|
||||
|
||||
PRIVATE SECTION.
|
||||
METHODS test_json_attri FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_json_object FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_index_html FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_app_start FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_app_change_value FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_json_attri FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_json_object FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_json_struc FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_json_trans FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_json_trans_gen FOR TESTING RAISING cx_static_check.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS ltcl_unit_test_basic IMPLEMENTATION.
|
||||
CLASS ltcl_unit_01_json IMPLEMENTATION.
|
||||
|
||||
METHOD test_json_attri.
|
||||
|
||||
|
@ -47,6 +42,130 @@ CLASS ltcl_unit_test_basic IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD test_json_struc.
|
||||
|
||||
DATA(lo_tree) = NEW z2ui5_lcl_utility_tree_json( ).
|
||||
|
||||
TYPES:
|
||||
BEGIN OF ty_s_test,
|
||||
comp1 TYPE string,
|
||||
comp2 TYPE string,
|
||||
END OF ty_s_test.
|
||||
|
||||
DATA(ls_test) = VALUE ty_S_test( comp1 = `AAA` comp2 = `BBB` ).
|
||||
|
||||
lo_tree->add_attribute_object( `CCC`
|
||||
)->add_attribute_struc( ls_test ).
|
||||
|
||||
DATA(lv_result) = lo_tree->stringify( ).
|
||||
IF `{"CCC":{"COMP1":"AAA","COMP2":"BBB"}}` <> lv_result.
|
||||
cl_abap_unit_assert=>fail( 'json tree - wrong stringify structure' ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD test_json_trans.
|
||||
|
||||
TYPES:
|
||||
BEGIN OF ty_row,
|
||||
title TYPE string,
|
||||
value TYPE string,
|
||||
selected TYPE abap_bool,
|
||||
END OF ty_row.
|
||||
TYPES ty_t_tab TYPE STANDARD TABLE OF ty_row WITH EMPTY KEY.
|
||||
|
||||
DATA(lt_tab) = VALUE ty_t_tab(
|
||||
( title = 'Test' value = 'this is a description' selected = abap_true )
|
||||
( title = 'Test2' value = 'this is a new descr' selected = abap_false )
|
||||
).
|
||||
|
||||
DATA(lt_tab2) = VALUE ty_t_tab( ).
|
||||
|
||||
DATA(lv_tab) = z2ui5_lcl_utility=>trans_any_2_json( lt_tab ).
|
||||
|
||||
/ui2/cl_json=>deserialize(
|
||||
EXPORTING
|
||||
json = lv_tab
|
||||
CHANGING
|
||||
data = lt_tab2
|
||||
).
|
||||
|
||||
IF lt_tab <> lt_tab2.
|
||||
cl_abap_unit_assert=>fail( msg = 'json serial - /ui2/cl_json wrong simple table' quit = 5 ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD test_json_trans_gen.
|
||||
|
||||
TYPES:
|
||||
BEGIN OF ty_row,
|
||||
title TYPE string,
|
||||
value TYPE string,
|
||||
selected TYPE abap_bool,
|
||||
END OF ty_row.
|
||||
TYPES ty_t_tab TYPE STANDARD TABLE OF ty_row WITH EMPTY KEY.
|
||||
|
||||
DATA(lt_tab) = VALUE ty_t_tab(
|
||||
( title = 'Test' value = 'this is a description' selected = abap_true )
|
||||
( title = 'Test2' value = 'this is a new descr' selected = abap_false )
|
||||
).
|
||||
|
||||
DATA(lt_tab2) = VALUE ty_t_tab( ).
|
||||
|
||||
DATA(lv_tab) = z2ui5_lcl_utility=>trans_any_2_json( lt_tab ).
|
||||
|
||||
DATA lo_data TYPE REF TO data.
|
||||
/ui2/cl_json=>deserialize(
|
||||
EXPORTING
|
||||
json = lv_tab
|
||||
CHANGING
|
||||
data = lo_data
|
||||
).
|
||||
|
||||
z2ui5_lcl_utility=>trans_ref_tab_2_tab(
|
||||
EXPORTING
|
||||
ir_tab_from = lo_data
|
||||
IMPORTING
|
||||
t_result = lt_tab2
|
||||
).
|
||||
|
||||
IF lt_tab <> lt_tab2.
|
||||
cl_abap_unit_assert=>fail( msg = 'json serial - /ui2/cl_json wrong generic table' quit = 5 ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
CLASS ltcl_unit_02_app_start DEFINITION FINAL FOR TESTING
|
||||
DURATION SHORT
|
||||
RISK LEVEL HARMLESS.
|
||||
|
||||
PUBLIC SECTION.
|
||||
INTERFACES z2ui5_if_app.
|
||||
|
||||
DATA product TYPE string.
|
||||
DATA quantity TYPE string.
|
||||
DATA check_initialized TYPE abap_bool.
|
||||
|
||||
CLASS-DATA sv_state TYPE string.
|
||||
|
||||
PRIVATE SECTION.
|
||||
METHODS test_index_html FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_xml_view FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_id FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_xml_popup FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_bind_one_way FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_bind_two_way FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_message_toast FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_message_box FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_timer FOR TESTING RAISING cx_static_check.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS ltcl_unit_02_app_start IMPLEMENTATION.
|
||||
|
||||
METHOD test_index_html.
|
||||
|
||||
z2ui5_cl_http_handler=>client = VALUE #(
|
||||
|
@ -61,6 +180,393 @@ CLASS ltcl_unit_test_basic IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD z2ui5_if_app~main.
|
||||
|
||||
IF check_initialized = abap_false.
|
||||
check_initialized = abap_true.
|
||||
product = 'tomato'.
|
||||
quantity = '500'.
|
||||
|
||||
ENDIF.
|
||||
|
||||
CASE client->get( )-event.
|
||||
WHEN 'BUTTON_POST'.
|
||||
client->popup_message_toast( |{ product } { quantity } - send to the server| ).
|
||||
WHEN 'BACK'.
|
||||
client->nav_app_leave( client->get_app( client->get( )-id_prev_app_stack ) ).
|
||||
ENDCASE.
|
||||
|
||||
IF sv_state = 'TEST_MESSAGE_BOX'.
|
||||
client->popup_message_box(
|
||||
text = 'test message box'
|
||||
).
|
||||
ENDIF.
|
||||
|
||||
IF sv_state = 'TEST_MESSAGE_TOAST'.
|
||||
client->popup_message_toast(
|
||||
text = 'test message toast'
|
||||
).
|
||||
ENDIF.
|
||||
|
||||
CASE sv_state.
|
||||
|
||||
WHEN 'TEST_ONE_WAY'.
|
||||
client->set_next( VALUE #( xml_main = z2ui5_cl_xml_view=>factory( )->shell(
|
||||
)->page(
|
||||
title = 'abap2UI5 - First Example'
|
||||
navbuttonpress = client->_event( 'BACK' )
|
||||
shownavbutton = abap_true
|
||||
)->simple_form( title = 'Form Title' editable = abap_true
|
||||
)->content( 'form'
|
||||
)->title( 'Input'
|
||||
)->label( 'quantity'
|
||||
)->input( client->_bind_one( quantity )
|
||||
)->label( 'product'
|
||||
)->input(
|
||||
value = product
|
||||
enabled = abap_false
|
||||
)->button(
|
||||
text = 'post'
|
||||
press = client->_event( 'BUTTON_POST' )
|
||||
)->get_root( )->xml_get( ) ) ).
|
||||
|
||||
WHEN 'TEST_POPUP'.
|
||||
client->set_next( VALUE #( xml_popup = z2ui5_cl_xml_view=>factory(
|
||||
)->dialog(
|
||||
title = 'abap2UI5 - First Example'
|
||||
)->simple_form( title = 'Form Title' editable = abap_true
|
||||
)->content( 'form'
|
||||
)->title( 'Input'
|
||||
)->label( 'quantity'
|
||||
)->input( client->_bind_one( quantity )
|
||||
)->label( 'product'
|
||||
)->input(
|
||||
value = product
|
||||
enabled = abap_false
|
||||
)->button(
|
||||
text = 'post'
|
||||
press = client->_event( 'BUTTON_POST' )
|
||||
)->get_root( )->xml_get( ) ) ).
|
||||
|
||||
WHEN 'TEST_TIMER'.
|
||||
client->set_next( VALUE #(
|
||||
s_timer = VALUE #(
|
||||
event_finished = 'TIMER_FINISHED'
|
||||
interval_ms = `500`
|
||||
)
|
||||
xml_main = z2ui5_cl_xml_view=>factory( )->shell(
|
||||
)->page(
|
||||
title = 'abap2UI5 - First Example'
|
||||
navbuttonpress = client->_event( 'BACK' )
|
||||
shownavbutton = abap_true
|
||||
)->simple_form( title = 'Form Title' editable = abap_true
|
||||
)->content( 'form'
|
||||
)->title( 'Input'
|
||||
)->label( 'quantity'
|
||||
)->input( client->_bind( quantity )
|
||||
)->label( 'product'
|
||||
)->input(
|
||||
value = product
|
||||
enabled = abap_false
|
||||
)->button(
|
||||
text = 'post'
|
||||
press = client->_event( 'BUTTON_POST' )
|
||||
)->get_root( )->xml_get( ) ) ).
|
||||
|
||||
WHEN OTHERS.
|
||||
client->set_next( VALUE #( xml_main = z2ui5_cl_xml_view=>factory( )->shell(
|
||||
)->page(
|
||||
title = 'abap2UI5 - First Example'
|
||||
navbuttonpress = client->_event( 'BACK' )
|
||||
shownavbutton = abap_true
|
||||
)->simple_form( title = 'Form Title' editable = abap_true
|
||||
)->content( 'form'
|
||||
)->title( 'Input'
|
||||
)->label( 'quantity'
|
||||
)->input( client->_bind( quantity )
|
||||
)->label( 'product'
|
||||
)->input(
|
||||
value = product
|
||||
enabled = abap_false
|
||||
)->button(
|
||||
text = 'post'
|
||||
press = client->_event( 'BUTTON_POST' )
|
||||
)->get_root( )->xml_get( ) ) ).
|
||||
|
||||
ENDCASE.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD test_xml_view.
|
||||
|
||||
z2ui5_cl_http_handler=>client = VALUE #(
|
||||
t_param = VALUE #( ( name = 'app' value = 'LTCL_UNIT_02_APP_START' ) )
|
||||
).
|
||||
|
||||
sv_state = ``.
|
||||
DATA(lv_response) = z2ui5_cl_http_handler=>http_post( ).
|
||||
|
||||
DATA lo_data TYPE REF TO data.
|
||||
/ui2/cl_json=>deserialize(
|
||||
EXPORTING
|
||||
json = lv_response
|
||||
CHANGING
|
||||
data = lo_data ).
|
||||
|
||||
FIELD-SYMBOLS <val> TYPE any.
|
||||
UNASSIGN <val>.
|
||||
DATA(lv_assign) = `VVIEW->*`.
|
||||
ASSIGN lo_data->(lv_assign) TO <val>.
|
||||
<val> = shift_left( <val> ).
|
||||
IF <val>(9) <> `<mvc:View`.
|
||||
cl_abap_unit_assert=>fail( msg = 'xml view - intital view wrong' quit = 5 ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD test_id.
|
||||
|
||||
z2ui5_cl_http_handler=>client = VALUE #(
|
||||
t_param = VALUE #( ( name = 'app' value = 'LTCL_UNIT_02_APP_START' ) )
|
||||
).
|
||||
|
||||
sv_state = ``.
|
||||
DATA(lv_response) = z2ui5_cl_http_handler=>http_post( ).
|
||||
|
||||
DATA lo_data TYPE REF TO data.
|
||||
/ui2/cl_json=>deserialize(
|
||||
EXPORTING
|
||||
json = lv_response
|
||||
CHANGING
|
||||
data = lo_data ).
|
||||
|
||||
FIELD-SYMBOLS <val> TYPE any.
|
||||
UNASSIGN <val>.
|
||||
DATA(lv_assign) = `OSYSTEM->ID->*`.
|
||||
ASSIGN lo_data->(lv_assign) TO <val>.
|
||||
IF <val> IS INITIAL.
|
||||
cl_abap_unit_assert=>fail( msg = 'id - initial value is initial' quit = 5 ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD test_bind_one_way.
|
||||
|
||||
z2ui5_cl_http_handler=>client = VALUE #(
|
||||
t_param = VALUE #( ( name = 'app' value = 'LTCL_UNIT_02_APP_START' ) )
|
||||
).
|
||||
|
||||
sv_state = `TEST_ONE_WAY`.
|
||||
DATA(lv_response) = z2ui5_cl_http_handler=>http_post( ).
|
||||
|
||||
DATA lo_data TYPE REF TO data.
|
||||
/ui2/cl_json=>deserialize(
|
||||
EXPORTING
|
||||
json = lv_response
|
||||
CHANGING
|
||||
data = lo_data ).
|
||||
|
||||
FIELD-SYMBOLS <val> TYPE any.
|
||||
UNASSIGN <val>.
|
||||
DATA(lv_assign) = `OVIEWMODEL->QUANTITY->*`.
|
||||
ASSIGN lo_data->(lv_assign) TO <val>.
|
||||
IF <val> <> `500`.
|
||||
cl_abap_unit_assert=>fail( msg = 'data binding - initial set oUpdate wrong' quit = 5 ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD test_bind_two_way.
|
||||
|
||||
z2ui5_cl_http_handler=>client = VALUE #(
|
||||
t_param = VALUE #( ( name = 'app' value = 'LTCL_UNIT_02_APP_START' ) )
|
||||
).
|
||||
|
||||
sv_state = ``.
|
||||
DATA(lv_response) = z2ui5_cl_http_handler=>http_post( ).
|
||||
|
||||
DATA lo_data TYPE REF TO data.
|
||||
/ui2/cl_json=>deserialize(
|
||||
EXPORTING
|
||||
json = lv_response
|
||||
CHANGING
|
||||
data = lo_data ).
|
||||
|
||||
FIELD-SYMBOLS <val> TYPE any.
|
||||
UNASSIGN <val>.
|
||||
DATA(lv_assign) = `OVIEWMODEL->OUPDATE->QUANTITY->*`.
|
||||
ASSIGN lo_data->(lv_assign) TO <val>.
|
||||
IF <val> <> `500`.
|
||||
cl_abap_unit_assert=>fail( msg = 'data binding - initial set oUpdate wrong' quit = 5 ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD test_message_box.
|
||||
|
||||
z2ui5_cl_http_handler=>client = VALUE #(
|
||||
t_param = VALUE #( ( name = 'app' value = 'LTCL_UNIT_02_APP_START' ) )
|
||||
).
|
||||
|
||||
sv_state = `TEST_MESSAGE_BOX`.
|
||||
DATA(lv_response) = z2ui5_cl_http_handler=>http_post( ).
|
||||
|
||||
DATA lo_data TYPE REF TO data.
|
||||
/ui2/cl_json=>deserialize(
|
||||
EXPORTING
|
||||
json = lv_response
|
||||
CHANGING
|
||||
data = lo_data ).
|
||||
|
||||
FIELD-SYMBOLS <val> TYPE any.
|
||||
|
||||
UNASSIGN <val>.
|
||||
DATA(lv_assign) = `OMESSAGE->CONTROL->*`.
|
||||
ASSIGN lo_data->(lv_assign) TO <val>.
|
||||
IF <val> <> `MessageBox`.
|
||||
cl_abap_unit_assert=>fail( msg = 'message box - control wrong' quit = 5 ).
|
||||
ENDIF.
|
||||
|
||||
UNASSIGN <val>.
|
||||
lv_assign = `OMESSAGE->TEXT->*`.
|
||||
ASSIGN lo_data->(lv_assign) TO <val>.
|
||||
IF <val> <> `test message box`.
|
||||
cl_abap_unit_assert=>fail( msg = 'message box - text wrong' quit = 5 ).
|
||||
ENDIF.
|
||||
|
||||
UNASSIGN <val>.
|
||||
lv_assign = `OMESSAGE->TYPE->*`.
|
||||
ASSIGN lo_data->(lv_assign) TO <val>.
|
||||
IF <val> <> `information`.
|
||||
cl_abap_unit_assert=>fail( msg = 'message box - type wrong' quit = 5 ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD test_message_toast.
|
||||
|
||||
z2ui5_cl_http_handler=>client = VALUE #(
|
||||
t_param = VALUE #( ( name = 'app' value = 'LTCL_UNIT_02_APP_START' ) )
|
||||
).
|
||||
|
||||
sv_state = `TEST_MESSAGE_TOAST`.
|
||||
DATA(lv_response) = z2ui5_cl_http_handler=>http_post( ).
|
||||
|
||||
DATA lo_data TYPE REF TO data.
|
||||
/ui2/cl_json=>deserialize(
|
||||
EXPORTING
|
||||
json = lv_response
|
||||
CHANGING
|
||||
data = lo_data ).
|
||||
|
||||
FIELD-SYMBOLS <val> TYPE any.
|
||||
|
||||
UNASSIGN <val>.
|
||||
DATA(lv_assign) = `OMESSAGE->CONTROL->*`.
|
||||
ASSIGN lo_data->(lv_assign) TO <val>.
|
||||
IF <val> <> `MessageToast`.
|
||||
cl_abap_unit_assert=>fail( msg = 'message toast - control wrong' quit = 5 ).
|
||||
ENDIF.
|
||||
|
||||
UNASSIGN <val>.
|
||||
lv_assign = `OMESSAGE->TEXT->*`.
|
||||
ASSIGN lo_data->(lv_assign) TO <val>.
|
||||
IF <val> <> `test message toast`.
|
||||
cl_abap_unit_assert=>fail( msg = 'message toast - text wrong' quit = 5 ).
|
||||
ENDIF.
|
||||
|
||||
UNASSIGN <val>.
|
||||
lv_assign = `OMESSAGE->TYPE->*`.
|
||||
ASSIGN lo_data->(lv_assign) TO <val>.
|
||||
IF <val> <> `show`.
|
||||
cl_abap_unit_assert=>fail( msg = 'message toast - type wrong' quit = 5 ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD test_timer.
|
||||
|
||||
z2ui5_cl_http_handler=>client = VALUE #(
|
||||
t_param = VALUE #( ( name = 'app' value = 'LTCL_UNIT_02_APP_START' ) )
|
||||
).
|
||||
|
||||
sv_state = `TEST_TIMER`.
|
||||
DATA(lv_response) = z2ui5_cl_http_handler=>http_post( ).
|
||||
|
||||
DATA lo_data TYPE REF TO data.
|
||||
/ui2/cl_json=>deserialize(
|
||||
EXPORTING
|
||||
json = lv_response
|
||||
CHANGING
|
||||
data = lo_data ).
|
||||
|
||||
FIELD-SYMBOLS <val> TYPE any.
|
||||
|
||||
UNASSIGN <val>.
|
||||
DATA(lv_assign) = `OTIMER->EVENT_FINISHED->*`.
|
||||
ASSIGN lo_data->(lv_assign) TO <val>.
|
||||
IF <val> <> `TIMER_FINISHED`.
|
||||
cl_abap_unit_assert=>fail( msg = 'timer - event wrong' quit = 5 ).
|
||||
ENDIF.
|
||||
|
||||
UNASSIGN <val>.
|
||||
lv_assign = `OTIMER->INTERVAL_MS->*`.
|
||||
ASSIGN lo_data->(lv_assign) TO <val>.
|
||||
IF <val> <> `500`.
|
||||
cl_abap_unit_assert=>fail( msg = 'timer - ms wrong' quit = 5 ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD test_xml_popup.
|
||||
|
||||
z2ui5_cl_http_handler=>client = VALUE #(
|
||||
t_param = VALUE #( ( name = 'app' value = 'LTCL_UNIT_02_APP_START' ) )
|
||||
).
|
||||
|
||||
sv_state = `TEST_POPUP`.
|
||||
DATA(lv_response) = z2ui5_cl_http_handler=>http_post( ).
|
||||
|
||||
DATA lo_data TYPE REF TO data.
|
||||
/ui2/cl_json=>deserialize(
|
||||
EXPORTING
|
||||
json = lv_response
|
||||
CHANGING
|
||||
data = lo_data ).
|
||||
|
||||
FIELD-SYMBOLS <val> TYPE any.
|
||||
UNASSIGN <val>.
|
||||
DATA(lv_assign) = `VVIEWPOPUP->*`.
|
||||
ASSIGN lo_data->(lv_assign) TO <val>.
|
||||
<val> = shift_left( <val> ).
|
||||
IF <val>(9) <> `<mvc:View`.
|
||||
cl_abap_unit_assert=>fail( msg = 'xml popup - intital popup wrong' quit = 5 ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
CLASS ltcl_unit_03_app_ajax DEFINITION FINAL FOR TESTING
|
||||
DURATION SHORT
|
||||
RISK LEVEL HARMLESS.
|
||||
|
||||
PUBLIC SECTION.
|
||||
|
||||
INTERFACES z2ui5_if_app.
|
||||
|
||||
DATA product TYPE string.
|
||||
DATA quantity TYPE string.
|
||||
DATA check_initialized TYPE abap_bool.
|
||||
|
||||
PRIVATE SECTION.
|
||||
METHODS test_app_change_value FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_app_event FOR TESTING RAISING cx_static_check.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
CLASS ltcl_unit_03_app_ajax IMPLEMENTATION.
|
||||
|
||||
METHOD z2ui5_if_app~main.
|
||||
|
||||
IF check_initialized = abap_false.
|
||||
|
@ -96,55 +602,12 @@ CLASS ltcl_unit_test_basic IMPLEMENTATION.
|
|||
press = client->_event( 'BUTTON_POST' )
|
||||
)->get_root( )->xml_get( ) ) ).
|
||||
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD test_app_start.
|
||||
|
||||
z2ui5_cl_http_handler=>client = VALUE #(
|
||||
t_param = VALUE #( ( name = 'app' value = 'LTCL_UNIT_TEST_BASIC' ) )
|
||||
).
|
||||
|
||||
DATA(lv_response) = z2ui5_cl_http_handler=>http_post( ).
|
||||
|
||||
DATA lo_data TYPE REF TO data.
|
||||
/ui2/cl_json=>deserialize(
|
||||
EXPORTING
|
||||
json = lv_response
|
||||
CHANGING
|
||||
data = lo_data ).
|
||||
|
||||
DATA lv_assign TYPE string.
|
||||
FIELD-SYMBOLS <val> TYPE any.
|
||||
|
||||
UNASSIGN <val>.
|
||||
lv_assign = `OVIEWMODEL->OUPDATE->QUANTITY->*`.
|
||||
ASSIGN lo_data->(lv_assign) TO <val>.
|
||||
IF <val> <> `500`.
|
||||
cl_abap_unit_assert=>fail( msg = 'data binding - initial set oUpdate wrong' quit = 5 ).
|
||||
ENDIF.
|
||||
|
||||
UNASSIGN <val>.
|
||||
lv_assign = `VVIEW->*`.
|
||||
ASSIGN lo_data->(lv_assign) TO <val>.
|
||||
<val> = shift_left( <val> ).
|
||||
IF <val>(9) <> `<mvc:View`.
|
||||
cl_abap_unit_assert=>fail( msg = 'xml view - intital view wrong' quit = 5 ).
|
||||
ENDIF.
|
||||
|
||||
UNASSIGN <val>.
|
||||
lv_assign = `OSYSTEM->ID->*`.
|
||||
ASSIGN lo_data->(lv_assign) TO <val>.
|
||||
IF <val> IS INITIAL.
|
||||
cl_abap_unit_assert=>fail( msg = 'id - initial value is initial' quit = 5 ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD test_app_change_value.
|
||||
|
||||
z2ui5_cl_http_handler=>client = VALUE #(
|
||||
t_param = VALUE #( ( name = 'app' value = 'LTCL_UNIT_TEST_BASIC' ) )
|
||||
t_param = VALUE #( ( name = 'app' value = 'LTCL_UNIT_02_APP_START' ) )
|
||||
).
|
||||
|
||||
DATA(lv_response) = z2ui5_cl_http_handler=>http_post( ).
|
||||
|
@ -156,18 +619,10 @@ CLASS ltcl_unit_test_basic IMPLEMENTATION.
|
|||
CHANGING
|
||||
data = lo_data ).
|
||||
|
||||
DATA lv_assign TYPE string.
|
||||
FIELD-SYMBOLS <val> TYPE any.
|
||||
|
||||
UNASSIGN <val>.
|
||||
lv_assign = `OVIEWMODEL->OUPDATE->QUANTITY->*`.
|
||||
ASSIGN lo_data->(lv_assign) TO <val>.
|
||||
IF <val> <> `500`.
|
||||
cl_abap_unit_assert=>fail( msg = 'data binding - initial set oUpdate wrong' quit = 5 ).
|
||||
ENDIF.
|
||||
|
||||
UNASSIGN <val>.
|
||||
lv_assign = `OSYSTEM->ID->*`.
|
||||
DATA(lv_assign) = `OSYSTEM->ID->*`.
|
||||
ASSIGN lo_data->(lv_assign) TO <val>.
|
||||
IF <val> IS INITIAL.
|
||||
cl_abap_unit_assert=>fail( msg = 'id - initial value is initial' quit = 5 ).
|
||||
|
@ -178,7 +633,7 @@ CLASS ltcl_unit_test_basic IMPLEMENTATION.
|
|||
z2ui5_cl_http_handler=>client = VALUE #( body = lv_request ).
|
||||
lv_response = z2ui5_cl_http_handler=>http_post( ).
|
||||
|
||||
clear lo_data.
|
||||
CLEAR lo_data.
|
||||
/ui2/cl_json=>deserialize(
|
||||
EXPORTING
|
||||
json = lv_response
|
||||
|
@ -194,9 +649,54 @@ CLASS ltcl_unit_test_basic IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD test_app_event.
|
||||
|
||||
z2ui5_cl_http_handler=>client = VALUE #(
|
||||
t_param = VALUE #( ( name = 'app' value = 'LTCL_UNIT_02_APP_START' ) )
|
||||
).
|
||||
|
||||
DATA(lv_response) = z2ui5_cl_http_handler=>http_post( ).
|
||||
|
||||
DATA lo_data TYPE REF TO data.
|
||||
/ui2/cl_json=>deserialize(
|
||||
EXPORTING
|
||||
json = lv_response
|
||||
CHANGING
|
||||
data = lo_data ).
|
||||
|
||||
FIELD-SYMBOLS <val> TYPE any.
|
||||
|
||||
UNASSIGN <val>.
|
||||
DATA(lv_assign) = `OSYSTEM->ID->*`.
|
||||
ASSIGN lo_data->(lv_assign) TO <val>.
|
||||
IF <val> IS INITIAL.
|
||||
cl_abap_unit_assert=>fail( msg = 'id - initial value is initial' quit = 5 ).
|
||||
ENDIF.
|
||||
DATA(lv_id) = CONV string( <val> ).
|
||||
|
||||
DATA(lv_request) = `{"oUpdate":{"QUANTITY":"700"},"oSystem":{"ID": "` && lv_id && `"},"oEvent":{"EVENT":"BUTTON_POST","METHOD":"UPDATE"}}`.
|
||||
z2ui5_cl_http_handler=>client = VALUE #( body = lv_request ).
|
||||
lv_response = z2ui5_cl_http_handler=>http_post( ).
|
||||
|
||||
clear lo_data.
|
||||
/ui2/cl_json=>deserialize(
|
||||
EXPORTING
|
||||
json = lv_response
|
||||
CHANGING
|
||||
data = lo_data ).
|
||||
|
||||
UNASSIGN <val>.
|
||||
lv_assign = `OMESSAGE->TEXT->*`.
|
||||
ASSIGN lo_data->(lv_assign) TO <val>.
|
||||
IF <val> <> `tomato 700 - send to the server`.
|
||||
cl_abap_unit_assert=>fail( msg = 'message toast - text wrong' quit = 5 ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
CLASS ltcl_unit_test_deep_data DEFINITION FINAL FOR TESTING
|
||||
CLASS ltcl_unit_04_deep_data DEFINITION FINAL FOR TESTING
|
||||
DURATION SHORT
|
||||
RISK LEVEL HARMLESS.
|
||||
|
||||
|
@ -223,7 +723,7 @@ CLASS ltcl_unit_test_deep_data DEFINITION FINAL FOR TESTING
|
|||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS ltcl_unit_test_deep_data IMPLEMENTATION.
|
||||
CLASS ltcl_unit_04_deep_data IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD z2ui5_if_app~main.
|
||||
|
@ -264,7 +764,7 @@ CLASS ltcl_unit_test_deep_data IMPLEMENTATION.
|
|||
METHOD test_app_deep_data.
|
||||
|
||||
z2ui5_cl_http_handler=>client = VALUE #(
|
||||
t_param = VALUE #( ( name = 'app' value = 'LTCL_UNIT_TEST_DEEP_DATA' ) )
|
||||
t_param = VALUE #( ( name = 'app' value = 'LTCL_UNIT_04_DEEP_DATA' ) )
|
||||
).
|
||||
|
||||
DATA(lv_response) = z2ui5_cl_http_handler=>http_post( ).
|
||||
|
@ -276,17 +776,16 @@ CLASS ltcl_unit_test_deep_data IMPLEMENTATION.
|
|||
CHANGING
|
||||
data = lo_data ).
|
||||
|
||||
DATA lv_assign TYPE string.
|
||||
FIELD-SYMBOLS <val> TYPE any.
|
||||
|
||||
UNASSIGN <val>.
|
||||
FIELD-SYMBOLS <tab> TYPE STANDARD TABLE.
|
||||
FIELD-SYMBOLS <row> TYPE any.
|
||||
lv_assign = `OVIEWMODEL->T_TAB->*`.
|
||||
DATA(lv_assign) = `OVIEWMODEL->T_TAB->*`.
|
||||
ASSIGN lo_data->(lv_assign) TO <tab>.
|
||||
ASSIGN <tab>[ 1 ] TO <row>.
|
||||
|
||||
DATA ls_tab_test TYPE ltcl_unit_test_deep_data=>ty_row.
|
||||
DATA ls_tab_test TYPE ltcl_unit_04_deep_data=>ty_row.
|
||||
ls_tab_test = VALUE #( title = 'Peter' info = 'completed' descr = 'this is a description' icon = 'sap-icon://account' ).
|
||||
|
||||
lv_assign = `TITLE->*`.
|
||||
|
@ -308,4 +807,5 @@ CLASS ltcl_unit_test_deep_data IMPLEMENTATION.
|
|||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
|
|
@ -16,6 +16,7 @@ INTERFACE z2ui5_if_client
|
|||
id_prev TYPE string,
|
||||
id_prev_app TYPE string,
|
||||
id_prev_app_stack TYPE string,
|
||||
t_scroll_pos TYPE ty_t_name_value,
|
||||
t_req_param type ty_t_name_value,
|
||||
t_req_header type ty_t_name_value,
|
||||
END OF ty_s_get.
|
||||
|
|
Loading…
Reference in New Issue
Block a user