mirror of
https://github.com/abap2UI5/abap2UI5.git
synced 2025-04-29 15:16:15 +08:00
demos and refactoring (#237)
* overflow toolbar menu item * table popin * test * popups features * popup * popup * POPUPS * popups * popup * popups * refactoring * REFACTORING * popover * refactoring * demos * refactoring * refactoring * demos * demos * demos * demo * demos * demos * demo * demos * demo * demos * demos * demos * refactoring * abaplint
This commit is contained in:
parent
84c66a73ba
commit
dd31464414
|
@ -70,7 +70,7 @@ CLASS Z2UI5_CL_APP_DEMO_00 IMPLEMENTATION.
|
||||||
grid->simple_form( title = 'HowTo - Tables I' layout = 'ResponsiveGridLayout' )->content( 'form'
|
grid->simple_form( title = 'HowTo - Tables I' layout = 'ResponsiveGridLayout' )->content( 'form'
|
||||||
)->button( text = 'List I' press = client->_event( 'z2ui5_cl_app_demo_03' )
|
)->button( text = 'List I' press = client->_event( 'z2ui5_cl_app_demo_03' )
|
||||||
)->button( text = 'List II' press = client->_event( 'z2ui5_cl_app_demo_48' )
|
)->button( text = 'List II' press = client->_event( 'z2ui5_cl_app_demo_48' )
|
||||||
)->button( text = 'Toolbar, Container, Sort' press = client->_event( 'z2ui5_cl_app_demo_06' )
|
)->button( text = 'Toolbar & Container' press = client->_event( 'z2ui5_cl_app_demo_06' )
|
||||||
).
|
).
|
||||||
|
|
||||||
grid->simple_form( title = 'HowTo - Tables II' layout = 'ResponsiveGridLayout' )->content( 'form'
|
grid->simple_form( title = 'HowTo - Tables II' layout = 'ResponsiveGridLayout' )->content( 'form'
|
||||||
|
@ -103,6 +103,7 @@ CLASS Z2UI5_CL_APP_DEMO_00 IMPLEMENTATION.
|
||||||
)->button( text = 'Views - Normal, Generic, XML' press = client->_event( 'z2ui5_cl_app_demo_23' )
|
)->button( text = 'Views - Normal, Generic, XML' press = client->_event( 'z2ui5_cl_app_demo_23' )
|
||||||
)->button( text = 'Import UI5-XML-View' press = client->_event( 'z2ui5_cl_app_demo_31' )
|
)->button( text = 'Import UI5-XML-View' press = client->_event( 'z2ui5_cl_app_demo_31' )
|
||||||
)->button( text = 'Custom Control' press = client->_event( 'z2ui5_cl_app_demo_37' )
|
)->button( text = 'Custom Control' press = client->_event( 'z2ui5_cl_app_demo_37' )
|
||||||
|
)->button( text = 'Change CSS' press = client->_event( 'z2ui5_cl_app_demo_50' )
|
||||||
).
|
).
|
||||||
|
|
||||||
grid->simple_form( title = 'HowTo - Extensions II' layout = 'ResponsiveGridLayout' )->content( 'form'
|
grid->simple_form( title = 'HowTo - Extensions II' layout = 'ResponsiveGridLayout' )->content( 'form'
|
||||||
|
@ -111,15 +112,19 @@ CLASS Z2UI5_CL_APP_DEMO_00 IMPLEMENTATION.
|
||||||
)->button( text = 'ext. Library' press = client->_event( 'z2ui5_cl_app_demo_40' )
|
)->button( text = 'ext. Library' press = client->_event( 'z2ui5_cl_app_demo_40' )
|
||||||
).
|
).
|
||||||
|
|
||||||
grid->simple_form( title = 'HowTo - More I' layout = 'ResponsiveGridLayout' )->content( 'form'
|
grid->simple_form( title = 'HowTo - More' layout = 'ResponsiveGridLayout' )->content( 'form'
|
||||||
)->button( text = 'Side Effects' press = client->_event( 'z2ui5_cl_app_demo_27' )
|
)->button( text = 'Side Effects' press = client->_event( 'z2ui5_cl_app_demo_27' )
|
||||||
)->button( text = 'Integer, Decimals, Dates, Time' press = client->_event( 'z2ui5_cl_app_demo_47' )
|
)->button( text = 'Integer, Decimals, Dates, Time' press = client->_event( 'z2ui5_cl_app_demo_47' )
|
||||||
|
)->button( text = 'Change Model at Runtime' press = client->_event( 'z2ui5_cl_app_demo_35' )
|
||||||
" )->button( text = 'FE Table' press = client->_event( 'z2ui5_cl_app_demo_49' )
|
" )->button( text = 'FE Table' press = client->_event( 'z2ui5_cl_app_demo_49' )
|
||||||
).
|
).
|
||||||
|
|
||||||
grid->simple_form( title = 'HowTo - More II' layout = 'ResponsiveGridLayout' )->content( 'form'
|
grid->simple_form( title = 'HowTo -List Report' layout = 'ResponsiveGridLayout' )->content( 'form'
|
||||||
)->button( text = 'Change CSS' press = client->_event( 'z2ui5_cl_app_demo_50' )
|
)->button( text = 'Cell with Popover' press = client->_event( 'z2ui5_cl_app_demo_52' )
|
||||||
)->button( text = 'Change Model at Runtime' press = client->_event( 'z2ui5_cl_app_demo_35' )
|
)->button( text = 'Filter' press = client->_event( 'z2ui5_cl_app_demo_53' )
|
||||||
|
)->button( text = 'Layout' press = client->_event( 'z2ui5_cl_app_demo_55' )
|
||||||
|
)->button( text = 'Navigation' press = client->_event( 'z2ui5_cl_app_demo_54' )
|
||||||
|
|
||||||
).
|
).
|
||||||
|
|
||||||
DATA(form) = page->grid( 'L9 M12 S12'
|
DATA(form) = page->grid( 'L9 M12 S12'
|
||||||
|
|
|
@ -60,6 +60,15 @@ CLASS Z2UI5_CL_APP_DEMO_06 IMPLEMENTATION.
|
||||||
WHEN 'BUTTON_POST'.
|
WHEN 'BUTTON_POST'.
|
||||||
client->popup_message_box( 'button post was pressed' ).
|
client->popup_message_box( 'button post was pressed' ).
|
||||||
|
|
||||||
|
WHEN 'MENU_DEFAULT'.
|
||||||
|
client->popup_message_box( 'menu default pressed' ).
|
||||||
|
|
||||||
|
WHEN 'MENU_01'.
|
||||||
|
client->popup_message_box( 'menu 01 pressed' ).
|
||||||
|
|
||||||
|
WHEN 'MENU_02'.
|
||||||
|
client->popup_message_box( 'menu 02 pressed' ).
|
||||||
|
|
||||||
WHEN 'BACK'.
|
WHEN 'BACK'.
|
||||||
client->nav_app_leave( client->get_app( client->get( )-id_prev_app_stack ) ).
|
client->nav_app_leave( client->get_app( client->get( )-id_prev_app_stack ) ).
|
||||||
|
|
||||||
|
@ -117,15 +126,30 @@ CLASS Z2UI5_CL_APP_DEMO_06 IMPLEMENTATION.
|
||||||
unit = 'EUR'
|
unit = 'EUR'
|
||||||
)->get_parent(
|
)->get_parent(
|
||||||
)->toolbar_spacer(
|
)->toolbar_spacer(
|
||||||
)->button(
|
)->overflow_toolbar_toggle_button(
|
||||||
text = 'counter descending'
|
|
||||||
icon = 'sap-icon://sort-descending'
|
icon = 'sap-icon://sort-descending'
|
||||||
press = client->_event( 'SORT_DESCENDING' )
|
press = client->_event( 'SORT_DESCENDING' )
|
||||||
)->button(
|
)->overflow_toolbar_toggle_button(
|
||||||
text = 'counter ascending'
|
|
||||||
icon = 'sap-icon://sort-ascending'
|
icon = 'sap-icon://sort-ascending'
|
||||||
press = client->_event( 'SORT_ASCENDING' )
|
press = client->_event( 'SORT_ASCENDING' )
|
||||||
).
|
|
||||||
|
)->overflow_toolbar_menu_button(
|
||||||
|
text = `Export`
|
||||||
|
type = `Transparent`
|
||||||
|
tooltip = `Export`
|
||||||
|
defaultaction = client->_event( 'MENU_DEFAULT' )
|
||||||
|
icon = `sap-icon://share`
|
||||||
|
buttonMode = `Split`
|
||||||
|
)->_generic( `menu` )->_generic( `Menu`
|
||||||
|
)->menu_item(
|
||||||
|
press = client->_event( 'MENU_01' )
|
||||||
|
text = `Export as PDF`
|
||||||
|
icon = `sap-icon://pdf-attachment`
|
||||||
|
)->menu_item(
|
||||||
|
press = client->_event( 'MENU_02' )
|
||||||
|
text = `Export to Excel`
|
||||||
|
icon = `sap-icon://excel-attachment`
|
||||||
|
).
|
||||||
|
|
||||||
tab->columns(
|
tab->columns(
|
||||||
)->column(
|
)->column(
|
||||||
|
|
|
@ -58,6 +58,7 @@ ENDCLASS.
|
||||||
|
|
||||||
CLASS Z2UI5_CL_APP_DEMO_07 IMPLEMENTATION.
|
CLASS Z2UI5_CL_APP_DEMO_07 IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
METHOD ui5_on_event.
|
METHOD ui5_on_event.
|
||||||
|
|
||||||
CASE client->get( )-event.
|
CASE client->get( )-event.
|
||||||
|
@ -85,12 +86,10 @@ CLASS Z2UI5_CL_APP_DEMO_07 IMPLEMENTATION.
|
||||||
WHEN 'POPUP_DESCR'.
|
WHEN 'POPUP_DESCR'.
|
||||||
ms_file_edit = mt_file[ selkz = abap_true ].
|
ms_file_edit = mt_file[ selkz = abap_true ].
|
||||||
app-view_popup = 'DESCR'.
|
app-view_popup = 'DESCR'.
|
||||||
app-next-check_set_prev_view = abap_true.
|
|
||||||
|
|
||||||
WHEN 'POPUP_DATA'.
|
WHEN 'POPUP_DATA'.
|
||||||
ms_file_edit = mt_file[ selkz = abap_true ].
|
ms_file_edit = mt_file[ selkz = abap_true ].
|
||||||
app-view_popup = 'DATA'.
|
app-view_popup = 'DATA'.
|
||||||
app-next-check_set_prev_view = abap_true.
|
|
||||||
|
|
||||||
WHEN 'BACK'.
|
WHEN 'BACK'.
|
||||||
client->nav_app_leave( client->get_app( client->get( )-id_prev_app_stack ) ).
|
client->nav_app_leave( client->get_app( client->get( )-id_prev_app_stack ) ).
|
||||||
|
|
|
@ -7,7 +7,10 @@ CLASS z2ui5_cl_app_demo_12 DEFINITION PUBLIC.
|
||||||
DATA mv_popup_view TYPE string.
|
DATA mv_popup_view TYPE string.
|
||||||
DATA mv_main_view TYPE string.
|
DATA mv_main_view TYPE string.
|
||||||
DATA mv_check_initialized TYPE abap_bool.
|
DATA mv_check_initialized TYPE abap_bool.
|
||||||
data mv_set_prev_view type abap_bool.
|
DATA mv_set_prev_view TYPE abap_bool.
|
||||||
|
|
||||||
|
DATA mv_check_popup TYPE abap_bool.
|
||||||
|
|
||||||
PROTECTED SECTION.
|
PROTECTED SECTION.
|
||||||
PRIVATE SECTION.
|
PRIVATE SECTION.
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
@ -27,6 +30,12 @@ CLASS Z2UI5_CL_APP_DEMO_12 IMPLEMENTATION.
|
||||||
mv_set_prev_view = ''.
|
mv_set_prev_view = ''.
|
||||||
mv_popup_view = ''.
|
mv_popup_view = ''.
|
||||||
|
|
||||||
|
IF mv_check_popup = abap_true.
|
||||||
|
mv_check_popup = abap_false.
|
||||||
|
DATA(app) = CAST z2ui5_cl_app_demo_20( client->get_app( client->get( )-id_prev_app ) ).
|
||||||
|
client->popup_message_toast( app->mv_event && ` pressed` ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
CASE client->get( )-event.
|
CASE client->get( )-event.
|
||||||
|
|
||||||
WHEN 'BUTTON_POPUP_01'.
|
WHEN 'BUTTON_POPUP_01'.
|
||||||
|
@ -50,32 +59,36 @@ CLASS Z2UI5_CL_APP_DEMO_12 IMPLEMENTATION.
|
||||||
mv_popup_view = 'POPUP_INFO_FRONTEND_CLOSE'.
|
mv_popup_view = 'POPUP_INFO_FRONTEND_CLOSE'.
|
||||||
|
|
||||||
WHEN 'BUTTON_POPUP_04'.
|
WHEN 'BUTTON_POPUP_04'.
|
||||||
mv_set_prev_view = abap_true.
|
mv_main_view = ``.
|
||||||
mv_popup_view = 'POPUP_DECIDE'.
|
mv_popup_view = 'POPUP_DECIDE'.
|
||||||
|
|
||||||
WHEN 'BUTTON_POPUP_05'.
|
WHEN 'BUTTON_POPUP_05'.
|
||||||
|
mv_check_popup = abap_true.
|
||||||
client->nav_app_call( z2ui5_cl_app_demo_20=>factory(
|
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_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_text = 'Cancel '
|
||||||
i_cancel_event = 'POPUP_DECIDE_CANCEL'
|
i_cancel_event = 'POPUP_DECIDE_CANCEL'
|
||||||
i_confirm_text = 'Continue'
|
i_confirm_text = 'Continue'
|
||||||
i_confirm_event = 'POPUP_DECIDE_CONTINUE'
|
i_confirm_event = 'POPUP_DECIDE_CONTINUE'
|
||||||
i_check_show_previous_view = abap_false ) ).
|
) ).
|
||||||
|
RETURN.
|
||||||
|
|
||||||
WHEN 'BUTTON_POPUP_06'.
|
WHEN 'BUTTON_POPUP_06'.
|
||||||
|
mv_check_popup = abap_true.
|
||||||
client->nav_app_call( z2ui5_cl_app_demo_20=>factory(
|
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_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_text = 'Cancel'
|
||||||
i_cancel_event = 'POPUP_DECIDE_CANCEL'
|
i_cancel_event = 'POPUP_DECIDE_CANCEL'
|
||||||
i_confirm_text = 'Continue'
|
i_confirm_text = 'Continue'
|
||||||
i_confirm_event = 'POPUP_DECIDE_CONTINUE' ) ).
|
i_confirm_event = 'POPUP_DECIDE_CONTINUE' ) ).
|
||||||
|
RETURN.
|
||||||
|
|
||||||
WHEN 'BACK'.
|
WHEN 'BACK'.
|
||||||
client->nav_app_leave( client->get_app( client->get( )-id_prev_app_stack ) ).
|
client->nav_app_leave( client->get_app( client->get( )-id_prev_app_stack ) ).
|
||||||
|
|
||||||
ENDCASE.
|
ENDCASE.
|
||||||
|
|
||||||
DATA(lo_main) = Z2UI5_CL_XML_VIEW=>factory( )->shell( ).
|
DATA(lo_main) = z2ui5_cl_xml_view=>factory( )->shell( ).
|
||||||
|
|
||||||
CASE mv_main_view.
|
CASE mv_main_view.
|
||||||
|
|
||||||
|
@ -88,7 +101,7 @@ CLASS Z2UI5_CL_APP_DEMO_12 IMPLEMENTATION.
|
||||||
)->header_content(
|
)->header_content(
|
||||||
)->link(
|
)->link(
|
||||||
text = 'Source_Code' target = '_blank'
|
text = 'Source_Code' target = '_blank'
|
||||||
href = Z2UI5_CL_XML_VIEW=>hlp_get_source_code_url( app = me get = client->get( ) )
|
href = z2ui5_cl_xml_view=>hlp_get_source_code_url( app = me get = client->get( ) )
|
||||||
)->get_parent( ).
|
)->get_parent( ).
|
||||||
|
|
||||||
DATA(grid) = page->grid( 'L7 M12 S12' )->content( 'layout'
|
DATA(grid) = page->grid( 'L7 M12 S12' )->content( 'layout'
|
||||||
|
@ -107,8 +120,8 @@ CLASS Z2UI5_CL_APP_DEMO_12 IMPLEMENTATION.
|
||||||
press = client->_event( 'BUTTON_POPUP_03' )
|
press = client->_event( 'BUTTON_POPUP_03' )
|
||||||
)->label( 'Demo'
|
)->label( 'Demo'
|
||||||
)->button(
|
)->button(
|
||||||
text = 'popup rendering, background rendering (previous view)'
|
text = 'popup rendering, hold background view'
|
||||||
press = client->_event( 'BUTTON_POPUP_04' )
|
press = client->_event( val = 'BUTTON_POPUP_04' hold_view = abap_true )
|
||||||
)->get_parent( )->get_parent( ).
|
)->get_parent( )->get_parent( ).
|
||||||
|
|
||||||
grid->simple_form( 'Popup in new App' )->content( 'form'
|
grid->simple_form( 'Popup in new App' )->content( 'form'
|
||||||
|
@ -118,12 +131,12 @@ CLASS Z2UI5_CL_APP_DEMO_12 IMPLEMENTATION.
|
||||||
press = client->_event( 'BUTTON_POPUP_05' )
|
press = client->_event( 'BUTTON_POPUP_05' )
|
||||||
)->label( 'Demo'
|
)->label( 'Demo'
|
||||||
)->button(
|
)->button(
|
||||||
text = 'popup rendering, background rendering (previous view)'
|
text = 'popup rendering, hold previous view'
|
||||||
press = client->_event( 'BUTTON_POPUP_06' ) ).
|
press = client->_event( val = 'BUTTON_POPUP_06' hold_view = abap_true ) ).
|
||||||
|
|
||||||
ENDCASE.
|
ENDCASE.
|
||||||
|
|
||||||
DATA(lo_popup) = Z2UI5_CL_XML_VIEW=>factory_popup( ).
|
DATA(lo_popup) = z2ui5_cl_xml_view=>factory_popup( ).
|
||||||
|
|
||||||
CASE mv_popup_view.
|
CASE mv_popup_view.
|
||||||
|
|
||||||
|
@ -158,11 +171,14 @@ CLASS Z2UI5_CL_APP_DEMO_12 IMPLEMENTATION.
|
||||||
|
|
||||||
ENDCASE.
|
ENDCASE.
|
||||||
|
|
||||||
client->set_next( VALUE #(
|
DATA(ls_next) = VALUE z2ui5_if_client=>ty_s_next(
|
||||||
xml_main = lo_main->get_root( )->xml_get( )
|
xml_main = lo_main->get_root( )->xml_get( )
|
||||||
xml_popup = cond #( when mv_popup_view is not INITIAL then lo_popup->get_root( )->xml_get( ) )
|
xml_popup = COND #( WHEN mv_popup_view IS NOT INITIAL THEN lo_popup->get_root( )->xml_get( ) )
|
||||||
check_set_prev_view = mv_set_prev_view
|
).
|
||||||
) ).
|
IF mv_main_view = ``.
|
||||||
|
ls_next-xml_main = ``.
|
||||||
|
ENDIF.
|
||||||
|
client->set_next( ls_next ).
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
|
@ -11,7 +11,6 @@ CLASS z2ui5_cl_app_demo_20 DEFINITION PUBLIC.
|
||||||
i_cancel_event TYPE string
|
i_cancel_event TYPE string
|
||||||
i_confirm_text TYPE string
|
i_confirm_text TYPE string
|
||||||
i_confirm_event TYPE string
|
i_confirm_event TYPE string
|
||||||
i_check_show_previous_view TYPE abap_bool DEFAULT abap_true
|
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(result) TYPE REF TO z2ui5_cl_app_demo_20.
|
VALUE(result) TYPE REF TO z2ui5_cl_app_demo_20.
|
||||||
|
|
||||||
|
@ -22,8 +21,7 @@ CLASS z2ui5_cl_app_demo_20 DEFINITION PUBLIC.
|
||||||
DATA mv_cancel_event TYPE string.
|
DATA mv_cancel_event TYPE string.
|
||||||
DATA mv_confirm_text TYPE string.
|
DATA mv_confirm_text TYPE string.
|
||||||
DATA mv_confirm_event TYPE string.
|
DATA mv_confirm_event TYPE string.
|
||||||
DATA mv_check_show_previous_view TYPE abap_bool.
|
data mv_event type string.
|
||||||
data mv_next_event type string.
|
|
||||||
PROTECTED SECTION.
|
PROTECTED SECTION.
|
||||||
PRIVATE SECTION.
|
PRIVATE SECTION.
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
@ -42,7 +40,7 @@ CLASS Z2UI5_CL_APP_DEMO_20 IMPLEMENTATION.
|
||||||
result->mv_cancel_event = i_cancel_event.
|
result->mv_cancel_event = i_cancel_event.
|
||||||
result->mv_confirm_text = i_confirm_text.
|
result->mv_confirm_text = i_confirm_text.
|
||||||
result->mv_confirm_event = i_confirm_event.
|
result->mv_confirm_event = i_confirm_event.
|
||||||
result->mv_check_show_previous_view = i_check_show_previous_view.
|
" result->mv_check_show_previous_view = i_check_show_previous_view.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
@ -56,13 +54,11 @@ CLASS Z2UI5_CL_APP_DEMO_20 IMPLEMENTATION.
|
||||||
CASE client->get( )-event.
|
CASE client->get( )-event.
|
||||||
|
|
||||||
WHEN mv_cancel_event OR mv_confirm_event.
|
WHEN mv_cancel_event OR mv_confirm_event.
|
||||||
mv_next_event = client->get( )-event.
|
mv_event = client->get( )-event.
|
||||||
client->nav_app_leave( client->get_app( client->get( )-id_prev_app_stack ) ).
|
client->nav_app_leave( client->get_app( client->get( )-id_prev_app_stack ) ).
|
||||||
ENDCASE.
|
ENDCASE.
|
||||||
|
|
||||||
client->set_next( VALUE #(
|
client->set_next( VALUE #(
|
||||||
check_set_prev_view = mv_check_show_previous_view
|
|
||||||
xml_main = Z2UI5_CL_XML_VIEW=>factory( )->get_root( )->xml_get( )
|
|
||||||
xml_popup = Z2UI5_CL_XML_VIEW=>factory_popup(
|
xml_popup = Z2UI5_CL_XML_VIEW=>factory_popup(
|
||||||
)->dialog( 'abap2UI5 - Popup to decide'
|
)->dialog( 'abap2UI5 - Popup to decide'
|
||||||
)->vbox(
|
)->vbox(
|
||||||
|
|
|
@ -34,7 +34,7 @@ ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CLASS z2ui5_cl_app_demo_22 IMPLEMENTATION.
|
CLASS Z2UI5_CL_APP_DEMO_22 IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
METHOD z2ui5_if_app~main.
|
METHOD z2ui5_if_app~main.
|
||||||
|
@ -59,7 +59,7 @@ CLASS z2ui5_cl_app_demo_22 IMPLEMENTATION.
|
||||||
|
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
app-s_next-t_scroll_pos = VALUE #(
|
app-s_next-t_scroll = VALUE #(
|
||||||
( name = 'id_page' )
|
( name = 'id_page' )
|
||||||
( name = 'id_text3' )
|
( name = 'id_text3' )
|
||||||
).
|
).
|
||||||
|
@ -70,35 +70,36 @@ CLASS z2ui5_cl_app_demo_22 IMPLEMENTATION.
|
||||||
"nothing to do, default mode
|
"nothing to do, default mode
|
||||||
|
|
||||||
WHEN 'BUTTON_SCROLL_BOTTOM'.
|
WHEN 'BUTTON_SCROLL_BOTTOM'.
|
||||||
app-s_next-t_scroll_pos = VALUE #( ( name = 'id_page' value = '99999' ) ).
|
app-s_next-t_scroll = VALUE #( ( name = 'id_page' value = '99999' ) ).
|
||||||
|
|
||||||
WHEN 'BUTTON_SCROLL_UP'.
|
WHEN 'BUTTON_SCROLL_UP'.
|
||||||
DATA(lv_pos) = CONV i( app-s_get-t_scroll_pos[ name = `id_page` ]-value ) - 500.
|
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 ) ).
|
app-s_next-t_scroll = VALUE #( ( name = 'id_page' value = lv_pos ) ).
|
||||||
|
|
||||||
WHEN 'BUTTON_SCROLL_DOWN'.
|
WHEN 'BUTTON_SCROLL_DOWN'.
|
||||||
lv_pos = CONV i( app-s_get-t_scroll_pos[ name = `id_page` ]-value ) + 500.
|
lv_pos = CONV i( value #( app-s_get-t_scroll_pos[ name = `id_page` ]-value optional ) ) + 500.
|
||||||
app-s_next-t_scroll_pos = VALUE #( ( name = 'id_page' value = lv_pos ) ).
|
app-s_next-t_scroll = VALUE #( ( name = 'id_page' value = lv_pos ) ).
|
||||||
|
|
||||||
WHEN 'BUTTON_SCROLL_HOLD'.
|
WHEN 'BUTTON_SCROLL_HOLD'.
|
||||||
app-s_next-t_scroll_pos = app-s_get-t_scroll_pos.
|
app-s_next-t_scroll = app-s_get-t_scroll_pos.
|
||||||
|
|
||||||
WHEN 'BUTTON_FOCUS_FIRST'.
|
WHEN 'BUTTON_FOCUS_FIRST'.
|
||||||
app-s_next-s_cursor_pos = VALUE #( id = 'id_text1' cursorpos = '3' selectionstart = '3' selectionend = '3' ).
|
app-s_next-s_cursor = VALUE #( id = 'id_text1' cursorpos = '3' selectionstart = '3' selectionend = '3' ).
|
||||||
|
|
||||||
WHEN 'BUTTON_FOCUS_SECOND'.
|
WHEN 'BUTTON_FOCUS_SECOND'.
|
||||||
app-s_next-s_cursor_pos = VALUE #( id = 'id_text2' cursorpos = '5' selectionstart = '5' selectionend = '10' ).
|
app-s_next-s_cursor = VALUE #( id = 'id_text2' cursorpos = '5' selectionstart = '5' selectionend = '10' ).
|
||||||
|
|
||||||
WHEN 'BUTTON_FOCUS_END'.
|
WHEN 'BUTTON_FOCUS_END'.
|
||||||
app-s_next-s_cursor_pos = VALUE #( id = 'id_text3' cursorpos = '99999' selectionstart = '99999' selectionend = '999999' ).
|
app-s_next-s_cursor = VALUE #( id = 'id_text3' cursorpos = '99999' selectionstart = '99999' selectionend = '999999' ).
|
||||||
|
|
||||||
app-s_next-t_scroll_pos = VALUE #(
|
app-s_next-t_scroll = VALUE #(
|
||||||
( name = 'id_page' value = '99999' )
|
( name = 'id_page' value = '99999' )
|
||||||
( name = 'id_text3' value = '99999' )
|
( name = 'id_text3' value = '99999' )
|
||||||
).
|
).
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
WHEN 'BACK'.
|
WHEN 'BACK'.
|
||||||
client->nav_app_leave( client->get_app( client->get( )-id_prev_app_stack ) ).
|
client->nav_app_leave( client->get_app( client->get( )-id_prev_app_stack ) ).
|
||||||
|
|
||||||
|
|
|
@ -90,7 +90,7 @@ CLASS Z2UI5_CL_APP_DEMO_25 IMPLEMENTATION.
|
||||||
|
|
||||||
WHEN 'SECOND'.
|
WHEN 'SECOND'.
|
||||||
|
|
||||||
page = Z2UI5_CL_XML_VIEW=>factory(
|
page = Z2UI5_CL_XML_VIEW=>factory( )->shell(
|
||||||
)->page(
|
)->page(
|
||||||
title = 'abap2UI5 - flow logic - APP 02'
|
title = 'abap2UI5 - flow logic - APP 02'
|
||||||
navbuttonpress = client->_event( 'BACK' ) shownavbutton = abap_true
|
navbuttonpress = client->_event( 'BACK' ) shownavbutton = abap_true
|
||||||
|
|
|
@ -64,7 +64,7 @@ CLASS Z2UI5_CL_APP_DEMO_26 IMPLEMENTATION.
|
||||||
|
|
||||||
WHEN 'POPOVER'.
|
WHEN 'POPOVER'.
|
||||||
app-view_popup = 'POPOVER'.
|
app-view_popup = 'POPOVER'.
|
||||||
app-s_next-popup_open_by_id = 'TEST'.
|
app-s_next-popover_open_by_id = 'TEST'.
|
||||||
|
|
||||||
WHEN 'BUTTON_CONFIRM'.
|
WHEN 'BUTTON_CONFIRM'.
|
||||||
client->popup_message_toast( |confirm| ).
|
client->popup_message_toast( |confirm| ).
|
||||||
|
|
|
@ -58,7 +58,7 @@ CLASS Z2UI5_CL_APP_DEMO_38 IMPLEMENTATION.
|
||||||
app-view_popup = 'POPUP'.
|
app-view_popup = 'POPUP'.
|
||||||
WHEN 'POPOVER'.
|
WHEN 'POPOVER'.
|
||||||
app-view_popup = 'POPOVER'.
|
app-view_popup = 'POPOVER'.
|
||||||
app-next-popup_open_by_id = 'test'.
|
app-next-popover_open_by_id = 'test'.
|
||||||
WHEN 'BACK'.
|
WHEN 'BACK'.
|
||||||
client->nav_app_leave( client->get_app( client->get( )-id_prev_app_stack ) ).
|
client->nav_app_leave( client->get_app( client->get( )-id_prev_app_stack ) ).
|
||||||
ENDCASE.
|
ENDCASE.
|
||||||
|
|
|
@ -5,10 +5,12 @@ CLASS z2ui5_cl_app_demo_44 DEFINITION PUBLIC.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
CLASS z2ui5_cl_app_demo_44 IMPLEMENTATION.
|
|
||||||
|
|
||||||
|
CLASS Z2UI5_CL_APP_DEMO_44 IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
METHOD z2ui5_if_app~main.
|
METHOD z2ui5_if_app~main.
|
||||||
client->set_next( VALUE #( xml_main = z2ui5_cl_xml_view=>factory( )->label( `Hello World!` )->get_root( )->xml_get( ) ) ).
|
client->set_next( VALUE #( xml_main = z2ui5_cl_xml_view=>factory( )->label( `Hello World!` )->get_root( )->xml_get( ) ) ).
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
|
@ -155,7 +155,64 @@ ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CLASS z2ui5_cl_app_demo_49 IMPLEMENTATION.
|
CLASS Z2UI5_CL_APP_DEMO_49 IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD encode_base64.
|
||||||
|
|
||||||
|
TRY.
|
||||||
|
CALL METHOD ('CL_WEB_HTTP_UTILITY')=>encode_base64
|
||||||
|
EXPORTING
|
||||||
|
unencoded = val
|
||||||
|
RECEIVING
|
||||||
|
encoded = result.
|
||||||
|
|
||||||
|
CATCH cx_sy_dyn_call_illegal_class.
|
||||||
|
|
||||||
|
DATA(classname) = 'CL_HTTP_UTILITY'.
|
||||||
|
CALL METHOD (classname)=>encode_base64
|
||||||
|
EXPORTING
|
||||||
|
unencoded = val
|
||||||
|
RECEIVING
|
||||||
|
encoded = result.
|
||||||
|
|
||||||
|
ENDTRY.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD init_table_output.
|
||||||
|
|
||||||
|
" CLEAR ms_layout-s_table.
|
||||||
|
" CLEAR mt_cols.
|
||||||
|
" CLEAR ms_layout-t_cols.
|
||||||
|
|
||||||
|
ms_view-headerexpanded = abap_true.
|
||||||
|
ms_view-headerpinned = abap_true.
|
||||||
|
|
||||||
|
DATA(lt_cols) = lcl_db=>get_fieldlist_by_table( mt_table ).
|
||||||
|
LOOP AT lt_cols REFERENCE INTO DATA(lr_col) FROM 2.
|
||||||
|
|
||||||
|
INSERT VALUE #(
|
||||||
|
name = lr_col->*
|
||||||
|
) INTO TABLE ms_layout-t_filter_show.
|
||||||
|
|
||||||
|
INSERT VALUE #(
|
||||||
|
visible = abap_true
|
||||||
|
name = lr_col->*
|
||||||
|
" length = `10px`
|
||||||
|
title = lr_col->*
|
||||||
|
) INTO TABLE ms_layout-t_cols.
|
||||||
|
|
||||||
|
* INSERT VALUE #(
|
||||||
|
* " selkz = abap_true
|
||||||
|
* name = lr_col->*
|
||||||
|
* " length = `10px`
|
||||||
|
* ) INTO TABLE ms_layout-t_cols.
|
||||||
|
|
||||||
|
ENDLOOP.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD z2ui5_if_app~main.
|
METHOD z2ui5_if_app~main.
|
||||||
|
@ -228,10 +285,10 @@ CLASS z2ui5_cl_app_demo_49 IMPLEMENTATION.
|
||||||
INSERT ls_layout INTO TABLE mt_db_layout.
|
INSERT ls_layout INTO TABLE mt_db_layout.
|
||||||
|
|
||||||
WHEN 'BUTTON_SEARCH'.
|
WHEN 'BUTTON_SEARCH'.
|
||||||
app-next-s_cursor_pos-id = 'SEARCH'.
|
app-next-s_cursor-id = 'SEARCH'.
|
||||||
app-next-s_cursor_pos-cursorpos = '99'.
|
app-next-s_cursor-cursorpos = '99'.
|
||||||
app-next-s_cursor_pos-selectionend = '99'.
|
app-next-s_cursor-selectionend = '99'.
|
||||||
app-next-s_cursor_pos-selectionstart = '99'.
|
app-next-s_cursor-selectionstart = '99'.
|
||||||
z2ui5_set_search( ).
|
z2ui5_set_search( ).
|
||||||
|
|
||||||
WHEN 'MAIN'.
|
WHEN 'MAIN'.
|
||||||
|
@ -242,11 +299,11 @@ CLASS z2ui5_cl_app_demo_49 IMPLEMENTATION.
|
||||||
app-view_main = 'DETAIL'.
|
app-view_main = 'DETAIL'.
|
||||||
|
|
||||||
WHEN 'POPUP_DETAIL'.
|
WHEN 'POPUP_DETAIL'.
|
||||||
app-next-popup_open_by_id = app-get-event_data.
|
app-next-popover_open_by_id = app-get-event_data.
|
||||||
app-view_popup = 'POPUP_LAYOUT'.
|
app-view_popup = 'POPUP_LAYOUT'.
|
||||||
|
|
||||||
WHEN 'POPUP_LAYOUT'.
|
WHEN 'POPUP_LAYOUT'.
|
||||||
app-next-popup_open_by_id = `btn_layout`.
|
app-next-popover_open_by_id = `btn_layout`.
|
||||||
app-view_popup = 'POPUP_LAYOUT'.
|
app-view_popup = 'POPUP_LAYOUT'.
|
||||||
|
|
||||||
WHEN 'POPUP_FILTER'.
|
WHEN 'POPUP_FILTER'.
|
||||||
|
@ -286,7 +343,7 @@ CLASS z2ui5_cl_app_demo_49 IMPLEMENTATION.
|
||||||
ms_layout-sticky_header = `HeaderToolbar,InfoToolbar,ColumnHeaders`.
|
ms_layout-sticky_header = `HeaderToolbar,InfoToolbar,ColumnHeaders`.
|
||||||
ms_layout-title = `Drafts`.
|
ms_layout-title = `Drafts`.
|
||||||
|
|
||||||
app-next-t_scroll_pos = VALUE #( ( name = `page_main` ) ).
|
app-next-t_scroll = VALUE #( ( name = `page_main` ) ).
|
||||||
|
|
||||||
mt_token = VALUE #(
|
mt_token = VALUE #(
|
||||||
( key = 'VAL1' text = 'value_1' selkz = abap_true visible = abap_true )
|
( key = 'VAL1' text = 'value_1' selkz = abap_true visible = abap_true )
|
||||||
|
@ -359,176 +416,6 @@ CLASS z2ui5_cl_app_demo_49 IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
METHOD init_table_output.
|
|
||||||
|
|
||||||
" CLEAR ms_layout-s_table.
|
|
||||||
" CLEAR mt_cols.
|
|
||||||
" CLEAR ms_layout-t_cols.
|
|
||||||
|
|
||||||
ms_view-headerexpanded = abap_true.
|
|
||||||
ms_view-headerpinned = abap_true.
|
|
||||||
|
|
||||||
DATA(lt_cols) = lcl_db=>get_fieldlist_by_table( mt_table ).
|
|
||||||
LOOP AT lt_cols REFERENCE INTO DATA(lr_col) FROM 2.
|
|
||||||
|
|
||||||
INSERT VALUE #(
|
|
||||||
name = lr_col->*
|
|
||||||
) INTO TABLE ms_layout-t_filter_show.
|
|
||||||
|
|
||||||
INSERT VALUE #(
|
|
||||||
visible = abap_true
|
|
||||||
name = lr_col->*
|
|
||||||
" length = `10px`
|
|
||||||
title = lr_col->*
|
|
||||||
) INTO TABLE ms_layout-t_cols.
|
|
||||||
|
|
||||||
* INSERT VALUE #(
|
|
||||||
* " selkz = abap_true
|
|
||||||
* name = lr_col->*
|
|
||||||
* " length = `10px`
|
|
||||||
* ) INTO TABLE ms_layout-t_cols.
|
|
||||||
|
|
||||||
ENDLOOP.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
|
|
||||||
METHOD z2ui5_on_render_main.
|
|
||||||
|
|
||||||
z2ui5_set_sort( ).
|
|
||||||
|
|
||||||
" DATA(view) = z2ui5_cl_xml_view=>factory( )->shell( ).
|
|
||||||
|
|
||||||
DATA(view) = z2ui5_cl_xml_view=>factory(
|
|
||||||
)->page( id = `page_main`
|
|
||||||
title = 'abap2UI5 - List Report'
|
|
||||||
navbuttonpress = client->_event( 'BACK' )
|
|
||||||
shownavbutton = abap_true
|
|
||||||
)->header_content(
|
|
||||||
)->link(
|
|
||||||
text = 'Demo' target = '_blank'
|
|
||||||
href = 'https://twitter.com/OblomovDev/status/1637163852264624139'
|
|
||||||
)->link(
|
|
||||||
text = 'Source_Code' target = '_blank' href = z2ui5_cl_xml_view=>hlp_get_source_code_url( app = me get = client->get( ) )
|
|
||||||
)->get_parent( ).
|
|
||||||
|
|
||||||
IF mv_check_download_csv = abap_true.
|
|
||||||
z2ui5_set_download_csv( view ).
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
DATA(page) = view->dynamic_page(
|
|
||||||
headerexpanded = client->_bind( ms_view-headerexpanded )
|
|
||||||
headerpinned = client->_bind( ms_view-headerpinned ) ).
|
|
||||||
|
|
||||||
DATA(header_title) = page->title( ns = 'f'
|
|
||||||
)->get( )->dynamic_page_title( ).
|
|
||||||
|
|
||||||
header_title->heading( ns = 'f' )->hbox( )->title( ms_view-title
|
|
||||||
)->button( id = `btn_layout` press = client->_event( `POPUP_LAYOUT` ) type = `Transparent` icon = `sap-icon://dropdown` ).
|
|
||||||
|
|
||||||
header_title->expanded_content( 'f'
|
|
||||||
)->label( text = 'Drafts of abap2UI5' ).
|
|
||||||
|
|
||||||
header_title->snapped_content( ns = 'f'
|
|
||||||
)->label( text = 'Drafts of abap2UI5' ).
|
|
||||||
|
|
||||||
header_title->actions( ns = 'f' )->overflow_toolbar(
|
|
||||||
)->button( text = `Custom Function` press = client->_event( `BUTTON_CUSTOM` )
|
|
||||||
).
|
|
||||||
|
|
||||||
DATA(lo_box) = page->header( )->dynamic_page_header( pinnable = abap_true
|
|
||||||
)->flex_box( alignitems = `Start` justifycontent = `SpaceBetween` )->flex_box( alignItems = `Start` ).
|
|
||||||
|
|
||||||
z2ui5_set_filter( lo_box ).
|
|
||||||
|
|
||||||
|
|
||||||
DATA(cont) = page->content( ns = 'f' ).
|
|
||||||
|
|
||||||
|
|
||||||
DATA(tab) = cont->table(
|
|
||||||
items = client->_bind( val = ms_view-t_tab )
|
|
||||||
alternaterowcolors = ms_layout-check_zebra
|
|
||||||
sticky = ms_layout-sticky_header
|
|
||||||
mode = ms_layout-selmode ).
|
|
||||||
|
|
||||||
tab->header_toolbar(
|
|
||||||
)->toolbar(
|
|
||||||
)->title( text = ms_layout-title && ` (` && shift_right( CONV string( lines( ms_view-t_tab ) ) ) && `)` level = `H2`
|
|
||||||
)->toolbar_spacer(
|
|
||||||
)->button(
|
|
||||||
icon = 'sap-icon://refresh'
|
|
||||||
press = client->_event( 'BUTTON_REFRESH' )
|
|
||||||
)->multi_input(
|
|
||||||
tokens = client->_bind( mt_token )
|
|
||||||
showclearicon = abap_true
|
|
||||||
* showvaluehelp = abap_true
|
|
||||||
* suggestionitems = client->_bind( mt_token_sugg )
|
|
||||||
)->item(
|
|
||||||
key = `{KEY}`
|
|
||||||
text = `{TEXT}`
|
|
||||||
)->tokens(
|
|
||||||
)->token(
|
|
||||||
key = `{KEY}`
|
|
||||||
text = `{TEXT}`
|
|
||||||
selected = `{SELKZ}`
|
|
||||||
* visible = `{VISIBLE}`
|
|
||||||
)->get_parent( )->get_parent(
|
|
||||||
)->search_field(
|
|
||||||
value = client->_bind( ms_view-search_val )
|
|
||||||
search = client->_event( 'BUTTON_SEARCH' )
|
|
||||||
change = client->_event( 'BUTTON_SEARCH' )
|
|
||||||
width = `17.5rem`
|
|
||||||
id = `SEARCH`
|
|
||||||
)->toolbar_spacer(
|
|
||||||
* )->button(
|
|
||||||
* text = `Custom Action`
|
|
||||||
* press = client->_event( 'BUTTON_CUSTOM' )
|
|
||||||
|
|
||||||
)->button(
|
|
||||||
text = `Anlegen`
|
|
||||||
enabled = abap_false
|
|
||||||
press = client->_event( 'BUTTON_CREATE' )
|
|
||||||
)->button(
|
|
||||||
text = `Löschen`
|
|
||||||
press = client->_event( 'BUTTON_DELETE' )
|
|
||||||
)->button(
|
|
||||||
icon = 'sap-icon://action-settings'
|
|
||||||
press = client->_event( 'BUTTON_SETUP' )
|
|
||||||
)->button(
|
|
||||||
icon = 'sap-icon://download'
|
|
||||||
press = client->_event( 'BUTTON_DOWNLOAD' )
|
|
||||||
).
|
|
||||||
|
|
||||||
|
|
||||||
DATA(lo_columns) = tab->columns( ).
|
|
||||||
LOOP AT ms_layout-t_cols REFERENCE INTO DATA(lr_field)
|
|
||||||
WHERE visible = abap_true.
|
|
||||||
lo_columns->column( width = lr_field->length )->text( text = CONV char10( lr_field->title )
|
|
||||||
)->footer(
|
|
||||||
)->object_number( number = `Summe` unit = 'ST' state = `Warning` ).
|
|
||||||
ENDLOOP.
|
|
||||||
|
|
||||||
DATA(lo_cells) = tab->items( )->column_list_item(
|
|
||||||
press = client->_event( val = 'DETAIL' data = `${UUID}` )
|
|
||||||
selected = `{SELKZ}`
|
|
||||||
type = `Navigation` )->cells( ).
|
|
||||||
LOOP AT ms_layout-t_cols REFERENCE INTO lr_field
|
|
||||||
WHERE visible = abap_true.
|
|
||||||
IF lr_field->editable = abap_true.
|
|
||||||
lo_cells->input( `{` && lr_field->name && `}` ).
|
|
||||||
ELSE.
|
|
||||||
" lo_cells->text( `{` && lr_field->name && `}` ).
|
|
||||||
lo_cells->link( text = `{` && lr_field->name && `}`
|
|
||||||
" press = client->_event( val = `POPUP_DETAIL` data = `${` && lr_field->name && `}` ) ).
|
|
||||||
press = client->_event( val = `POPUP_DETAIL` data = `${$source>/id}` ) ).
|
|
||||||
" press = client->_event( val = `POPUP_DETAIL` data = `$event` ) ).
|
|
||||||
ENDIF.
|
|
||||||
ENDLOOP.
|
|
||||||
|
|
||||||
app-next-xml_main = page->get_root( )->xml_get( ).
|
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
@ -615,6 +502,256 @@ CLASS z2ui5_cl_app_demo_49 IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD z2ui5_on_render_main.
|
||||||
|
|
||||||
|
z2ui5_set_sort( ).
|
||||||
|
|
||||||
|
" DATA(view) = z2ui5_cl_xml_view=>factory( )->shell( ).
|
||||||
|
|
||||||
|
DATA(view) = z2ui5_cl_xml_view=>factory(
|
||||||
|
)->page( id = `page_main`
|
||||||
|
title = 'abap2UI5 - List Report'
|
||||||
|
navbuttonpress = client->_event( 'BACK' )
|
||||||
|
shownavbutton = abap_true
|
||||||
|
)->header_content(
|
||||||
|
)->link(
|
||||||
|
text = 'Demo' target = '_blank'
|
||||||
|
href = 'https://twitter.com/OblomovDev/status/1637163852264624139'
|
||||||
|
)->link(
|
||||||
|
text = 'Source_Code' target = '_blank' href = z2ui5_cl_xml_view=>hlp_get_source_code_url( app = me get = client->get( ) )
|
||||||
|
)->get_parent( ).
|
||||||
|
|
||||||
|
IF mv_check_download_csv = abap_true.
|
||||||
|
z2ui5_set_download_csv( view ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
DATA(page) = view->dynamic_page(
|
||||||
|
headerexpanded = client->_bind( ms_view-headerexpanded )
|
||||||
|
headerpinned = client->_bind( ms_view-headerpinned ) ).
|
||||||
|
|
||||||
|
DATA(header_title) = page->title( ns = 'f'
|
||||||
|
)->get( )->dynamic_page_title( ).
|
||||||
|
|
||||||
|
header_title->heading( ns = 'f' )->hbox( )->title( ms_view-title
|
||||||
|
)->button( id = `btn_layout` press = client->_event( `POPUP_LAYOUT` ) type = `Transparent` icon = `sap-icon://dropdown` ).
|
||||||
|
|
||||||
|
header_title->expanded_content( 'f'
|
||||||
|
)->label( text = 'Drafts of abap2UI5' ).
|
||||||
|
|
||||||
|
header_title->snapped_content( ns = 'f'
|
||||||
|
)->label( text = 'Drafts of abap2UI5' ).
|
||||||
|
|
||||||
|
header_title->actions( ns = 'f' )->overflow_toolbar(
|
||||||
|
)->button( text = `Custom Function` press = client->_event( `BUTTON_CUSTOM` )
|
||||||
|
).
|
||||||
|
|
||||||
|
DATA(lo_box) = page->header( )->dynamic_page_header( pinnable = abap_true
|
||||||
|
)->flex_box( alignitems = `Start` justifycontent = `SpaceBetween` )->flex_box( alignItems = `Start` ).
|
||||||
|
|
||||||
|
z2ui5_set_filter( lo_box ).
|
||||||
|
|
||||||
|
|
||||||
|
DATA(cont) = page->content( ns = 'f' ).
|
||||||
|
|
||||||
|
|
||||||
|
DATA(tab) = cont->table(
|
||||||
|
items = client->_bind( val = ms_view-t_tab )
|
||||||
|
alternaterowcolors = ms_layout-check_zebra
|
||||||
|
sticky = ms_layout-sticky_header
|
||||||
|
autopopinmode = abap_true
|
||||||
|
mode = ms_layout-selmode ).
|
||||||
|
|
||||||
|
tab->header_toolbar(
|
||||||
|
)->toolbar(
|
||||||
|
)->title( text = ms_layout-title && ` (` && shift_right( CONV string( lines( ms_view-t_tab ) ) ) && `)` level = `H2`
|
||||||
|
)->toolbar_spacer(
|
||||||
|
)->button(
|
||||||
|
icon = 'sap-icon://refresh'
|
||||||
|
press = client->_event( 'BUTTON_REFRESH' )
|
||||||
|
)->multi_input(
|
||||||
|
tokens = client->_bind( mt_token )
|
||||||
|
showclearicon = abap_true
|
||||||
|
* showvaluehelp = abap_true
|
||||||
|
* suggestionitems = client->_bind( mt_token_sugg )
|
||||||
|
)->item(
|
||||||
|
key = `{KEY}`
|
||||||
|
text = `{TEXT}`
|
||||||
|
)->tokens(
|
||||||
|
)->token(
|
||||||
|
key = `{KEY}`
|
||||||
|
text = `{TEXT}`
|
||||||
|
selected = `{SELKZ}`
|
||||||
|
* visible = `{VISIBLE}`
|
||||||
|
)->get_parent( )->get_parent(
|
||||||
|
|
||||||
|
)->toolbar_spacer(
|
||||||
|
* )->button(
|
||||||
|
* text = `Custom Action`
|
||||||
|
* press = client->_event( 'BUTTON_CUSTOM' )
|
||||||
|
|
||||||
|
)->button(
|
||||||
|
text = `Anlegen`
|
||||||
|
enabled = abap_false
|
||||||
|
press = client->_event( 'BUTTON_CREATE' )
|
||||||
|
)->button(
|
||||||
|
text = `Löschen`
|
||||||
|
press = client->_event( 'BUTTON_DELETE' )
|
||||||
|
)->button(
|
||||||
|
icon = 'sap-icon://action-settings'
|
||||||
|
press = client->_event( 'BUTTON_SETUP' )
|
||||||
|
)->button(
|
||||||
|
icon = 'sap-icon://download'
|
||||||
|
press = client->_event( 'BUTTON_DOWNLOAD' )
|
||||||
|
).
|
||||||
|
|
||||||
|
|
||||||
|
data(lv_width) = 10.
|
||||||
|
DATA(lo_columns) = tab->columns( ).
|
||||||
|
LOOP AT ms_layout-t_cols REFERENCE INTO DATA(lr_field)
|
||||||
|
WHERE visible = abap_true.
|
||||||
|
lo_columns->column(
|
||||||
|
minscreenwidth = shift_right( conv string( lv_width ) ) && `px`
|
||||||
|
demandpopin = abap_true width = lr_field->length )->text( text = CONV char10( lr_field->title )
|
||||||
|
)->footer(
|
||||||
|
)->object_number( number = `Summe` unit = 'ST' state = `Warning` ).
|
||||||
|
lv_width = lv_width + 10.
|
||||||
|
ENDLOOP.
|
||||||
|
|
||||||
|
DATA(lo_cells) = tab->items( )->column_list_item(
|
||||||
|
press = client->_event( val = 'DETAIL' data = `${UUID}` )
|
||||||
|
selected = `{SELKZ}`
|
||||||
|
type = `Navigation` )->cells( ).
|
||||||
|
LOOP AT ms_layout-t_cols REFERENCE INTO lr_field
|
||||||
|
WHERE visible = abap_true.
|
||||||
|
IF lr_field->editable = abap_true.
|
||||||
|
lo_cells->input( `{` && lr_field->name && `}` ).
|
||||||
|
ELSE.
|
||||||
|
" lo_cells->text( `{` && lr_field->name && `}` ).
|
||||||
|
lo_cells->link( text = `{` && lr_field->name && `}`
|
||||||
|
" press = client->_event( val = `POPUP_DETAIL` data = `${` && lr_field->name && `}` ) ).
|
||||||
|
press = client->_event( val = `POPUP_DETAIL` data = `${$source>/id}` ) ).
|
||||||
|
" press = client->_event( val = `POPUP_DETAIL` data = `$event` ) ).
|
||||||
|
ENDIF.
|
||||||
|
ENDLOOP.
|
||||||
|
|
||||||
|
app-next-xml_main = page->get_root( )->xml_get( ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD z2ui5_on_render_pop_detail.
|
||||||
|
|
||||||
|
DATA(lo_popup) = z2ui5_cl_xml_view=>factory_popup( ).
|
||||||
|
|
||||||
|
lo_popup->popover( placement = `Bottom` title = 'abap2UI5 - Layout' contentwidth = `50%`
|
||||||
|
)->input( description = `Name` value = client->_bind( mv_layout_name )
|
||||||
|
)->button( text = `Save` press = client->_event( `BUTTON_SAVE_LAYOUT` )
|
||||||
|
)->table(
|
||||||
|
mode = 'SingleSelectLeft'
|
||||||
|
items = client->_bind( mt_db_layout )
|
||||||
|
)->columns(
|
||||||
|
)->column( )->text( 'Name' )->get_parent(
|
||||||
|
)->column( )->text( 'User' )->get_parent(
|
||||||
|
)->column( )->text( 'Default' )->get_parent(
|
||||||
|
" )->column( )->text( 'Description' )->get_parent(
|
||||||
|
)->get_parent(
|
||||||
|
)->items( )->column_list_item( selected = '{SELKZ}'
|
||||||
|
)->cells(
|
||||||
|
" )->checkbox( '{SELKZ}'
|
||||||
|
)->text( '{NAME}'
|
||||||
|
)->text( '{USER}'
|
||||||
|
)->text( '{DEFAULT}'
|
||||||
|
" )->text( '{DESCR}'
|
||||||
|
)->get_parent( )->get_parent( )->get_parent( )->get_parent(
|
||||||
|
)->footer( )->overflow_toolbar(
|
||||||
|
)->toolbar_spacer(
|
||||||
|
)->button(
|
||||||
|
text = 'load'
|
||||||
|
press = client->_event( 'POPUP_LAYOUT_LOAD' )
|
||||||
|
type = 'Emphasized'
|
||||||
|
)->button(
|
||||||
|
text = 'close'
|
||||||
|
press = client->_event( 'POPUP_LAYOUT_CONTINUE' )
|
||||||
|
type = 'Emphasized' ).
|
||||||
|
|
||||||
|
app-next-xml_popup = lo_popup->get_root( )->xml_get( ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD z2ui5_on_render_pop_filter.
|
||||||
|
|
||||||
|
DATA(lo_popup) = z2ui5_cl_xml_view=>factory_popup( ).
|
||||||
|
|
||||||
|
lo_popup->dialog( 'abap2UI5 - Popup to select entry'
|
||||||
|
)->table(
|
||||||
|
mode = 'MultiSelect'
|
||||||
|
items = client->_bind( ms_layout-t_filter_show )
|
||||||
|
)->columns(
|
||||||
|
)->column( )->text( 'Title' )->get_parent(
|
||||||
|
)->column( )->text( 'Color' )->get_parent(
|
||||||
|
)->column( )->text( 'Info' )->get_parent(
|
||||||
|
)->column( )->text( 'Description' )->get_parent(
|
||||||
|
)->get_parent(
|
||||||
|
)->items( )->column_list_item( selected = '{SELKZ}'
|
||||||
|
)->cells(
|
||||||
|
" )->checkbox( '{SELKZ}'
|
||||||
|
)->text( '{NAME}'
|
||||||
|
)->text( '{VALUE}'
|
||||||
|
" )->text( '{DESCR}'
|
||||||
|
)->get_parent( )->get_parent( )->get_parent( )->get_parent(
|
||||||
|
)->footer( )->overflow_toolbar(
|
||||||
|
)->toolbar_spacer(
|
||||||
|
)->button(
|
||||||
|
text = 'continue'
|
||||||
|
press = client->_event( 'POPUP_FILTER_CONTINUE' )
|
||||||
|
type = 'Emphasized' ).
|
||||||
|
|
||||||
|
app-next-xml_popup = lo_popup->get_root( )->xml_get( ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD z2ui5_on_render_pop_layout.
|
||||||
|
|
||||||
|
DATA(lo_popup) = z2ui5_cl_xml_view=>factory_popup( ).
|
||||||
|
|
||||||
|
lo_popup->popover( placement = `Bottom` title = 'abap2UI5 - Layout' contentwidth = `50%`
|
||||||
|
)->input( description = `Name` value = client->_bind( mv_layout_name )
|
||||||
|
)->button( text = `Save` press = client->_event( `BUTTON_SAVE_LAYOUT` )
|
||||||
|
)->table(
|
||||||
|
mode = 'SingleSelectLeft'
|
||||||
|
items = client->_bind( mt_db_layout )
|
||||||
|
)->columns(
|
||||||
|
)->column( )->text( 'Name' )->get_parent(
|
||||||
|
)->column( )->text( 'User' )->get_parent(
|
||||||
|
)->column( )->text( 'Default' )->get_parent(
|
||||||
|
" )->column( )->text( 'Description' )->get_parent(
|
||||||
|
)->get_parent(
|
||||||
|
)->items( )->column_list_item( selected = '{SELKZ}'
|
||||||
|
)->cells(
|
||||||
|
" )->checkbox( '{SELKZ}'
|
||||||
|
)->text( '{NAME}'
|
||||||
|
)->text( '{USER}'
|
||||||
|
)->text( '{DEFAULT}'
|
||||||
|
" )->text( '{DESCR}'
|
||||||
|
)->get_parent( )->get_parent( )->get_parent( )->get_parent(
|
||||||
|
)->footer( )->overflow_toolbar(
|
||||||
|
)->toolbar_spacer(
|
||||||
|
)->button(
|
||||||
|
text = 'load'
|
||||||
|
press = client->_event( 'POPUP_LAYOUT_LOAD' )
|
||||||
|
type = 'Emphasized'
|
||||||
|
)->button(
|
||||||
|
text = 'close'
|
||||||
|
press = client->_event( 'POPUP_LAYOUT_CONTINUE' )
|
||||||
|
type = 'Emphasized' ).
|
||||||
|
|
||||||
|
app-next-xml_popup = lo_popup->get_root( )->xml_get( ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD z2ui5_on_render_pop_setup.
|
METHOD z2ui5_on_render_pop_setup.
|
||||||
|
|
||||||
DATA(ro_popup) = z2ui5_cl_xml_view=>factory_popup( ).
|
DATA(ro_popup) = z2ui5_cl_xml_view=>factory_popup( ).
|
||||||
|
@ -739,115 +876,45 @@ CLASS z2ui5_cl_app_demo_49 IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD z2ui5_on_render_pop_filter.
|
METHOD z2ui5_set_data.
|
||||||
|
|
||||||
DATA(lo_popup) = z2ui5_cl_xml_view=>factory_popup( ).
|
"dirty solution
|
||||||
|
"todo: map filters to rangetab and make a nice select
|
||||||
|
|
||||||
lo_popup->dialog( 'abap2UI5 - Popup to select entry'
|
IF ms_layout-s_filter-uuid IS INITIAL.
|
||||||
)->table(
|
|
||||||
mode = 'MultiSelect'
|
|
||||||
items = client->_bind( ms_layout-t_filter_show )
|
|
||||||
)->columns(
|
|
||||||
)->column( )->text( 'Title' )->get_parent(
|
|
||||||
)->column( )->text( 'Color' )->get_parent(
|
|
||||||
)->column( )->text( 'Info' )->get_parent(
|
|
||||||
)->column( )->text( 'Description' )->get_parent(
|
|
||||||
)->get_parent(
|
|
||||||
)->items( )->column_list_item( selected = '{SELKZ}'
|
|
||||||
)->cells(
|
|
||||||
" )->checkbox( '{SELKZ}'
|
|
||||||
)->text( '{NAME}'
|
|
||||||
)->text( '{VALUE}'
|
|
||||||
" )->text( '{DESCR}'
|
|
||||||
)->get_parent( )->get_parent( )->get_parent( )->get_parent(
|
|
||||||
)->footer( )->overflow_toolbar(
|
|
||||||
)->toolbar_spacer(
|
|
||||||
)->button(
|
|
||||||
text = 'continue'
|
|
||||||
press = client->_event( 'POPUP_FILTER_CONTINUE' )
|
|
||||||
type = 'Emphasized' ).
|
|
||||||
|
|
||||||
app-next-xml_popup = lo_popup->get_root( )->xml_get( ).
|
SELECT FROM z2ui5_t_draft
|
||||||
|
FIELDS uuid, uuid_prev, timestampl, uname
|
||||||
|
INTO CORRESPONDING FIELDS OF TABLE @mt_table
|
||||||
|
UP TO 50 ROWS.
|
||||||
|
|
||||||
|
ELSE.
|
||||||
|
|
||||||
|
SELECT FROM z2ui5_t_draft
|
||||||
|
FIELDS uuid, uuid_prev, timestampl, uname
|
||||||
|
WHERE uuid = @ms_layout-s_filter-uuid
|
||||||
|
INTO CORRESPONDING FIELDS OF TABLE @mt_table
|
||||||
|
UP TO 50 ROWS.
|
||||||
|
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ms_view-t_tab = CORRESPONDING #( mt_table ).
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
METHOD z2ui5_on_render_pop_detail.
|
|
||||||
|
|
||||||
DATA(lo_popup) = z2ui5_cl_xml_view=>factory_popup( ).
|
METHOD z2ui5_set_detail.
|
||||||
|
|
||||||
lo_popup->popover( placement = `Bottom` title = 'abap2UI5 - Layout' contentwidth = `50%`
|
ms_detail = mt_table[ uuid = client->get( )-event_data ].
|
||||||
)->input( description = `Name` value = client->_bind( mv_layout_name )
|
|
||||||
)->button( text = `Save` press = client->_event( `BUTTON_SAVE_LAYOUT` )
|
|
||||||
)->table(
|
|
||||||
mode = 'SingleSelectLeft'
|
|
||||||
items = client->_bind( mt_db_layout )
|
|
||||||
)->columns(
|
|
||||||
)->column( )->text( 'Name' )->get_parent(
|
|
||||||
)->column( )->text( 'User' )->get_parent(
|
|
||||||
)->column( )->text( 'Default' )->get_parent(
|
|
||||||
" )->column( )->text( 'Description' )->get_parent(
|
|
||||||
)->get_parent(
|
|
||||||
)->items( )->column_list_item( selected = '{SELKZ}'
|
|
||||||
)->cells(
|
|
||||||
" )->checkbox( '{SELKZ}'
|
|
||||||
)->text( '{NAME}'
|
|
||||||
)->text( '{USER}'
|
|
||||||
)->text( '{DEFAULT}'
|
|
||||||
" )->text( '{DESCR}'
|
|
||||||
)->get_parent( )->get_parent( )->get_parent( )->get_parent(
|
|
||||||
)->footer( )->overflow_toolbar(
|
|
||||||
)->toolbar_spacer(
|
|
||||||
)->button(
|
|
||||||
text = 'load'
|
|
||||||
press = client->_event( 'POPUP_LAYOUT_LOAD' )
|
|
||||||
type = 'Emphasized'
|
|
||||||
)->button(
|
|
||||||
text = 'close'
|
|
||||||
press = client->_event( 'POPUP_LAYOUT_CONTINUE' )
|
|
||||||
type = 'Emphasized' ).
|
|
||||||
|
|
||||||
app-next-xml_popup = lo_popup->get_root( )->xml_get( ).
|
SELECT SINGLE FROM z2ui5_t_draft
|
||||||
|
FIELDS *
|
||||||
|
WHERE uuid = @ms_detail-uuid
|
||||||
|
INTO CORRESPONDING FIELDS OF @ms_detail
|
||||||
|
.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
METHOD z2ui5_on_render_pop_layout.
|
|
||||||
|
|
||||||
DATA(lo_popup) = z2ui5_cl_xml_view=>factory_popup( ).
|
|
||||||
|
|
||||||
lo_popup->popover( placement = `Bottom` title = 'abap2UI5 - Layout' contentwidth = `50%`
|
|
||||||
)->input( description = `Name` value = client->_bind( mv_layout_name )
|
|
||||||
)->button( text = `Save` press = client->_event( `BUTTON_SAVE_LAYOUT` )
|
|
||||||
)->table(
|
|
||||||
mode = 'SingleSelectLeft'
|
|
||||||
items = client->_bind( mt_db_layout )
|
|
||||||
)->columns(
|
|
||||||
)->column( )->text( 'Name' )->get_parent(
|
|
||||||
)->column( )->text( 'User' )->get_parent(
|
|
||||||
)->column( )->text( 'Default' )->get_parent(
|
|
||||||
" )->column( )->text( 'Description' )->get_parent(
|
|
||||||
)->get_parent(
|
|
||||||
)->items( )->column_list_item( selected = '{SELKZ}'
|
|
||||||
)->cells(
|
|
||||||
" )->checkbox( '{SELKZ}'
|
|
||||||
)->text( '{NAME}'
|
|
||||||
)->text( '{USER}'
|
|
||||||
)->text( '{DEFAULT}'
|
|
||||||
" )->text( '{DESCR}'
|
|
||||||
)->get_parent( )->get_parent( )->get_parent( )->get_parent(
|
|
||||||
)->footer( )->overflow_toolbar(
|
|
||||||
)->toolbar_spacer(
|
|
||||||
)->button(
|
|
||||||
text = 'load'
|
|
||||||
press = client->_event( 'POPUP_LAYOUT_LOAD' )
|
|
||||||
type = 'Emphasized'
|
|
||||||
)->button(
|
|
||||||
text = 'close'
|
|
||||||
press = client->_event( 'POPUP_LAYOUT_CONTINUE' )
|
|
||||||
type = 'Emphasized' ).
|
|
||||||
|
|
||||||
app-next-xml_popup = lo_popup->get_root( )->xml_get( ).
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
METHOD z2ui5_set_download_csv.
|
METHOD z2ui5_set_download_csv.
|
||||||
|
|
||||||
|
@ -888,25 +955,33 @@ CLASS z2ui5_cl_app_demo_49 IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD encode_base64.
|
METHOD z2ui5_set_filter.
|
||||||
|
|
||||||
TRY.
|
io_box->search_field(
|
||||||
CALL METHOD ('CL_WEB_HTTP_UTILITY')=>encode_base64
|
value = client->_bind( ms_view-search_val )
|
||||||
EXPORTING
|
search = client->_event( 'BUTTON_SEARCH' )
|
||||||
unencoded = val
|
change = client->_event( 'BUTTON_SEARCH' )
|
||||||
RECEIVING
|
width = `17.5rem`
|
||||||
encoded = result.
|
id = `SEARCH`
|
||||||
|
).
|
||||||
|
|
||||||
CATCH cx_sy_dyn_call_illegal_class.
|
IF line_exists( ms_layout-t_filter_show[ name = `UUID` selkz = abap_true ] ).
|
||||||
|
io_box->input( value = client->_bind( ms_layout-s_filter-uuid ) description = `UUID` ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
DATA(classname) = 'CL_HTTP_UTILITY'.
|
IF line_exists( ms_layout-t_filter_show[ name = `UUID_PREV` selkz = abap_true ] ).
|
||||||
CALL METHOD (classname)=>encode_base64
|
io_box->input( value = client->_bind( ms_layout-s_filter-uuid_prev ) description = `UUID_PREV` ).
|
||||||
EXPORTING
|
ENDIF.
|
||||||
unencoded = val
|
|
||||||
RECEIVING
|
|
||||||
encoded = result.
|
|
||||||
|
|
||||||
ENDTRY.
|
"todo other columns...
|
||||||
|
|
||||||
|
DATA(rt_filter) = ms_layout-t_filter_show.
|
||||||
|
DELETE rt_filter WHERE selkz = abap_false.
|
||||||
|
|
||||||
|
io_box->get_parent( )->hbox( justifycontent = `End`
|
||||||
|
)->button( text = `Go` press = client->_event( `BUTTON_START` ) type = `Emphasized`
|
||||||
|
)->button( text = `Adapt Filters (` && shift_right( CONV string( lines( rt_filter ) ) ) && `)` press = client->_event( `POPUP_FILTER` )
|
||||||
|
).
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
@ -936,19 +1011,6 @@ CLASS z2ui5_cl_app_demo_49 IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD z2ui5_set_detail.
|
|
||||||
|
|
||||||
ms_detail = mt_table[ uuid = client->get( )-event_data ].
|
|
||||||
|
|
||||||
SELECT SINGLE FROM z2ui5_t_draft
|
|
||||||
FIELDS *
|
|
||||||
WHERE uuid = @ms_detail-uuid
|
|
||||||
INTO CORRESPONDING FIELDS OF @ms_detail
|
|
||||||
.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
|
|
||||||
METHOD z2ui5_set_sort.
|
METHOD z2ui5_set_sort.
|
||||||
|
|
||||||
"quick and dirty - todo
|
"quick and dirty - todo
|
||||||
|
@ -967,55 +1029,4 @@ CLASS z2ui5_cl_app_demo_49 IMPLEMENTATION.
|
||||||
ENDTRY.
|
ENDTRY.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD z2ui5_set_filter.
|
|
||||||
|
|
||||||
IF line_exists( ms_layout-t_filter_show[ name = `UUID` selkz = abap_true ] ).
|
|
||||||
io_box->input( value = client->_bind( ms_layout-s_filter-uuid ) description = `UUID` ).
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
IF line_exists( ms_layout-t_filter_show[ name = `UUID_PREV` selkz = abap_true ] ).
|
|
||||||
io_box->input( value = client->_bind( ms_layout-s_filter-uuid_prev ) description = `UUID_PREV` ).
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
"todo other columns...
|
|
||||||
|
|
||||||
DATA(rt_filter) = ms_layout-t_filter_show.
|
|
||||||
DELETE rt_filter WHERE selkz = abap_false.
|
|
||||||
|
|
||||||
io_box->get_parent( )->hbox( justifycontent = `End`
|
|
||||||
)->button( text = `Go` press = client->_event( `BUTTON_START` ) type = `Emphasized`
|
|
||||||
)->button( text = `Adapt Filters (` && shift_right( CONV string( lines( rt_filter ) ) ) && `)` press = client->_event( `POPUP_FILTER` )
|
|
||||||
).
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
|
|
||||||
METHOD z2ui5_set_data.
|
|
||||||
|
|
||||||
"dirty solution
|
|
||||||
"todo: map filters to rangetab and make a nice select
|
|
||||||
|
|
||||||
IF ms_layout-s_filter-uuid IS INITIAL.
|
|
||||||
|
|
||||||
SELECT FROM z2ui5_t_draft
|
|
||||||
FIELDS uuid, uuid_prev, timestampl, uname
|
|
||||||
INTO CORRESPONDING FIELDS OF TABLE @mt_table
|
|
||||||
UP TO 50 ROWS.
|
|
||||||
|
|
||||||
ELSE.
|
|
||||||
|
|
||||||
SELECT FROM z2ui5_t_draft
|
|
||||||
FIELDS uuid, uuid_prev, timestampl, uname
|
|
||||||
WHERE uuid = @ms_layout-s_filter-uuid
|
|
||||||
INTO CORRESPONDING FIELDS OF TABLE @mt_table
|
|
||||||
UP TO 50 ROWS.
|
|
||||||
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
ms_view-t_tab = CORRESPONDING #( mt_table ).
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
103
src/00/z2ui5_cl_app_demo_51.clas.abap
Normal file
103
src/00/z2ui5_cl_app_demo_51.clas.abap
Normal file
|
@ -0,0 +1,103 @@
|
||||||
|
CLASS z2ui5_cl_app_demo_51 DEFINITION PUBLIC.
|
||||||
|
|
||||||
|
PUBLIC SECTION.
|
||||||
|
|
||||||
|
INTERFACES z2ui5_if_app.
|
||||||
|
|
||||||
|
DATA product TYPE string.
|
||||||
|
DATA quantity TYPE string.
|
||||||
|
DATA check_initialized TYPE abap_bool.
|
||||||
|
|
||||||
|
PROTECTED SECTION.
|
||||||
|
PRIVATE SECTION.
|
||||||
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
CLASS z2ui5_cl_app_demo_51 IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
DATA(page) = z2ui5_cl_xml_view=>factory( )->shell(
|
||||||
|
)->page(
|
||||||
|
id = 'id_page'
|
||||||
|
title = 'abapScheme - Workbench'
|
||||||
|
shownavbutton = abap_true
|
||||||
|
navbuttonpress = client->_event( 'BACK' ) ).
|
||||||
|
|
||||||
|
page->header_content(
|
||||||
|
)->toolbar(
|
||||||
|
)->button(
|
||||||
|
text = 'Evaluate'
|
||||||
|
press = client->_event( 'BUTTON_EVAL' )
|
||||||
|
icon = 'sap-icon://begin'
|
||||||
|
type = 'Emphasized'
|
||||||
|
")->toolbar_spacer(
|
||||||
|
)->button( text = 'S-Expression' press = client->_event( 'BUTTON_SEXP' )
|
||||||
|
icon = 'sap-icon://tree'
|
||||||
|
)->button( text = 'Trace' press = client->_event( 'BUTTON_TRACE' )
|
||||||
|
icon = 'sap-icon://step'
|
||||||
|
)->button(
|
||||||
|
text = 'Previous'
|
||||||
|
press = client->_event( 'BUTTON_PREV' )
|
||||||
|
icon = 'sap-icon://navigation-left-arrow'
|
||||||
|
)->button(
|
||||||
|
text = 'Next'
|
||||||
|
press = client->_event( 'BUTTON_NEXT' )
|
||||||
|
icon = 'sap-icon://navigation-right-arrow'
|
||||||
|
)->button(
|
||||||
|
text = 'Refresh'
|
||||||
|
type = 'Reject'
|
||||||
|
press = client->_event( 'BUTTON_RESET' )
|
||||||
|
icon = 'sap-icon://delete'
|
||||||
|
)->link( text = 'Help on..' href = 'https://github.com/nomssi/abap_scheme/wiki'
|
||||||
|
" icon = 'sap-icon://learning-assistant' // 'sap-icon://sys-help'
|
||||||
|
)->get_parent( ).
|
||||||
|
|
||||||
|
|
||||||
|
* )->toolbar(
|
||||||
|
* )->button(
|
||||||
|
* text = 'Evaluate'
|
||||||
|
* press = client->_event( 'BUTTON_EVAL' )
|
||||||
|
* icon = 'sap-icon://begin'
|
||||||
|
* type = 'Emphasized'
|
||||||
|
* )->toolbar_spacer(
|
||||||
|
* )->button( text = 'S-Expression' press = client->_event( 'BUTTON_SEXP' )
|
||||||
|
* icon = 'sap-icon://tree'
|
||||||
|
* )->button( text = 'Trace' press = client->_event( 'BUTTON_TRACE' )
|
||||||
|
* icon = 'sap-icon://step'
|
||||||
|
* )->button(
|
||||||
|
* text = 'Previous'
|
||||||
|
* press = client->_event( 'BUTTON_PREV' )
|
||||||
|
* icon = 'sap-icon://navigation-left-arrow'
|
||||||
|
* )->button(
|
||||||
|
* text = 'Next'
|
||||||
|
* press = client->_event( 'BUTTON_NEXT' )
|
||||||
|
* icon = 'sap-icon://navigation-right-arrow'
|
||||||
|
* )->button(
|
||||||
|
* text = 'Refresh'
|
||||||
|
* type = 'Reject'
|
||||||
|
* press = client->_event( 'BUTTON_RESET' )
|
||||||
|
* icon = 'sap-icon://delete'
|
||||||
|
* )->link( text = 'Help on..' href = 'https://github.com/nomssi/abap_scheme/wiki'
|
||||||
|
* " icon = 'sap-icon://learning-assistant' // 'sap-icon://sys-help'
|
||||||
|
* ).
|
||||||
|
|
||||||
|
client->set_next( VALUE #( xml_main = page->get_root( )->xml_get( ) ) ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
ENDCLASS.
|
16
src/00/z2ui5_cl_app_demo_51.clas.xml
Normal file
16
src/00/z2ui5_cl_app_demo_51.clas.xml
Normal file
|
@ -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_APP_DEMO_51</CLSNAME>
|
||||||
|
<LANGU>E</LANGU>
|
||||||
|
<DESCRIPT>test -test</DESCRIPT>
|
||||||
|
<STATE>1</STATE>
|
||||||
|
<CLSCCINCL>X</CLSCCINCL>
|
||||||
|
<FIXPT>X</FIXPT>
|
||||||
|
<UNICODE>X</UNICODE>
|
||||||
|
</VSEOCLASS>
|
||||||
|
</asx:values>
|
||||||
|
</asx:abap>
|
||||||
|
</abapGit>
|
142
src/00/z2ui5_cl_app_demo_52.clas.abap
Normal file
142
src/00/z2ui5_cl_app_demo_52.clas.abap
Normal file
|
@ -0,0 +1,142 @@
|
||||||
|
CLASS z2ui5_cl_app_demo_52 DEFINITION PUBLIC.
|
||||||
|
|
||||||
|
PUBLIC SECTION.
|
||||||
|
|
||||||
|
INTERFACES z2ui5_if_app.
|
||||||
|
|
||||||
|
TYPES:
|
||||||
|
BEGIN OF ty_row,
|
||||||
|
count 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 check_initialized TYPE abap_bool.
|
||||||
|
METHODS refresh_data.
|
||||||
|
|
||||||
|
data next type z2ui5_if_client=>ty_s_next.
|
||||||
|
|
||||||
|
DATA mv_check_popover TYPE abap_bool.
|
||||||
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
CLASS z2ui5_cl_app_demo_52 IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD refresh_data.
|
||||||
|
|
||||||
|
DO 100 TIMES.
|
||||||
|
DATA(ls_row) = VALUE ty_row( count = sy-index value = 'red'
|
||||||
|
info = COND #( WHEN sy-index < 50 THEN 'completed' ELSE 'uncompleted' )
|
||||||
|
descr = 'this is a description' checkbox = abap_true ).
|
||||||
|
INSERT ls_row INTO TABLE t_tab.
|
||||||
|
ENDDO.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD z2ui5_if_app~main.
|
||||||
|
|
||||||
|
IF check_initialized = abap_false.
|
||||||
|
check_initialized = abap_true.
|
||||||
|
refresh_data( ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
clear next.
|
||||||
|
|
||||||
|
CASE client->get( )-event.
|
||||||
|
|
||||||
|
WHEN `POPOVER_DETAIL`.
|
||||||
|
DATA(lv_id) = client->get( )-event_data.
|
||||||
|
mv_check_popover = abap_true.
|
||||||
|
next-popover_open_by_id = lv_id.
|
||||||
|
|
||||||
|
WHEN 'BUTTON_POST'.
|
||||||
|
client->popup_message_box( 'button post was pressed' ).
|
||||||
|
WHEN 'BACK'.
|
||||||
|
client->nav_app_leave( client->get_app( client->get( )-id_prev_app_stack ) ).
|
||||||
|
|
||||||
|
ENDCASE.
|
||||||
|
|
||||||
|
IF mv_check_popover = abap_false.
|
||||||
|
|
||||||
|
DATA(page) = z2ui5_cl_xml_view=>factory( )->shell(
|
||||||
|
)->page(
|
||||||
|
title = 'abap2UI5 - Demo displaying popver without rerendering the main view'
|
||||||
|
navbuttonpress = client->_event( 'BACK' )
|
||||||
|
shownavbutton = abap_true
|
||||||
|
)->header_content(
|
||||||
|
)->link(
|
||||||
|
text = 'Source_Code' target = '_blank'
|
||||||
|
href = z2ui5_cl_xml_view=>hlp_get_source_code_url( app = me get = client->get( ) )
|
||||||
|
)->get_parent( ).
|
||||||
|
|
||||||
|
DATA(tab) = page->scroll_container( height = '70%' vertical = abap_true
|
||||||
|
)->table(
|
||||||
|
growing = abap_true
|
||||||
|
growingthreshold = '20'
|
||||||
|
growingscrolltoload = abap_true
|
||||||
|
items = client->_bind_one( t_tab )
|
||||||
|
sticky = 'ColumnHeaders,HeaderToolbar' ).
|
||||||
|
|
||||||
|
tab->columns(
|
||||||
|
)->column(
|
||||||
|
)->text( 'Color' )->get_parent(
|
||||||
|
)->column(
|
||||||
|
)->text( 'Info' )->get_parent(
|
||||||
|
)->column(
|
||||||
|
)->text( 'Description' )->get_parent(
|
||||||
|
)->column(
|
||||||
|
)->text( 'Checkbox' )->get_parent(
|
||||||
|
)->column(
|
||||||
|
)->text( 'Counter' ).
|
||||||
|
|
||||||
|
tab->items( )->column_list_item( )->cells(
|
||||||
|
)->link( text = '{COUNT}' press = client->_event( val = `POPOVER_DETAIL` data = `${$source>/id}` hold_view = abap_true )
|
||||||
|
)->text( '{INFO}'
|
||||||
|
)->text( '{DESCR}'
|
||||||
|
)->checkbox( selected = '{CHECKBOX}' enabled = abap_false
|
||||||
|
)->text( '{COUNT}' ).
|
||||||
|
|
||||||
|
next-xml_main = page->get_root( )->xml_get( ).
|
||||||
|
|
||||||
|
else.
|
||||||
|
|
||||||
|
mv_check_popover = abap_false.
|
||||||
|
|
||||||
|
DATA(lo_popup) = z2ui5_cl_xml_view=>factory_popup( ).
|
||||||
|
|
||||||
|
lo_popup->popover( placement = `Bottom` title = 'abap2UI5 - this is a popover' contentwidth = `50%`
|
||||||
|
)->simple_form( editable = abap_true
|
||||||
|
)->content( 'form'
|
||||||
|
)->label( 'info1'
|
||||||
|
)->text( `this is a text`
|
||||||
|
)->label( 'info2'
|
||||||
|
)->text( `this is a text`
|
||||||
|
)->label( 'info3'
|
||||||
|
)->text( `this is a text`
|
||||||
|
)->text( `this is a text`
|
||||||
|
)->get_parent( )->get_parent(
|
||||||
|
)->footer(
|
||||||
|
)->overflow_toolbar(
|
||||||
|
)->toolbar_spacer(
|
||||||
|
)->button(
|
||||||
|
text = 'details'
|
||||||
|
press = client->_event( 'BUTTON_DETAILS' )
|
||||||
|
type = 'Emphasized'
|
||||||
|
|
||||||
|
).
|
||||||
|
|
||||||
|
next-xml_popup = lo_popup->get_root( )->xml_get( ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
|
||||||
|
client->set_next( next ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
ENDCLASS.
|
16
src/00/z2ui5_cl_app_demo_52.clas.xml
Normal file
16
src/00/z2ui5_cl_app_demo_52.clas.xml
Normal file
|
@ -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_APP_DEMO_52</CLSNAME>
|
||||||
|
<LANGU>E</LANGU>
|
||||||
|
<DESCRIPT>list report - cell with popover</DESCRIPT>
|
||||||
|
<STATE>1</STATE>
|
||||||
|
<CLSCCINCL>X</CLSCCINCL>
|
||||||
|
<FIXPT>X</FIXPT>
|
||||||
|
<UNICODE>X</UNICODE>
|
||||||
|
</VSEOCLASS>
|
||||||
|
</asx:values>
|
||||||
|
</asx:abap>
|
||||||
|
</abapGit>
|
1033
src/00/z2ui5_cl_app_demo_53.clas.abap
Normal file
1033
src/00/z2ui5_cl_app_demo_53.clas.abap
Normal file
File diff suppressed because it is too large
Load Diff
747
src/00/z2ui5_cl_app_demo_53.clas.locals_imp.abap
Normal file
747
src/00/z2ui5_cl_app_demo_53.clas.locals_imp.abap
Normal file
|
@ -0,0 +1,747 @@
|
||||||
|
CLASS lcl_db DEFINITION.
|
||||||
|
|
||||||
|
|
||||||
|
PUBLIC SECTION.
|
||||||
|
|
||||||
|
|
||||||
|
TYPES ty_t_table TYPE z2ui5_cl_app_demo_13=>ty_t_table.
|
||||||
|
|
||||||
|
CLASS-DATA app TYPE REF TO z2ui5_cl_app_demo_13.
|
||||||
|
"CLASS-DATA st_table TYPE ty_t_table.
|
||||||
|
|
||||||
|
CLASS-METHODS generate_test_data.
|
||||||
|
|
||||||
|
CLASS-METHODS get_table_by_json
|
||||||
|
IMPORTING
|
||||||
|
val TYPE string
|
||||||
|
RETURNING
|
||||||
|
VALUE(result) TYPE ty_t_table.
|
||||||
|
|
||||||
|
CLASS-METHODS get_table_by_xml
|
||||||
|
IMPORTING
|
||||||
|
val TYPE string
|
||||||
|
RETURNING
|
||||||
|
VALUE(result) TYPE ty_t_table.
|
||||||
|
|
||||||
|
CLASS-METHODS get_table_by_csv
|
||||||
|
IMPORTING
|
||||||
|
val TYPE string
|
||||||
|
RETURNING
|
||||||
|
VALUE(result) TYPE ty_t_table.
|
||||||
|
|
||||||
|
CLASS-METHODS get_csv_by_table
|
||||||
|
IMPORTING
|
||||||
|
val TYPE ty_t_table
|
||||||
|
RETURNING
|
||||||
|
VALUE(result) TYPE string.
|
||||||
|
|
||||||
|
CLASS-METHODS get_xml_by_table
|
||||||
|
IMPORTING
|
||||||
|
val TYPE ty_t_table
|
||||||
|
RETURNING
|
||||||
|
VALUE(result) TYPE string.
|
||||||
|
|
||||||
|
CLASS-METHODS get_json_by_table
|
||||||
|
IMPORTING
|
||||||
|
val TYPE ty_t_table
|
||||||
|
RETURNING
|
||||||
|
VALUE(result) TYPE string.
|
||||||
|
|
||||||
|
CLASS-METHODS get_fieldlist_by_table
|
||||||
|
IMPORTING
|
||||||
|
it_table TYPE table
|
||||||
|
RETURNING
|
||||||
|
VALUE(result) TYPE string_table.
|
||||||
|
|
||||||
|
CLASS-METHODS db_save
|
||||||
|
IMPORTING
|
||||||
|
value TYPE ty_t_table.
|
||||||
|
|
||||||
|
CLASS-METHODS db_read
|
||||||
|
RETURNING
|
||||||
|
VALUE(result) TYPE ty_t_table.
|
||||||
|
CLASS-METHODS get_test_data_json
|
||||||
|
RETURNING
|
||||||
|
VALUE(result) TYPE string.
|
||||||
|
|
||||||
|
PROTECTED SECTION.
|
||||||
|
PRIVATE SECTION.
|
||||||
|
|
||||||
|
ENDCLASS.
|
||||||
|
|
||||||
|
CLASS lcl_db IMPLEMENTATION.
|
||||||
|
|
||||||
|
METHOD generate_test_data.
|
||||||
|
|
||||||
|
app->st_db = VALUE #(
|
||||||
|
( carrid = 'DL' connid = '0106' countryfr = 'US' cityfrom = 'NEW YORK' airpfrom = 'JFK' countryto = 'DE' cityto = 'FRANKFURT' airpto = 'FR' )
|
||||||
|
( carrid = 'DL' connid = '0106' countryfr = 'US' cityfrom = 'NEW YORK' airpfrom = 'JFK' countryto = 'DE' cityto = 'FRANKFURT' airpto = 'FR' )
|
||||||
|
( carrid = 'DL' connid = '0106' countryfr = 'US' cityfrom = 'NEW YORK' airpfrom = 'JFK' countryto = 'DE' cityto = 'FRANKFURT' airpto = 'FR' )
|
||||||
|
( carrid = 'DL' connid = '0106' countryfr = 'US' cityfrom = 'NEW YORK' airpfrom = 'JFK' countryto = 'DE' cityto = 'FRANKFURT' airpto = 'FR' )
|
||||||
|
( carrid = 'DL' connid = '0106' countryfr = 'US' cityfrom = 'NEW YORK' airpfrom = 'JFK' countryto = 'DE' cityto = 'FRANKFURT' airpto = 'FR' )
|
||||||
|
( carrid = 'DL' connid = '0106' countryfr = 'US' cityfrom = 'NEW YORK' airpfrom = 'JFK' countryto = 'DE' cityto = 'FRANKFURT' airpto = 'FR' )
|
||||||
|
( carrid = 'DL' connid = '0106' countryfr = 'US' cityfrom = 'NEW YORK' airpfrom = 'JFK' countryto = 'DE' cityto = 'FRANKFURT' airpto = 'FR' )
|
||||||
|
( carrid = 'DL' connid = '0106' countryfr = 'US' cityfrom = 'NEW YORK' airpfrom = 'JFK' countryto = 'DE' cityto = 'FRANKFURT' airpto = 'FR' )
|
||||||
|
).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD get_table_by_json.
|
||||||
|
|
||||||
|
DATA lt_tab TYPE ty_t_table.
|
||||||
|
|
||||||
|
/ui2/cl_json=>deserialize(
|
||||||
|
EXPORTING
|
||||||
|
json = val
|
||||||
|
* jsonx =
|
||||||
|
* pretty_name =
|
||||||
|
* assoc_arrays =
|
||||||
|
* assoc_arrays_opt =
|
||||||
|
* name_mappings =
|
||||||
|
* conversion_exits =
|
||||||
|
* hex_as_base64 =
|
||||||
|
CHANGING
|
||||||
|
data = lt_tab
|
||||||
|
).
|
||||||
|
|
||||||
|
result = lt_tab.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD get_table_by_xml.
|
||||||
|
|
||||||
|
DATA lt_tab TYPE ty_t_table.
|
||||||
|
|
||||||
|
CALL TRANSFORMATION id SOURCE xml = val RESULT data = lt_tab.
|
||||||
|
|
||||||
|
result = lt_tab.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD get_table_by_csv.
|
||||||
|
|
||||||
|
SPLIT val AT ';' INTO TABLE DATA(lt_cols).
|
||||||
|
|
||||||
|
LOOP AT lt_cols INTO DATA(lv_field).
|
||||||
|
|
||||||
|
DATA(ls_row) = VALUE z2ui5_cl_app_demo_13=>ty_s_spfli( ).
|
||||||
|
DATA(lv_index) = 1.
|
||||||
|
DO.
|
||||||
|
ASSIGN COMPONENT lv_index OF STRUCTURE ls_row TO FIELD-SYMBOL(<field>).
|
||||||
|
IF sy-subrc <> 0.
|
||||||
|
EXIT.
|
||||||
|
ENDIF.
|
||||||
|
<field> = lv_field.
|
||||||
|
lv_index = lv_index + 1.
|
||||||
|
ENDDO.
|
||||||
|
INSERT ls_row INTO TABLE result.
|
||||||
|
|
||||||
|
ENDLOOP.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD db_save.
|
||||||
|
|
||||||
|
"normally modify database here
|
||||||
|
|
||||||
|
"test scenario, therefore write internal table instead
|
||||||
|
app->st_db = value.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD db_read.
|
||||||
|
|
||||||
|
"normally read database here
|
||||||
|
|
||||||
|
"test scenario, therefore read internal table instead
|
||||||
|
|
||||||
|
result = app->st_db.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD get_csv_by_table.
|
||||||
|
|
||||||
|
LOOP AT val INTO DATA(ls_row).
|
||||||
|
|
||||||
|
DATA(lv_index) = 1.
|
||||||
|
DO.
|
||||||
|
ASSIGN COMPONENT lv_index OF STRUCTURE ls_row TO FIELD-SYMBOL(<field>).
|
||||||
|
IF sy-subrc <> 0.
|
||||||
|
EXIT.
|
||||||
|
ENDIF.
|
||||||
|
lv_index = lv_index + 1.
|
||||||
|
result = result && <field> && ';'.
|
||||||
|
ENDDO.
|
||||||
|
result = result && cl_abap_char_utilities=>cr_lf.
|
||||||
|
ENDLOOP.
|
||||||
|
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD get_json_by_table.
|
||||||
|
|
||||||
|
result = /ui2/cl_json=>serialize(
|
||||||
|
val
|
||||||
|
* compress =
|
||||||
|
* name =
|
||||||
|
* pretty_name =
|
||||||
|
* type_descr =
|
||||||
|
* assoc_arrays =
|
||||||
|
* ts_as_iso8601 =
|
||||||
|
* expand_includes =
|
||||||
|
* assoc_arrays_opt =
|
||||||
|
* numc_as_string =
|
||||||
|
* name_mappings =
|
||||||
|
* conversion_exits =
|
||||||
|
" format_output = abap_true
|
||||||
|
* hex_as_base64 =
|
||||||
|
).
|
||||||
|
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD get_xml_by_table.
|
||||||
|
|
||||||
|
CALL TRANSFORMATION id SOURCE values = val RESULT XML result.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD get_fieldlist_by_table.
|
||||||
|
|
||||||
|
DATA(lo_tab) = CAST cl_abap_tabledescr( cl_abap_datadescr=>describe_by_data( it_table ) ).
|
||||||
|
DATA(lo_struc) = CAST cl_abap_structdescr( lo_tab->get_table_line_type( ) ).
|
||||||
|
|
||||||
|
DATA(lt_comp) = lo_struc->get_components( ).
|
||||||
|
|
||||||
|
LOOP AT lt_comp INTO DATA(ls_comp).
|
||||||
|
INSERT ls_comp-name INTO TABLE result.
|
||||||
|
ENDLOOP.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD get_test_data_json.
|
||||||
|
|
||||||
|
result = `[` && |\n| &&
|
||||||
|
` {` && |\n| &&
|
||||||
|
` "CARRID": "DL",` && |\n| &&
|
||||||
|
` "CONNID": 106,` && |\n| &&
|
||||||
|
` "COUNTRYFR": "US",` && |\n| &&
|
||||||
|
` "CITYFROM": "NEW YORK",` && |\n| &&
|
||||||
|
` "AIRPFROM": "JFK",` && |\n| &&
|
||||||
|
` "COUNTRYTO": "DE",` && |\n| &&
|
||||||
|
` "CITYTO": "FRANKFURT",` && |\n| &&
|
||||||
|
` "AIRPTO": "FR"` && |\n| &&
|
||||||
|
` },` && |\n| &&
|
||||||
|
` {` && |\n| &&
|
||||||
|
` "CARRID": "DL",` && |\n| &&
|
||||||
|
` "CONNID": 106,` && |\n| &&
|
||||||
|
` "COUNTRYFR": "US",` && |\n| &&
|
||||||
|
` "CITYFROM": "NEW YORK",` && |\n| &&
|
||||||
|
` "AIRPFROM": "JFK",` && |\n| &&
|
||||||
|
` "COUNTRYTO": "DE",` && |\n| &&
|
||||||
|
` "CITYTO": "FRANKFURT",` && |\n| &&
|
||||||
|
` "AIRPTO": "FR"` && |\n| &&
|
||||||
|
` },` && |\n| &&
|
||||||
|
` {` && |\n| &&
|
||||||
|
` "CARRID": "DL",` && |\n| &&
|
||||||
|
` "CONNID": 106,` && |\n| &&
|
||||||
|
` "COUNTRYFR": "US",` && |\n| &&
|
||||||
|
` "CITYFROM": "NEW YORK",` && |\n| &&
|
||||||
|
` "AIRPFROM": "JFK",` && |\n| &&
|
||||||
|
` "COUNTRYTO": "DE",` && |\n| &&
|
||||||
|
` "CITYTO": "FRANKFURT",` && |\n| &&
|
||||||
|
` "AIRPTO": "FR"` && |\n| &&
|
||||||
|
` },` && |\n| &&
|
||||||
|
` {` && |\n| &&
|
||||||
|
` "CARRID": "DL",` && |\n| &&
|
||||||
|
` "CONNID": 106,` && |\n| &&
|
||||||
|
` "COUNTRYFR": "US",` && |\n| &&
|
||||||
|
` "CITYFROM": "NEW YORK",` && |\n| &&
|
||||||
|
` "AIRPFROM": "JFK",` && |\n| &&
|
||||||
|
` "COUNTRYTO": "DE",` && |\n| &&
|
||||||
|
` "CITYTO": "FRANKFURT",` && |\n| &&
|
||||||
|
` "AIRPTO": "FR"` && |\n| &&
|
||||||
|
` },` && |\n| &&
|
||||||
|
` {` && |\n| &&
|
||||||
|
` "CARRID": "DL",` && |\n| &&
|
||||||
|
` "CONNID": 106,` && |\n| &&
|
||||||
|
` "COUNTRYFR": "US",` && |\n| &&
|
||||||
|
` "CITYFROM": "NEW YORK",` && |\n| &&
|
||||||
|
` "AIRPFROM": "JFK",` && |\n| &&
|
||||||
|
` "COUNTRYTO": "DE",` && |\n| &&
|
||||||
|
` "CITYTO": "FRANKFURT",` && |\n| &&
|
||||||
|
` "AIRPTO": "FR"` && |\n| &&
|
||||||
|
` },` && |\n| &&
|
||||||
|
` {` && |\n| &&
|
||||||
|
` "CARRID": "DL",` && |\n| &&
|
||||||
|
` "CONNID": 106,` && |\n| &&
|
||||||
|
` "COUNTRYFR": "US",` && |\n| &&
|
||||||
|
` "CITYFROM": "NEW YORK",` && |\n| &&
|
||||||
|
` "AIRPFROM": "JFK",` && |\n| &&
|
||||||
|
` "COUNTRYTO": "DE",` && |\n| &&
|
||||||
|
` "CITYTO": "FRANKFURT",` && |\n| &&
|
||||||
|
` "AIRPTO": "FR"` && |\n| &&
|
||||||
|
` },` && |\n| &&
|
||||||
|
` {` && |\n| &&
|
||||||
|
` "CARRID": "DL",` && |\n| &&
|
||||||
|
` "CONNID": 106,` && |\n| &&
|
||||||
|
` "COUNTRYFR": "US",` && |\n| &&
|
||||||
|
` "CITYFROM": "NEW YORK",` && |\n| &&
|
||||||
|
` "AIRPFROM": "JFK",` && |\n| &&
|
||||||
|
` "COUNTRYTO": "DE",` && |\n| &&
|
||||||
|
` "CITYTO": "FRANKFURT",` && |\n| &&
|
||||||
|
` "AIRPTO": "FR"` && |\n| &&
|
||||||
|
` },` && |\n| &&
|
||||||
|
` {` && |\n| &&
|
||||||
|
` "CARRID": "DL",` && |\n| &&
|
||||||
|
` "CONNID": 106,` && |\n| &&
|
||||||
|
` "COUNTRYFR": "US",` && |\n| &&
|
||||||
|
` "CITYFROM": "NEW YORK",` && |\n| &&
|
||||||
|
` "AIRPFROM": "JFK",` && |\n| &&
|
||||||
|
` "COUNTRYTO": "DE",` && |\n| &&
|
||||||
|
` "CITYTO": "FRANKFURT",` && |\n| &&
|
||||||
|
` "AIRPTO": "FR"` && |\n| &&
|
||||||
|
` }` && |\n| &&
|
||||||
|
`]`.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
ENDCLASS.
|
||||||
|
|
||||||
|
CLASS z2ui5_lcl_utility DEFINITION INHERITING FROM cx_no_check.
|
||||||
|
|
||||||
|
PUBLIC SECTION.
|
||||||
|
|
||||||
|
TYPES:
|
||||||
|
BEGIN OF ty_attri,
|
||||||
|
name TYPE string,
|
||||||
|
type_kind TYPE string,
|
||||||
|
type TYPE string,
|
||||||
|
bind_type TYPE string,
|
||||||
|
data_stringify TYPE string,
|
||||||
|
gen_type_kind TYPE string,
|
||||||
|
gen_type TYPE string,
|
||||||
|
gen_kind TYPE string,
|
||||||
|
END OF ty_attri.
|
||||||
|
TYPES ty_T_attri TYPE STANDARD TABLE OF ty_attri WITH EMPTY KEY.
|
||||||
|
|
||||||
|
DATA:
|
||||||
|
BEGIN OF ms_error,
|
||||||
|
x_root TYPE REF TO cx_root,
|
||||||
|
uuid TYPE string,
|
||||||
|
s_msg TYPE LINE OF bapirettab,
|
||||||
|
END OF ms_error.
|
||||||
|
|
||||||
|
METHODS constructor
|
||||||
|
IMPORTING
|
||||||
|
val TYPE any OPTIONAL
|
||||||
|
previous TYPE REF TO cx_root OPTIONAL
|
||||||
|
PREFERRED PARAMETER val.
|
||||||
|
|
||||||
|
METHODS get_text REDEFINITION.
|
||||||
|
|
||||||
|
CLASS-METHODS raise
|
||||||
|
IMPORTING
|
||||||
|
v TYPE clike DEFAULT `CX_SY_SUBRC`
|
||||||
|
when TYPE abap_bool DEFAULT abap_true
|
||||||
|
PREFERRED PARAMETER v.
|
||||||
|
|
||||||
|
CLASS-METHODS get_header_val
|
||||||
|
IMPORTING
|
||||||
|
v TYPE clike
|
||||||
|
RETURNING
|
||||||
|
VALUE(result) TYPE z2ui5_if_client=>ty_s_name_value-value.
|
||||||
|
|
||||||
|
CLASS-METHODS get_param_val
|
||||||
|
IMPORTING
|
||||||
|
v TYPE clike
|
||||||
|
RETURNING
|
||||||
|
VALUE(result) TYPE z2ui5_if_client=>ty_s_name_value-value.
|
||||||
|
|
||||||
|
CLASS-METHODS get_uuid
|
||||||
|
RETURNING
|
||||||
|
VALUE(result) TYPE string.
|
||||||
|
|
||||||
|
CLASS-METHODS get_uuid_session
|
||||||
|
RETURNING
|
||||||
|
VALUE(result) TYPE string.
|
||||||
|
|
||||||
|
CLASS-METHODS get_user_tech
|
||||||
|
RETURNING
|
||||||
|
VALUE(result) TYPE string.
|
||||||
|
|
||||||
|
CLASS-METHODS get_timestampl
|
||||||
|
RETURNING
|
||||||
|
VALUE(result) TYPE timestampl.
|
||||||
|
|
||||||
|
CLASS-METHODS trans_any_2_json
|
||||||
|
IMPORTING
|
||||||
|
any TYPE any
|
||||||
|
RETURNING
|
||||||
|
VALUE(result) TYPE string.
|
||||||
|
|
||||||
|
CLASS-METHODS trans_xml_2_object
|
||||||
|
IMPORTING
|
||||||
|
xml TYPE clike
|
||||||
|
EXPORTING
|
||||||
|
data TYPE data.
|
||||||
|
|
||||||
|
CLASS-METHODS get_t_attri_by_ref
|
||||||
|
IMPORTING
|
||||||
|
io_app TYPE REF TO object
|
||||||
|
RETURNING
|
||||||
|
VALUE(result) TYPE ty_t_attri ##NEEDED.
|
||||||
|
|
||||||
|
CLASS-METHODS trans_data_2_xml
|
||||||
|
IMPORTING
|
||||||
|
data TYPE data
|
||||||
|
RETURNING
|
||||||
|
VALUE(result) TYPE string.
|
||||||
|
|
||||||
|
CLASS-METHODS get_abap_2_json
|
||||||
|
IMPORTING
|
||||||
|
val TYPE any
|
||||||
|
RETURNING
|
||||||
|
VALUE(result) TYPE string.
|
||||||
|
|
||||||
|
CLASS-METHODS check_is_boolean
|
||||||
|
IMPORTING
|
||||||
|
val TYPE any
|
||||||
|
RETURNING
|
||||||
|
VALUE(result) TYPE abap_bool.
|
||||||
|
|
||||||
|
CLASS-METHODS get_json_boolean
|
||||||
|
IMPORTING
|
||||||
|
val TYPE any
|
||||||
|
RETURNING
|
||||||
|
VALUE(result) TYPE string.
|
||||||
|
|
||||||
|
CLASS-METHODS trans_ref_tab_2_tab
|
||||||
|
IMPORTING
|
||||||
|
ir_tab_from TYPE REF TO data
|
||||||
|
EXPORTING
|
||||||
|
t_result TYPE STANDARD TABLE.
|
||||||
|
|
||||||
|
CLASS-METHODS get_trim_upper
|
||||||
|
IMPORTING
|
||||||
|
val TYPE any
|
||||||
|
RETURNING
|
||||||
|
VALUE(result) TYPE string.
|
||||||
|
|
||||||
|
PROTECTED SECTION.
|
||||||
|
|
||||||
|
CLASS-DATA mv_counter TYPE i.
|
||||||
|
|
||||||
|
CLASS-METHODS _get_t_attri
|
||||||
|
IMPORTING
|
||||||
|
io_app TYPE REF TO object
|
||||||
|
iv_attri TYPE csequence
|
||||||
|
RETURNING
|
||||||
|
VALUE(result) TYPE abap_attrdescr_tab.
|
||||||
|
|
||||||
|
PRIVATE SECTION.
|
||||||
|
|
||||||
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
CLASS z2ui5_lcl_utility IMPLEMENTATION.
|
||||||
|
|
||||||
|
METHOD get_trim_upper.
|
||||||
|
result = CONV #( val ).
|
||||||
|
result = to_upper( shift_left( shift_right( result ) ) ).
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD constructor.
|
||||||
|
|
||||||
|
super->constructor( previous = previous ).
|
||||||
|
CLEAR textid.
|
||||||
|
|
||||||
|
TRY.
|
||||||
|
ms_error-x_root ?= val.
|
||||||
|
CATCH cx_root ##CATCH_ALL.
|
||||||
|
ms_error-s_msg-message = val.
|
||||||
|
ENDTRY.
|
||||||
|
|
||||||
|
TRY.
|
||||||
|
ms_error-uuid = get_uuid( ).
|
||||||
|
CATCH cx_root ##CATCH_ALL.
|
||||||
|
ENDTRY.
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD get_abap_2_json.
|
||||||
|
|
||||||
|
IF check_is_boolean( val ).
|
||||||
|
result = COND #( WHEN val = abap_true THEN `true` ELSE `false` ).
|
||||||
|
ELSE.
|
||||||
|
result = |"{ escape( val = val format = cl_abap_format=>e_json_string ) }"|.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD check_is_boolean.
|
||||||
|
|
||||||
|
TRY.
|
||||||
|
DATA(lo_ele) = CAST cl_abap_elemdescr( cl_abap_elemdescr=>describe_by_data( val ) ).
|
||||||
|
CASE lo_ele->get_relative_name( ).
|
||||||
|
WHEN `ABAP_BOOL` OR `ABAP_BOOLEAN` OR `XSDBOOLEAN`.
|
||||||
|
result = abap_true.
|
||||||
|
ENDCASE.
|
||||||
|
CATCH cx_root.
|
||||||
|
ENDTRY.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD get_json_boolean.
|
||||||
|
|
||||||
|
IF check_is_boolean( val ).
|
||||||
|
result = COND #( WHEN val = abap_true THEN `true` ELSE `false` ).
|
||||||
|
ELSE.
|
||||||
|
result = val.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD get_timestampl.
|
||||||
|
|
||||||
|
GET TIME STAMP FIELD result.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD get_user_tech.
|
||||||
|
|
||||||
|
result = sy-uname.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD get_uuid.
|
||||||
|
TRY.
|
||||||
|
|
||||||
|
DATA uuid TYPE c LENGTH 32.
|
||||||
|
|
||||||
|
TRY.
|
||||||
|
CALL METHOD (`CL_SYSTEM_UUID`)=>if_system_uuid_static~create_uuid_c32
|
||||||
|
RECEIVING
|
||||||
|
uuid = uuid.
|
||||||
|
|
||||||
|
CATCH cx_sy_dyn_call_illegal_class.
|
||||||
|
|
||||||
|
DATA(lv_fm) = `GUID_CREATE`.
|
||||||
|
CALL FUNCTION lv_fm
|
||||||
|
IMPORTING
|
||||||
|
ev_guid_32 = uuid.
|
||||||
|
|
||||||
|
ENDTRY.
|
||||||
|
|
||||||
|
result = uuid.
|
||||||
|
|
||||||
|
CATCH cx_root.
|
||||||
|
ASSERT 1 = 0.
|
||||||
|
ENDTRY.
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD get_uuid_session.
|
||||||
|
|
||||||
|
mv_counter = mv_counter + 1.
|
||||||
|
result = get_trim_upper( mv_counter ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD get_header_val.
|
||||||
|
|
||||||
|
result = z2ui5_cl_http_handler=>client-t_header[ name = v ]-value.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD get_param_val.
|
||||||
|
|
||||||
|
DATA(lt_param) = VALUE z2ui5_if_client=>ty_t_name_value( LET tab = z2ui5_cl_http_handler=>client-t_param IN FOR row IN tab
|
||||||
|
( name = to_upper( row-name ) value = to_upper( row-value ) ) ).
|
||||||
|
TRY.
|
||||||
|
result = lt_param[ name = get_trim_upper( v ) ]-value.
|
||||||
|
CATCH cx_root.
|
||||||
|
ENDTRY.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD get_t_attri_by_ref.
|
||||||
|
|
||||||
|
DATA(lt_attri) = CAST cl_abap_classdescr( cl_abap_objectdescr=>describe_by_object_ref( io_app ) )->attributes.
|
||||||
|
|
||||||
|
DELETE lt_attri WHERE visibility <> cl_abap_classdescr=>public.
|
||||||
|
|
||||||
|
LOOP AT lt_attri INTO DATA(ls_attri)
|
||||||
|
WHERE type_kind = cl_abap_classdescr=>typekind_struct2
|
||||||
|
OR type_kind = cl_abap_classdescr=>typekind_struct1.
|
||||||
|
|
||||||
|
DELETE lt_attri INDEX sy-tabix.
|
||||||
|
|
||||||
|
INSERT LINES OF _get_t_attri(
|
||||||
|
io_app = io_app
|
||||||
|
iv_attri = ls_attri-name ) INTO TABLE lt_attri.
|
||||||
|
|
||||||
|
ENDLOOP.
|
||||||
|
|
||||||
|
LOOP AT lt_attri INTO ls_attri.
|
||||||
|
|
||||||
|
DATA(ls_attri2) = VALUE ty_attri( ).
|
||||||
|
ls_attri2 = CORRESPONDING #( ls_attri ).
|
||||||
|
|
||||||
|
FIELD-SYMBOLS <any> TYPE any.
|
||||||
|
UNASSIGN <any>.
|
||||||
|
DATA(lv_assign) = `IO_APP->` && ls_attri-name.
|
||||||
|
ASSIGN (lv_assign) TO <any>.
|
||||||
|
DATA(lo_descr) = cl_abap_datadescr=>describe_by_data( <any> ).
|
||||||
|
CASE lo_descr->kind.
|
||||||
|
WHEN lo_descr->kind_elem.
|
||||||
|
ls_attri2-type = CAST cl_abap_elemdescr( lo_descr )->get_relative_name( ).
|
||||||
|
ENDCASE.
|
||||||
|
|
||||||
|
APPEND ls_attri2 TO result.
|
||||||
|
ENDLOOP.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD _get_t_attri.
|
||||||
|
|
||||||
|
CONSTANTS c_prefix TYPE string VALUE `IO_APP->`.
|
||||||
|
FIELD-SYMBOLS <attribute> TYPE any.
|
||||||
|
|
||||||
|
DATA(lv_name) = c_prefix && to_upper( iv_attri ).
|
||||||
|
ASSIGN (lv_name) TO <attribute>.
|
||||||
|
raise( when = xsdbool( sy-subrc <> 0 ) ).
|
||||||
|
|
||||||
|
DATA(lo_type) = cl_abap_structdescr=>describe_by_data( <attribute> ).
|
||||||
|
DATA(lo_struct) = CAST cl_abap_structdescr( lo_type ).
|
||||||
|
|
||||||
|
LOOP AT lo_struct->get_components( ) REFERENCE INTO DATA(lr_comp).
|
||||||
|
|
||||||
|
DATA(lv_element) = iv_attri && `-` && lr_comp->name.
|
||||||
|
|
||||||
|
IF lr_comp->as_include = abap_true.
|
||||||
|
INSERT LINES OF _get_t_attri( io_app = io_app
|
||||||
|
iv_attri = lv_element ) INTO TABLE result.
|
||||||
|
|
||||||
|
ELSE.
|
||||||
|
INSERT VALUE #( name = lv_element
|
||||||
|
type_kind = lr_comp->type->type_kind ) INTO TABLE result.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDLOOP.
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD trans_any_2_json.
|
||||||
|
|
||||||
|
result = /ui2/cl_json=>serialize( any ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD trans_data_2_xml.
|
||||||
|
|
||||||
|
" FIELD-SYMBOLS <object> TYPE any.
|
||||||
|
" ASSIGN object->* TO <object>.
|
||||||
|
" raise( when = xsdbool( sy-subrc <> 0 ) ).
|
||||||
|
|
||||||
|
CALL TRANSFORMATION id
|
||||||
|
SOURCE data = data
|
||||||
|
RESULT XML result
|
||||||
|
OPTIONS data_refs = `heap-or-create`.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD trans_ref_tab_2_tab.
|
||||||
|
|
||||||
|
TYPES ty_t_ref TYPE STANDARD TABLE OF REF TO data.
|
||||||
|
|
||||||
|
FIELD-SYMBOLS <lt_from> TYPE ty_t_ref.
|
||||||
|
ASSIGN ir_tab_from->* TO <lt_from>.
|
||||||
|
raise( when = xsdbool( sy-subrc <> 0 ) ).
|
||||||
|
|
||||||
|
CLEAR t_result.
|
||||||
|
|
||||||
|
DATA(lo_tab) = CAST cl_abap_tabledescr( cl_abap_datadescr=>describe_by_data( t_result ) ).
|
||||||
|
DATA(lo_struc) = CAST cl_abap_structdescr( lo_tab->get_table_line_type( ) ).
|
||||||
|
DATA(lt_components) = lo_struc->get_components( ).
|
||||||
|
|
||||||
|
LOOP AT <lt_from> INTO DATA(lr_from).
|
||||||
|
|
||||||
|
DATA lr_row TYPE REF TO data.
|
||||||
|
CREATE DATA lr_row LIKE LINE OF t_result.
|
||||||
|
ASSIGN lr_row->* TO FIELD-SYMBOL(<row>).
|
||||||
|
|
||||||
|
ASSIGN lr_from->* TO FIELD-SYMBOL(<row_ui5>).
|
||||||
|
raise( when = xsdbool( sy-subrc <> 0 ) ).
|
||||||
|
|
||||||
|
LOOP AT lt_components INTO DATA(ls_comp).
|
||||||
|
|
||||||
|
FIELD-SYMBOLS <comp> TYPE data.
|
||||||
|
ASSIGN COMPONENT ls_comp-name OF STRUCTURE <row> TO <comp>.
|
||||||
|
IF sy-subrc <> 0.
|
||||||
|
EXIT.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
FIELD-SYMBOLS <comp_ui5> TYPE data.
|
||||||
|
ASSIGN COMPONENT ls_comp-name OF STRUCTURE <row_ui5> TO <comp_ui5>.
|
||||||
|
IF sy-subrc <> 0.
|
||||||
|
EXIT.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ASSIGN <comp_ui5>->* TO FIELD-SYMBOL(<ls_data_ui5>).
|
||||||
|
IF sy-subrc = 0.
|
||||||
|
<comp> = <ls_data_ui5>.
|
||||||
|
ENDIF.
|
||||||
|
ENDLOOP.
|
||||||
|
|
||||||
|
INSERT <row> INTO TABLE t_result.
|
||||||
|
ENDLOOP.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD trans_xml_2_object.
|
||||||
|
|
||||||
|
CALL TRANSFORMATION id
|
||||||
|
SOURCE XML xml
|
||||||
|
RESULT data = data.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD get_text.
|
||||||
|
|
||||||
|
IF ms_error-x_root IS NOT INITIAL.
|
||||||
|
result = ms_error-x_root->get_text( ).
|
||||||
|
DATA(error) = abap_true.
|
||||||
|
ELSEIF ms_error-s_msg-message IS NOT INITIAL.
|
||||||
|
result = ms_error-s_msg-message.
|
||||||
|
error = abap_true.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
IF error = abap_true AND result IS INITIAL.
|
||||||
|
result = `unknown error`.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD raise.
|
||||||
|
|
||||||
|
IF when = abap_false.
|
||||||
|
RETURN.
|
||||||
|
ENDIF.
|
||||||
|
RAISE EXCEPTION TYPE z2ui5_lcl_utility EXPORTING val = v.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
ENDCLASS.
|
16
src/00/z2ui5_cl_app_demo_53.clas.xml
Normal file
16
src/00/z2ui5_cl_app_demo_53.clas.xml
Normal file
|
@ -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_APP_DEMO_53</CLSNAME>
|
||||||
|
<LANGU>E</LANGU>
|
||||||
|
<DESCRIPT>list report - filter</DESCRIPT>
|
||||||
|
<STATE>1</STATE>
|
||||||
|
<CLSCCINCL>X</CLSCCINCL>
|
||||||
|
<FIXPT>X</FIXPT>
|
||||||
|
<UNICODE>X</UNICODE>
|
||||||
|
</VSEOCLASS>
|
||||||
|
</asx:values>
|
||||||
|
</asx:abap>
|
||||||
|
</abapGit>
|
151
src/00/z2ui5_cl_app_demo_54.clas.abap
Normal file
151
src/00/z2ui5_cl_app_demo_54.clas.abap
Normal file
|
@ -0,0 +1,151 @@
|
||||||
|
CLASS z2ui5_cl_app_demo_54 DEFINITION PUBLIC.
|
||||||
|
|
||||||
|
PUBLIC SECTION.
|
||||||
|
|
||||||
|
INTERFACES z2ui5_if_app.
|
||||||
|
|
||||||
|
TYPES:
|
||||||
|
BEGIN OF ty_row,
|
||||||
|
count TYPE i,
|
||||||
|
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 check_initialized TYPE abap_bool.
|
||||||
|
METHODS refresh_data.
|
||||||
|
|
||||||
|
data next type z2ui5_if_client=>ty_s_next.
|
||||||
|
|
||||||
|
DATA mv_check_popover TYPE abap_bool.
|
||||||
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
CLASS z2ui5_cl_app_demo_54 IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD refresh_data.
|
||||||
|
|
||||||
|
DO 100 TIMES.
|
||||||
|
DATA(ls_row) = VALUE ty_row( count = sy-index value = 'red'
|
||||||
|
info = COND #( WHEN sy-index < 50 THEN 'completed' ELSE 'uncompleted' )
|
||||||
|
descr = 'this is a description' checkbox = abap_true ).
|
||||||
|
INSERT ls_row INTO TABLE t_tab.
|
||||||
|
ENDDO.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD z2ui5_if_app~main.
|
||||||
|
|
||||||
|
IF check_initialized = abap_false.
|
||||||
|
check_initialized = abap_true.
|
||||||
|
refresh_data( ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
clear next.
|
||||||
|
|
||||||
|
CASE client->get( )-event.
|
||||||
|
|
||||||
|
WHEN `POPOVER_DETAIL`.
|
||||||
|
DATA(lv_id) = client->get( )-event_data.
|
||||||
|
mv_check_popover = abap_true.
|
||||||
|
next-popover_open_by_id = lv_id.
|
||||||
|
|
||||||
|
WHEN 'BUTTON_POST'.
|
||||||
|
client->popup_message_box( 'button post was pressed' ).
|
||||||
|
WHEN 'BACK'.
|
||||||
|
client->nav_app_leave( client->get_app( client->get( )-id_prev_app_stack ) ).
|
||||||
|
|
||||||
|
ENDCASE.
|
||||||
|
|
||||||
|
IF mv_check_popover = abap_false.
|
||||||
|
|
||||||
|
DATA(page) = z2ui5_cl_xml_view=>factory( )->shell(
|
||||||
|
)->page(
|
||||||
|
title = 'abap2UI5 - Scroll Container with Table and Toolbar'
|
||||||
|
navbuttonpress = client->_event( 'BACK' )
|
||||||
|
shownavbutton = abap_true
|
||||||
|
)->header_content(
|
||||||
|
)->link(
|
||||||
|
text = 'Source_Code' target = '_blank'
|
||||||
|
href = z2ui5_cl_xml_view=>hlp_get_source_code_url( app = me get = client->get( ) )
|
||||||
|
)->get_parent( ).
|
||||||
|
|
||||||
|
DATA(tab) = page->scroll_container( height = '70%' vertical = abap_true
|
||||||
|
)->table(
|
||||||
|
growing = abap_true
|
||||||
|
growingthreshold = '20'
|
||||||
|
growingscrolltoload = abap_true
|
||||||
|
items = client->_bind_one( t_tab )
|
||||||
|
sticky = 'ColumnHeaders,HeaderToolbar' ).
|
||||||
|
|
||||||
|
tab->columns(
|
||||||
|
)->column(
|
||||||
|
)->text( 'Color' )->get_parent(
|
||||||
|
)->column(
|
||||||
|
)->text( 'Info' )->get_parent(
|
||||||
|
)->column(
|
||||||
|
)->text( 'Description' )->get_parent(
|
||||||
|
)->column(
|
||||||
|
)->text( 'Checkbox' )->get_parent(
|
||||||
|
)->column(
|
||||||
|
)->text( 'Counter' ).
|
||||||
|
|
||||||
|
tab->items( )->column_list_item( )->cells(
|
||||||
|
)->link( text = '{VALUE}' press = client->_event( val = `POPOVER_DETAIL` data = `${$source>/id}` hold_view = abap_true )
|
||||||
|
)->text( '{INFO}'
|
||||||
|
)->text( '{DESCR}'
|
||||||
|
)->checkbox( selected = '{CHECKBOX}' enabled = abap_false
|
||||||
|
)->text( '{COUNT}' ).
|
||||||
|
|
||||||
|
next-xml_main = page->get_root( )->xml_get( ).
|
||||||
|
|
||||||
|
else.
|
||||||
|
|
||||||
|
mv_check_popover = abap_false.
|
||||||
|
|
||||||
|
DATA(lo_popup) = z2ui5_cl_xml_view=>factory_popup( ).
|
||||||
|
|
||||||
|
lo_popup->popover( placement = `Bottom` title = 'abap2UI5 - Layout' contentwidth = `50%`
|
||||||
|
" )->input( description = `Name` value = client->_bind( mv_layout_name )
|
||||||
|
)->button( text = `Save` press = client->_event( `BUTTON_SAVE_LAYOUT` )
|
||||||
|
* )->table(
|
||||||
|
* mode = 'SingleSelectLeft'
|
||||||
|
* items = client->_bind( mt_db_layout )
|
||||||
|
* )->columns(
|
||||||
|
* )->column( )->text( 'Name' )->get_parent(
|
||||||
|
* )->column( )->text( 'User' )->get_parent(
|
||||||
|
* )->column( )->text( 'Default' )->get_parent(
|
||||||
|
* " )->column( )->text( 'Description' )->get_parent(
|
||||||
|
* )->get_parent(
|
||||||
|
* )->items( )->column_list_item( selected = '{SELKZ}'
|
||||||
|
* )->cells(
|
||||||
|
* " )->checkbox( '{SELKZ}'
|
||||||
|
* )->text( '{NAME}'
|
||||||
|
* )->text( '{USER}'
|
||||||
|
* )->text( '{DEFAULT}'
|
||||||
|
* " )->text( '{DESCR}'
|
||||||
|
)->footer( )->overflow_toolbar(
|
||||||
|
)->toolbar_spacer(
|
||||||
|
)->button(
|
||||||
|
text = 'load'
|
||||||
|
press = client->_event( 'POPUP_LAYOUT_LOAD' )
|
||||||
|
type = 'Emphasized'
|
||||||
|
)->button(
|
||||||
|
text = 'close'
|
||||||
|
press = client->_event( 'POPUP_LAYOUT_CONTINUE' )
|
||||||
|
type = 'Emphasized' ).
|
||||||
|
|
||||||
|
next-xml_popup = lo_popup->get_root( )->xml_get( ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
|
||||||
|
client->set_next( next ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
ENDCLASS.
|
16
src/00/z2ui5_cl_app_demo_54.clas.xml
Normal file
16
src/00/z2ui5_cl_app_demo_54.clas.xml
Normal file
|
@ -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_APP_DEMO_54</CLSNAME>
|
||||||
|
<LANGU>E</LANGU>
|
||||||
|
<DESCRIPT>list report - navigation</DESCRIPT>
|
||||||
|
<STATE>1</STATE>
|
||||||
|
<CLSCCINCL>X</CLSCCINCL>
|
||||||
|
<FIXPT>X</FIXPT>
|
||||||
|
<UNICODE>X</UNICODE>
|
||||||
|
</VSEOCLASS>
|
||||||
|
</asx:values>
|
||||||
|
</asx:abap>
|
||||||
|
</abapGit>
|
151
src/00/z2ui5_cl_app_demo_55.clas.abap
Normal file
151
src/00/z2ui5_cl_app_demo_55.clas.abap
Normal file
|
@ -0,0 +1,151 @@
|
||||||
|
CLASS z2ui5_cl_app_demo_55 DEFINITION PUBLIC.
|
||||||
|
|
||||||
|
PUBLIC SECTION.
|
||||||
|
|
||||||
|
INTERFACES z2ui5_if_app.
|
||||||
|
|
||||||
|
TYPES:
|
||||||
|
BEGIN OF ty_row,
|
||||||
|
count TYPE i,
|
||||||
|
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 check_initialized TYPE abap_bool.
|
||||||
|
METHODS refresh_data.
|
||||||
|
|
||||||
|
data next type z2ui5_if_client=>ty_s_next.
|
||||||
|
|
||||||
|
DATA mv_check_popover TYPE abap_bool.
|
||||||
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
CLASS z2ui5_cl_app_demo_55 IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD refresh_data.
|
||||||
|
|
||||||
|
DO 100 TIMES.
|
||||||
|
DATA(ls_row) = VALUE ty_row( count = sy-index value = 'red'
|
||||||
|
info = COND #( WHEN sy-index < 50 THEN 'completed' ELSE 'uncompleted' )
|
||||||
|
descr = 'this is a description' checkbox = abap_true ).
|
||||||
|
INSERT ls_row INTO TABLE t_tab.
|
||||||
|
ENDDO.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD z2ui5_if_app~main.
|
||||||
|
|
||||||
|
IF check_initialized = abap_false.
|
||||||
|
check_initialized = abap_true.
|
||||||
|
refresh_data( ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
clear next.
|
||||||
|
|
||||||
|
CASE client->get( )-event.
|
||||||
|
|
||||||
|
WHEN `POPOVER_DETAIL`.
|
||||||
|
DATA(lv_id) = client->get( )-event_data.
|
||||||
|
mv_check_popover = abap_true.
|
||||||
|
next-popover_open_by_id = lv_id.
|
||||||
|
|
||||||
|
WHEN 'BUTTON_POST'.
|
||||||
|
client->popup_message_box( 'button post was pressed' ).
|
||||||
|
WHEN 'BACK'.
|
||||||
|
client->nav_app_leave( client->get_app( client->get( )-id_prev_app_stack ) ).
|
||||||
|
|
||||||
|
ENDCASE.
|
||||||
|
|
||||||
|
IF mv_check_popover = abap_false.
|
||||||
|
|
||||||
|
DATA(page) = z2ui5_cl_xml_view=>factory( )->shell(
|
||||||
|
)->page(
|
||||||
|
title = 'abap2UI5 - Scroll Container with Table and Toolbar'
|
||||||
|
navbuttonpress = client->_event( 'BACK' )
|
||||||
|
shownavbutton = abap_true
|
||||||
|
)->header_content(
|
||||||
|
)->link(
|
||||||
|
text = 'Source_Code' target = '_blank'
|
||||||
|
href = z2ui5_cl_xml_view=>hlp_get_source_code_url( app = me get = client->get( ) )
|
||||||
|
)->get_parent( ).
|
||||||
|
|
||||||
|
DATA(tab) = page->scroll_container( height = '70%' vertical = abap_true
|
||||||
|
)->table(
|
||||||
|
growing = abap_true
|
||||||
|
growingthreshold = '20'
|
||||||
|
growingscrolltoload = abap_true
|
||||||
|
items = client->_bind_one( t_tab )
|
||||||
|
sticky = 'ColumnHeaders,HeaderToolbar' ).
|
||||||
|
|
||||||
|
tab->columns(
|
||||||
|
)->column(
|
||||||
|
)->text( 'Color' )->get_parent(
|
||||||
|
)->column(
|
||||||
|
)->text( 'Info' )->get_parent(
|
||||||
|
)->column(
|
||||||
|
)->text( 'Description' )->get_parent(
|
||||||
|
)->column(
|
||||||
|
)->text( 'Checkbox' )->get_parent(
|
||||||
|
)->column(
|
||||||
|
)->text( 'Counter' ).
|
||||||
|
|
||||||
|
tab->items( )->column_list_item( )->cells(
|
||||||
|
)->link( text = '{VALUE}' press = client->_event( val = `POPOVER_DETAIL` data = `${$source>/id}` hold_view = abap_true )
|
||||||
|
)->text( '{INFO}'
|
||||||
|
)->text( '{DESCR}'
|
||||||
|
)->checkbox( selected = '{CHECKBOX}' enabled = abap_false
|
||||||
|
)->text( '{COUNT}' ).
|
||||||
|
|
||||||
|
next-xml_main = page->get_root( )->xml_get( ).
|
||||||
|
|
||||||
|
else.
|
||||||
|
|
||||||
|
mv_check_popover = abap_false.
|
||||||
|
|
||||||
|
DATA(lo_popup) = z2ui5_cl_xml_view=>factory_popup( ).
|
||||||
|
|
||||||
|
lo_popup->popover( placement = `Bottom` title = 'abap2UI5 - Layout' contentwidth = `50%`
|
||||||
|
" )->input( description = `Name` value = client->_bind( mv_layout_name )
|
||||||
|
)->button( text = `Save` press = client->_event( `BUTTON_SAVE_LAYOUT` )
|
||||||
|
* )->table(
|
||||||
|
* mode = 'SingleSelectLeft'
|
||||||
|
* items = client->_bind( mt_db_layout )
|
||||||
|
* )->columns(
|
||||||
|
* )->column( )->text( 'Name' )->get_parent(
|
||||||
|
* )->column( )->text( 'User' )->get_parent(
|
||||||
|
* )->column( )->text( 'Default' )->get_parent(
|
||||||
|
* " )->column( )->text( 'Description' )->get_parent(
|
||||||
|
* )->get_parent(
|
||||||
|
* )->items( )->column_list_item( selected = '{SELKZ}'
|
||||||
|
* )->cells(
|
||||||
|
* " )->checkbox( '{SELKZ}'
|
||||||
|
* )->text( '{NAME}'
|
||||||
|
* )->text( '{USER}'
|
||||||
|
* )->text( '{DEFAULT}'
|
||||||
|
* " )->text( '{DESCR}'
|
||||||
|
)->footer( )->overflow_toolbar(
|
||||||
|
)->toolbar_spacer(
|
||||||
|
)->button(
|
||||||
|
text = 'load'
|
||||||
|
press = client->_event( 'POPUP_LAYOUT_LOAD' )
|
||||||
|
type = 'Emphasized'
|
||||||
|
)->button(
|
||||||
|
text = 'close'
|
||||||
|
press = client->_event( 'POPUP_LAYOUT_CONTINUE' )
|
||||||
|
type = 'Emphasized' ).
|
||||||
|
|
||||||
|
next-xml_popup = lo_popup->get_root( )->xml_get( ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
|
||||||
|
client->set_next( next ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
ENDCLASS.
|
16
src/00/z2ui5_cl_app_demo_55.clas.xml
Normal file
16
src/00/z2ui5_cl_app_demo_55.clas.xml
Normal file
|
@ -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_APP_DEMO_55</CLSNAME>
|
||||||
|
<LANGU>E</LANGU>
|
||||||
|
<DESCRIPT>tab - layout</DESCRIPT>
|
||||||
|
<STATE>1</STATE>
|
||||||
|
<CLSCCINCL>X</CLSCCINCL>
|
||||||
|
<FIXPT>X</FIXPT>
|
||||||
|
<UNICODE>X</UNICODE>
|
||||||
|
</VSEOCLASS>
|
||||||
|
</asx:values>
|
||||||
|
</asx:abap>
|
||||||
|
</abapGit>
|
File diff suppressed because it is too large
Load Diff
|
@ -22,7 +22,6 @@ CLASS z2ui5_cl_http_handler DEFINITION
|
||||||
t_config TYPE z2ui5_if_client=>ty_t_name_value OPTIONAL
|
t_config TYPE z2ui5_if_client=>ty_t_name_value OPTIONAL
|
||||||
content_security_policy TYPE clike OPTIONAL
|
content_security_policy TYPE clike OPTIONAL
|
||||||
check_logging TYPE abap_bool DEFAULT abap_false
|
check_logging TYPE abap_bool DEFAULT abap_false
|
||||||
title TYPE string DEFAULT `abap2UI5`
|
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(r_result) TYPE string.
|
VALUE(r_result) TYPE string.
|
||||||
|
|
||||||
|
@ -37,12 +36,12 @@ ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CLASS z2ui5_cl_http_handler IMPLEMENTATION.
|
CLASS Z2UI5_CL_HTTP_HANDLER IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
METHOD http_post.
|
METHOD http_post.
|
||||||
|
|
||||||
DATA(lo_handler) = z2ui5_lcl_fw_handler=>request_begin( ).
|
DATA(lo_handler) = z2ui5_lcl_fw_handler=>request_begin( ).
|
||||||
|
|
||||||
DO.
|
DO.
|
||||||
TRY.
|
TRY.
|
||||||
|
@ -94,13 +93,6 @@ CLASS z2ui5_cl_http_handler IMPLEMENTATION.
|
||||||
ELSE.
|
ELSE.
|
||||||
lv_sec_policy = content_security_policy.
|
lv_sec_policy = content_security_policy.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
DATA(lv_url) = z2ui5_lcl_utility=>get_header_val( '~path' ).
|
|
||||||
DATA(lv_app) = z2ui5_lcl_utility=>get_param_val( 'app' ).
|
|
||||||
IF lv_app IS INITIAL.
|
|
||||||
DATA(lv_path) = z2ui5_lcl_utility=>get_header_val( '~path_info' ).
|
|
||||||
SPLIT lv_path AT `/` INTO lv_app DATA(lv_dummy).
|
|
||||||
ENDIF.
|
|
||||||
z2ui5_lcl_fw_db=>cleanup( ).
|
z2ui5_lcl_fw_db=>cleanup( ).
|
||||||
|
|
||||||
r_result = `<html>` && |\n| &&
|
r_result = `<html>` && |\n| &&
|
||||||
|
@ -109,7 +101,7 @@ CLASS z2ui5_cl_http_handler IMPLEMENTATION.
|
||||||
` <meta charset="UTF-8">` && |\n| &&
|
` <meta charset="UTF-8">` && |\n| &&
|
||||||
` <meta name="viewport" content="width=device-width, initial-scale=1.0">` && |\n| &&
|
` <meta name="viewport" content="width=device-width, initial-scale=1.0">` && |\n| &&
|
||||||
` <meta http-equiv="X-UA-Compatible" content="IE=edge">` && |\n| &&
|
` <meta http-equiv="X-UA-Compatible" content="IE=edge">` && |\n| &&
|
||||||
` <title>` && title && `</title>` && |\n| &&
|
` <title>abap2UI5</title>` && |\n| &&
|
||||||
` <style>` && |\n| &&
|
` <style>` && |\n| &&
|
||||||
` html, body, body > div, #container, #container-uiarea {` && |\n| &&
|
` html, body, body > div, #container, #container-uiarea {` && |\n| &&
|
||||||
` height: 100%;` && |\n| &&
|
` height: 100%;` && |\n| &&
|
||||||
|
@ -131,195 +123,199 @@ CLASS z2ui5_cl_http_handler IMPLEMENTATION.
|
||||||
` sap.ui.getCore().attachInit(function () {` && |\n| &&
|
` sap.ui.getCore().attachInit(function () {` && |\n| &&
|
||||||
` "use strict";` && |\n| &&
|
` "use strict";` && |\n| &&
|
||||||
|\n| &&
|
|\n| &&
|
||||||
` sap.ui.controller("z2ui5_controller", {` && |\n| &&
|
` sap.ui.controller("z2ui5_controller", {` && |\n| &&
|
||||||
|\n| &&
|
|\n| &&
|
||||||
` onAfterRendering: function () {` && |\n| &&
|
` onAfterRendering: function () {` && |\n| &&
|
||||||
` if(sap.z2ui5.oResponse.title != ""){ document.title = sap.z2ui5.oResponse.title; }` && |\n| &&
|
` sap.z2ui5.onAfter();` && |\n| &&
|
||||||
` if(sap.z2ui5.oResponse.path != ""){ window.history.replaceState( "" , "" , window.location.origin + sap.z2ui5.oResponse.path + window.location.search ); }` && |\n| &&
|
` },` && |\n| &&
|
||||||
` var oView = this.getView();` && |\n| &&
|
|\n| &&
|
||||||
` try {` && |\n| &&
|
` onEventFrontend: function (vAction) {` && |\n| &&
|
||||||
` if (sap.z2ui5.oResponse.oCursor) {` && |\n| &&
|
|\n| &&
|
||||||
` var ofocus = oView.byId(sap.z2ui5.oResponse.oCursor.ID).getFocusInfo();` && |\n| &&
|
` if (vAction == 'POPUP_CLOSE') {` && |\n| &&
|
||||||
` ofocus.cursorPos = parseInt( sap.z2ui5.oResponse.oCursor.CURSORPOS );` && |\n| &&
|
` if (sap.z2ui5.oResponse.oViewPopup.close) {` && |\n| &&
|
||||||
` ofocus.selectionStart = parseInt( sap.z2ui5.oResponse.oCursor.SELECTIONSTART );` && |\n| &&
|
` sap.z2ui5.oResponse.oViewPopup.close();` && |\n| &&
|
||||||
` ofocus.selectionEnd = parseInt( sap.z2ui5.oResponse.oCursor.SELECTIONEND );` && |\n| &&
|
` }` && |\n| &&
|
||||||
|
` sap.z2ui5.oResponse.oViewPopup.destroy();` && |\n| &&
|
||||||
|
` delete sap.z2ui5.oResponse.oViewPopup;` && |\n| &&
|
||||||
|
` delete sap.z2ui5.oResponse.oSystem.VIEW_POPUP;` && |\n| &&
|
||||||
|
` }` && |\n| &&
|
||||||
|
` },` && |\n| &&
|
||||||
|
|\n| &&
|
||||||
|
` onEvent: function (oEvent, vData, isHoldView) {` && |\n| &&
|
||||||
|
|\n| &&
|
||||||
|
` if (!window.navigator.onLine) {` && |\n| &&
|
||||||
|
` sap.m.MessageBox.alert('No internet connection! Please reconnect to the server and try again.');` && |\n| &&
|
||||||
|
` return;` && |\n| &&
|
||||||
|
` }` && |\n| &&
|
||||||
|
|\n| &&
|
||||||
|
` sap.ui.core.BusyIndicator.show();` && |\n| &&
|
||||||
|
` this.oBody = {};` && |\n| &&
|
||||||
|
|\n| &&
|
||||||
|
` if (sap.z2ui5.oResponse.oViewPopup) {` && |\n| &&
|
||||||
|
` this.oBody.oUpdate = sap.z2ui5.oResponse.oViewPopup.getModel().oData.oUpdate;` && |\n| &&
|
||||||
|
` if (sap.z2ui5.oResponse.oViewPopup.close) {` && |\n| &&
|
||||||
|
` sap.z2ui5.oResponse.oViewPopup.close();` && |\n| &&
|
||||||
|
` }` && |\n| &&
|
||||||
|
` sap.z2ui5.oResponse.oViewPopup.destroy();` && |\n| &&
|
||||||
|
` } else {` && |\n| &&
|
||||||
|
` this.oBody.oUpdate = sap.z2ui5.oView.getModel().oData.oUpdate;` && |\n| &&
|
||||||
|
` }` && |\n| &&
|
||||||
|
|\n| &&
|
||||||
|
` if (sap.z2ui5.oResponse.PARAMS.T_SCROLL) {` && |\n| &&
|
||||||
|
` this.oBody.oScroll = sap.z2ui5.oResponse.PARAMS.T_SCROLL;` && |\n| &&
|
||||||
|
` this.oBody.oScroll.forEach(item => {` && |\n| &&
|
||||||
|
` 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| &&
|
||||||
` oView.byId(sap.z2ui5.oResponse.oCursor.ID).applyFocusInfo(ofocus);` && |\n| &&
|
` });` && |\n| &&
|
||||||
` } catch (error) { };` && |\n| &&
|
` }` && |\n| &&
|
||||||
` try {` && |\n| &&
|
` this.oBody.ID = sap.z2ui5.oResponse.ID;` && |\n| &&
|
||||||
` } catch (error) { };` && |\n| &&
|
` this.oBody.oEvent = oEvent;` && |\n| &&
|
||||||
` if (sap.z2ui5.oResponse.oScroll) {` && |\n| &&
|
` this.oBody.oEvent.vData = vData;` && |\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| &&
|
|
||||||
` ` && |\n| &&
|
|
||||||
` sap.ui.core.Fragment.load({` && |\n| &&
|
|
||||||
` definition: sap.z2ui5.oResponse.vViewPopup,` && |\n| &&
|
|
||||||
` controller: this,` && |\n| &&
|
|
||||||
` }).then(function (oFragment) {` && |\n| &&
|
|
||||||
` oFragment.setModel(new sap.ui.model.json.JSONModel(sap.z2ui5.oResponse.oViewModel))` && |\n| &&
|
|
||||||
` this.getView().addDependent(oFragment);` && |\n| &&
|
|
||||||
` if (!sap.z2ui5.oResponse.OPENBY) { oFragment.open(); } else {` && |\n| &&
|
|
||||||
` oFragment.openBy(this.getView().byId(sap.z2ui5.oResponse.OPENBY))` && |\n| &&
|
|
||||||
` }` && |\n| &&
|
|
||||||
` sap.z2ui5.oResponse.oViewPopup = oFragment;` && |\n| &&
|
|
||||||
` sap.ui.core.BusyIndicator.hide();` && |\n| &&
|
|
||||||
` }.bind(this));` && |\n| &&
|
|
||||||
` }` && |\n| &&
|
|
||||||
` if (sap.z2ui5.oResponse.oTimer){ ` && |\n| &&
|
|
||||||
` var oEvent = { 'EVENT' : 'BUTTON_CHECK', 'METHOD' : 'UPDATE' };` && |\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 ); } }, parseInt( sap.z2ui5.oResponse.oTimer.INTERVAL_MS ) , oEvent );` && |\n| &&
|
|
||||||
` }` && |\n| &&
|
|
||||||
` sap.ui.core.BusyIndicator.hide();` && |\n| &&
|
|
||||||
` },` && |\n| &&
|
|
||||||
|\n| &&
|
|\n| &&
|
||||||
` onEventFrontend: function (vAction) {` && |\n| &&
|
` if (sap.z2ui5.checkLogActive) {` && |\n| &&
|
||||||
|
` console.log('Request Object:');` && |\n| &&
|
||||||
|
` console.log(this.oBody);` && |\n| &&
|
||||||
|
` }` && |\n| &&
|
||||||
|
` sap.z2ui5.oResponseOld = sap.z2ui5.oResponse;` && |\n| &&
|
||||||
|
` sap.z2ui5.oResponse = {};` && |\n| &&
|
||||||
|
` sap.z2ui5.oBody = this.oBody;` && |\n| &&
|
||||||
|
` sap.z2ui5.Roundtrip(isHoldView);` && |\n| &&
|
||||||
|
` },` && |\n| &&
|
||||||
|
` Roundtrip: function (isHoldView) {` && |\n| &&
|
||||||
|
` sap.z2ui5.checkTimerActive = false;` && |\n| &&
|
||||||
|
` if (sap.z2ui5.oView && !isHoldView) {` && |\n| &&
|
||||||
|
` sap.z2ui5.oView.destroy();` && |\n| &&
|
||||||
|
` }` && |\n| &&
|
||||||
|
` var xhr = new XMLHttpRequest();` && |\n| &&
|
||||||
|
` var url = "/sap/bc/http/sap/y2ui5_http_handler/";` && |\n| &&
|
||||||
|
` xhr.open("POST", url, true);` && |\n| &&
|
||||||
|
` // xhr.open("POST", window.location.pathname, true);` && |\n| &&
|
||||||
|
` xhr.onload = function (that) {` && |\n| &&
|
||||||
|\n| &&
|
|\n| &&
|
||||||
` if (vAction == 'POPUP_CLOSE') {` && |\n| &&
|
` if (that.target.status !== 200) {` && |\n| &&
|
||||||
` if (sap.z2ui5.oResponse.oViewPopup.close) {` && |\n| &&
|
` document.write(that.target.response);` && |\n| &&
|
||||||
` sap.z2ui5.oResponse.oViewPopup.close();` && |\n| &&
|
` return;` && |\n| &&
|
||||||
|
` }` && |\n| &&
|
||||||
|
` sap.z2ui5.oResponse = JSON.parse(that.target.response);` && |\n| &&
|
||||||
|
|\n| &&
|
||||||
|
` if (sap.z2ui5.checkLogActive) {` && |\n| &&
|
||||||
|
` console.log('Response Object:');` && |\n| &&
|
||||||
|
` console.log(sap.z2ui5.oResponse);` && |\n| &&
|
||||||
|
` if (sap.z2ui5.oResponse.PARAMS.XML_VIEW !== '' ) {` && |\n| &&
|
||||||
|
` console.log('UI5-XML-View:');` && |\n| &&
|
||||||
|
` console.log(sap.z2ui5.oResponse.PARAMS.XML_VIEW);` && |\n| &&
|
||||||
` }` && |\n| &&
|
` }` && |\n| &&
|
||||||
` sap.z2ui5.oResponse.oViewPopup.destroy();` && |\n| &&
|
` if (sap.z2ui5.oResponse.PARAMS.XML_POPUP !== '' ) {` && |\n| &&
|
||||||
` delete sap.z2ui5.oResponse.oViewPopup;` && |\n| &&
|
` console.log('UI5-XML-Popup:');` && |\n| &&
|
||||||
` delete sap.z2ui5.oResponse.oSystem.VIEW_POPUP;` && |\n| &&
|
` console.log(sap.z2ui5.oResponse.PARAMS.XML_POPUP);` && |\n| &&
|
||||||
|
` }` && |\n| &&
|
||||||
|
` }` && |\n| &&
|
||||||
|
` if (sap.z2ui5.oResponse.S_MSG.CONTROL !== '' ) {` && |\n| &&
|
||||||
|
` sap.m[sap.z2ui5.oResponse.S_MSG.CONTROL][sap.z2ui5.oResponse.S_MSG.TYPE](sap.z2ui5.oResponse.S_MSG.TEXT);` && |\n| &&
|
||||||
` }` && |\n| &&
|
` }` && |\n| &&
|
||||||
|\n| &&
|
|\n| &&
|
||||||
` },` && |\n| &&
|
` if (!sap.z2ui5.oResponse.PARAMS.XML_MAIN) {` && |\n| &&
|
||||||
|\n| &&
|
` sap.z2ui5.onAfter();` && |\n| &&
|
||||||
` onEvent: function (oEvent, vData) {` && |\n| &&
|
|
||||||
|\n| &&
|
|
||||||
` if (!window.navigator.onLine) {` && |\n| &&
|
|
||||||
` sap.m.MessageBox.alert('No internet connection! Please reconnect to the server and try again.');` && |\n| &&
|
|
||||||
` return;` && |\n| &&
|
` return;` && |\n| &&
|
||||||
` }` && |\n| &&
|
` }` && |\n| &&
|
||||||
|\n| &&
|
|\n| &&
|
||||||
` sap.ui.core.BusyIndicator.show();` && |\n| &&
|
` var oModel = new sap.ui.model.json.JSONModel(sap.z2ui5.oResponse.OVIEWMODEL.oViewModel);` && |\n| &&
|
||||||
` this.oBody = {};` && |\n| &&
|
` var oView = new sap.ui.core.mvc.XMLView.create({` && |\n| &&
|
||||||
|
` definition: sap.z2ui5.oResponse.PARAMS.XML_MAIN,` && |\n| &&
|
||||||
|
` }).then(oView => {` && |\n| &&
|
||||||
|
` oView.setModel(oModel);` && |\n| &&
|
||||||
|
` oView.placeAt("content");` && |\n| &&
|
||||||
|
` sap.z2ui5.oView = oView;` && |\n| &&
|
||||||
|
` });` && |\n| &&
|
||||||
|
` }.bind(this);` && |\n| &&
|
||||||
|
` xhr.send(JSON.stringify(sap.z2ui5.oBody));` && |\n| &&
|
||||||
|
` },` && |\n| &&
|
||||||
|
` });` && |\n| &&
|
||||||
|\n| &&
|
|\n| &&
|
||||||
` if (sap.z2ui5.oResponse.oViewPopup) {` && |\n| &&
|
` if (!sap.z2ui5) {` && |\n| &&
|
||||||
` this.oBody.oUpdate = sap.z2ui5.oResponse.oViewPopup.getModel().oData.oUpdate;` && |\n| &&
|
` sap.z2ui5 = {};` && |\n| &&
|
||||||
` if (sap.z2ui5.oResponse.oViewPopup.close) {` && |\n| &&
|
` }` && |\n| &&
|
||||||
` sap.z2ui5.oResponse.oViewPopup.close();` && |\n| &&
|
|
||||||
` }` && |\n| &&
|
|
||||||
` sap.z2ui5.oResponse.oViewPopup.destroy();` && |\n| &&
|
|
||||||
` } else {` && |\n| &&
|
|
||||||
` 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| &&
|
|
||||||
|\n| &&
|
|
||||||
` if (sap.z2ui5.checkLogActive) {` && |\n| &&
|
|
||||||
` console.log('Request Object:');` && |\n| &&
|
|
||||||
` console.log(this.oBody);` && |\n| &&
|
|
||||||
` }` && |\n| &&
|
|
||||||
|\n| &&
|
|
||||||
` sap.z2ui5.oResponseOld = sap.z2ui5.oResponse;` && |\n| &&
|
|
||||||
` sap.z2ui5.oResponse = {};` && |\n| &&
|
|
||||||
` sap.z2ui5.oBody = this.oBody;` && |\n| &&
|
|
||||||
` sap.z2ui5.Roundtrip();` && |\n| &&
|
|
||||||
` sap.z2ui5.oView.destroy();` && |\n| &&
|
|
||||||
` },` && |\n| &&
|
|
||||||
|\n| &&
|
|
||||||
` Roundtrip: function () {` && |\n| &&
|
|
||||||
|\n| &&
|
|
||||||
` sap.z2ui5.checkTimerActive = false;` && |\n| &&
|
|
||||||
` if (sap.z2ui5.oView){ sap.z2ui5.oView.destroy( ); }` && |\n| &&
|
|
||||||
` var xhr = new XMLHttpRequest();` && |\n| &&
|
|
||||||
` if ( sap.startApp ) { var app = sap.startApp; }else` && |\n| &&
|
|
||||||
` { ` && |\n| &&
|
|
||||||
` app = ' ` && lv_app && `'; ` && |\n| &&
|
|
||||||
` }` && |\n| &&
|
|
||||||
` var url = '` && lv_url && `?app=' + app;` && |\n| &&
|
|
||||||
` xhr.open("POST", url, true);` && |\n| &&
|
|
||||||
` xhr.onload = function (that) {` && |\n| &&
|
|
||||||
|\n| &&
|
|
||||||
` if (that.target.status !== 200) {` && |\n| &&
|
|
||||||
` document.write(that.target.response);` && |\n| &&
|
|
||||||
` return;` && |\n| &&
|
|
||||||
` }` && |\n| &&
|
|
||||||
` sap.z2ui5.oResponse = JSON.parse(that.target.response);` && |\n| &&
|
|
||||||
|\n| &&
|
|
||||||
` if (sap.z2ui5.checkLogActive) {` && |\n| &&
|
|
||||||
` console.log('Response Object:');` && |\n| &&
|
|
||||||
` console.log(sap.z2ui5.oResponse);` && |\n| &&
|
|
||||||
` if (sap.z2ui5.oResponse.vView) {` && |\n| &&
|
|
||||||
` console.log('UI5-XML-View:');` && |\n| &&
|
|
||||||
` console.log(sap.z2ui5.oResponse.vView);` && |\n| &&
|
|
||||||
` }` && |\n| &&
|
|
||||||
` if (sap.z2ui5.oResponse.vViewPopup) {` && |\n| &&
|
|
||||||
` console.log('UI5-XML-Popup:');` && |\n| &&
|
|
||||||
` console.log(sap.z2ui5.oResponse.vViewPopup);` && |\n| &&
|
|
||||||
` }` && |\n| &&
|
|
||||||
` }` && |\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| &&
|
|
||||||
` var oView = new sap.ui.core.mvc.XMLView.create({` && |\n| &&
|
|
||||||
` definition: sap.z2ui5.oResponse.vView,` && |\n| &&
|
|
||||||
` }).then(oView => {` && |\n| &&
|
|
||||||
` oView.setModel(oModel);` && |\n| &&
|
|
||||||
` oView.placeAt("content");` && |\n| &&
|
|
||||||
` this.oView = oView;` && |\n| &&
|
|
||||||
` sap.z2ui5.oView = oView;` && |\n| &&
|
|
||||||
` });` && |\n| &&
|
|
||||||
` } else if (sap.z2ui5.oResponse.SET_PREV_VIEW == true) {` && |\n| &&
|
|
||||||
` var oModel = new sap.ui.model.json.JSONModel(sap.z2ui5.oResponseOld.oViewModel);` && |\n| &&
|
|
||||||
` var oView = new sap.ui.core.mvc.XMLView.create({` && |\n| &&
|
|
||||||
` definition: sap.z2ui5.oResponseOld.vView` && |\n| &&
|
|
||||||
` }).then(oView => {` && |\n| &&
|
|
||||||
` oView.setModel(oModel);` && |\n| &&
|
|
||||||
` oView.placeAt("content");` && |\n| &&
|
|
||||||
` this.oView = oView;` && |\n| &&
|
|
||||||
` sap.z2ui5.oView = oView;` && |\n| &&
|
|
||||||
` });` && |\n| &&
|
|
||||||
` }` && |\n| &&
|
|
||||||
|
|
||||||
` }.bind(this);` && |\n| &&
|
|
||||||
` xhr.send(JSON.stringify(sap.z2ui5.oBody));` && |\n| &&
|
|
||||||
` },` && |\n| &&
|
|
||||||
` });` && |\n| &&
|
|
||||||
|\n| &&
|
|
||||||
` if (!sap.z2ui5) { sap.z2ui5 = {}; };` && |\n| &&
|
|
||||||
` sap.z2ui5.checkLogActive = ` && z2ui5_lcl_utility=>get_json_boolean( check_logging ) && `;` && |\n| &&
|
|
||||||
` var xml = '<mvc:View controllerName="z2ui5_controller" xmlns:mvc="sap.ui.core.mvc" />';` && |\n| &&
|
` var xml = '<mvc:View controllerName="z2ui5_controller" xmlns:mvc="sap.ui.core.mvc" />';` && |\n| &&
|
||||||
` if (xml == '') { xml = '<mvc:View controllerName="z2ui5_controller" xmlns:mvc="sap.ui.core.mvc" />' };` && |\n| &&
|
` if (xml == '') {` && |\n| &&
|
||||||
|\n| &&
|
` xml = '<mvc:View controllerName="z2ui5_controller" xmlns:mvc="sap.ui.core.mvc" />'` && |\n| &&
|
||||||
|
` }` && |\n| &&
|
||||||
` jQuery.sap.require("sap.ui.core.Fragment");` && |\n| &&
|
` jQuery.sap.require("sap.ui.core.Fragment");` && |\n| &&
|
||||||
` jQuery.sap.require("sap.m.MessageToast");` && |\n| &&
|
` jQuery.sap.require("sap.m.MessageToast");` && |\n| &&
|
||||||
` jQuery.sap.require("sap.m.MessageBox");` && |\n| &&
|
` jQuery.sap.require("sap.m.MessageBox");` && |\n| &&
|
||||||
` var oView = sap.ui.xmlview({viewContent:xml});` && |\n| &&
|
` jQuery.sap.require("sap.ui.model.json.JSONModel");` && |\n| &&
|
||||||
|
` var oView = sap.ui.xmlview({ viewContent: xml });` && |\n| &&
|
||||||
` sap.z2ui5.Roundtrip = oView.getController().Roundtrip;` && |\n| &&
|
` sap.z2ui5.Roundtrip = oView.getController().Roundtrip;` && |\n| &&
|
||||||
|
` sap.z2ui5.oController = oView.getController();` && |\n| &&
|
||||||
` sap.z2ui5.pathname = window.location.pathname;` && |\n| &&
|
` sap.z2ui5.pathname = window.location.pathname;` && |\n| &&
|
||||||
` sap.z2ui5.Roundtrip();` && |\n| &&
|
` sap.z2ui5.Roundtrip(false);` && |\n| &&
|
||||||
|\n| &&
|
` sap.z2ui5.onAfter = () => {` && |\n| &&
|
||||||
|
` if (sap.z2ui5.oResponse.PARAMS.TITLE != "") {` && |\n| &&
|
||||||
|
` document.title = sap.z2ui5.oResponse.PARAMS.TITLE;` && |\n| &&
|
||||||
|
` }` && |\n| &&
|
||||||
|
` if (sap.z2ui5.oResponse.PARAMS.PATH != "") {` && |\n| &&
|
||||||
|
` window.history.replaceState("", "", window.location.origin + sap.z2ui5.oResponse.PARAMS.PATH + window.location.search);` && |\n| &&
|
||||||
|
` }` && |\n| &&
|
||||||
|
` var oView = sap.z2ui5.oView;` && |\n| &&
|
||||||
|
` try {` && |\n| &&
|
||||||
|
` if (sap.z2ui5.oResponse.PARAMS.S_CURSOR.ID !== '') {` && |\n| &&
|
||||||
|
` var ofocus = oView.byId(sap.z2ui5.oResponse.PARAMS.S_CURSOR.ID).getFocusInfo();` && |\n| &&
|
||||||
|
` ofocus.cursorPos = parseInt(sap.z2ui5.oResponse.PARAMS.S_CURSOR.CURSORPOS);` && |\n| &&
|
||||||
|
` ofocus.selectionStart = parseInt(sap.z2ui5.oResponse.PARAMS.S_CURSOR.SELECTIONSTART);` && |\n| &&
|
||||||
|
` ofocus.selectionEnd = parseInt(sap.z2ui5.oResponse.PARAMS.S_CURSOR.SELECTIONEND);` && |\n| &&
|
||||||
|
` }` && |\n| &&
|
||||||
|
` oView.byId(sap.z2ui5.oResponse.PARAMS.S_CURSOR.ID).applyFocusInfo(ofocus);` && |\n| &&
|
||||||
|
` } catch (error) { }` && |\n| &&
|
||||||
|
` ; try { } catch (error) { }` && |\n| &&
|
||||||
|
` ; if (sap.z2ui5.oResponse.PARAMS.T_SCROLL) {` && |\n| &&
|
||||||
|
` sap.z2ui5.oResponse.PARAMS.T_SCROLL.forEach(item => {` && |\n| &&
|
||||||
|
` try {` && |\n| &&
|
||||||
|
` 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| &&
|
||||||
|
` }` && |\n| &&
|
||||||
|
` if (sap.z2ui5.oResponse.PARAMS.XML_POPUP) {` && |\n| &&
|
||||||
|
` sap.ui.core.Fragment.load({` && |\n| &&
|
||||||
|
` definition: sap.z2ui5.oResponse.PARAMS.XML_POPUP,` && |\n| &&
|
||||||
|
` controller: sap.z2ui5.oController,` && |\n| &&
|
||||||
|
` }).then(function (oFragment) {` && |\n| &&
|
||||||
|
` oFragment.setModel(new sap.ui.model.json.JSONModel(sap.z2ui5.oResponse.OVIEWMODEL.oViewModel))` && |\n| &&
|
||||||
|
` sap.z2ui5.oView.addDependent(oFragment);` && |\n| &&
|
||||||
|
` if (sap.z2ui5.oResponse.PARAMS.POPOVER_OPEN_BY_ID == '' ) {` && |\n| &&
|
||||||
|
` oFragment.open();` && |\n| &&
|
||||||
|
` } else {` && |\n| &&
|
||||||
|
` var oControl = sap.ui.getCore().byId(sap.z2ui5.oResponse.PARAMS.POPOVER_OPEN_BY_ID);` && |\n| &&
|
||||||
|
` if (oControl === undefined) {` && |\n| &&
|
||||||
|
` oControl = sap.z2ui5.oView.byId(sap.z2ui5.oResponse.PARAMS.POPOVER_OPEN_BY_ID);` && |\n| &&
|
||||||
|
` }` && |\n| &&
|
||||||
|
` oFragment.openBy(oControl);` && |\n| &&
|
||||||
|
` }` && |\n| &&
|
||||||
|
` sap.z2ui5.oResponse.oViewPopup = oFragment;` && |\n| &&
|
||||||
|
` sap.ui.core.BusyIndicator.hide();` && |\n| &&
|
||||||
|
` }` && |\n| &&
|
||||||
|
` .bind(this));` && |\n| &&
|
||||||
|
` }` && |\n| &&
|
||||||
|
` if (sap.z2ui5.oResponse.PARAMS.S_TIMER.INTERVAL_MS !== '' ) {` && |\n| &&
|
||||||
|
` var oEvent = { 'EVENT': 'BUTTON_CHECK', 'METHOD': 'UPDATE' };` && |\n| &&
|
||||||
|
` oEvent.EVENT = sap.z2ui5.oResponse.PARAMS.S_TIMER.EVENT_FINISHED;` && |\n| &&
|
||||||
|
` sap.z2ui5.checkTimerActive = true;` && |\n| &&
|
||||||
|
` setTimeout(() => {` && |\n| &&
|
||||||
|
` if (sap.z2ui5.checkTimerActive) {` && |\n| &&
|
||||||
|
` sap.z2ui5.oView.getController().onEvent(oEvent);` && |\n| &&
|
||||||
|
` }` && |\n| &&
|
||||||
|
` }, parseInt(sap.z2ui5.oResponse.PARAMS.S_TIMER.INTERVAL_MS), oEvent);` && |\n| &&
|
||||||
|
` }` && |\n| &&
|
||||||
|
` sap.ui.core.BusyIndicator.hide();` && |\n| &&
|
||||||
|
` };` &&
|
||||||
|
|
||||||
|
` sap.z2ui5.checkLogActive = ` && z2ui5_lcl_utility=>get_json_boolean( check_logging ) && `;` && |\n| &&
|
||||||
` });` && |\n| &&
|
` });` && |\n| &&
|
||||||
`</script>` && |\n| &&
|
`</script>` && |\n| &&
|
||||||
`</html>`.
|
`</html>`.
|
||||||
|
|
|
@ -1056,7 +1056,8 @@ CLASS z2ui5_lcl_fw_app IMPLEMENTATION.
|
||||||
DATA(lv_url) = z2ui5_cl_http_handler=>client-t_header[ name = `referer` ]-value.
|
DATA(lv_url) = z2ui5_cl_http_handler=>client-t_header[ name = `referer` ]-value.
|
||||||
SPLIT lv_url AT '?' INTO lv_url DATA(lv_dummy).
|
SPLIT lv_url AT '?' INTO lv_url DATA(lv_dummy).
|
||||||
|
|
||||||
DATA(lv_link) = lv_url && `?sap-client=` && sy-mandt && `&app=` && ms_home-classname.
|
SHIFT lv_url RIGHT DELETING TRAILING `/`.
|
||||||
|
DATA(lv_link) = lv_url && `/` && ms_home-classname.
|
||||||
|
|
||||||
DATA(lv_xml_main) = `<mvc:View controllerName="z2ui5_controller" displayBlock="true" height="100%" xmlns:core="sap.ui.core" xmlns:l="sap.ui.layout" xmlns:html="http://www.w3.org/1999/xhtml" xmlns:f="sap.ui.layout.form" xmlns:mvc="sap.ui.core.mvc` &&
|
DATA(lv_xml_main) = `<mvc:View controllerName="z2ui5_controller" displayBlock="true" height="100%" xmlns:core="sap.ui.core" xmlns:l="sap.ui.layout" xmlns:html="http://www.w3.org/1999/xhtml" xmlns:f="sap.ui.layout.form" xmlns:mvc="sap.ui.core.mvc` &&
|
||||||
`" xmlns:editor="sap.ui.codeeditor" xmlns:ui="sap.ui.table" xmlns="sap.m" xmlns:uxap="sap.uxap" xmlns:mchart="sap.suite.ui.microchart" xmlns:z2ui5="z2ui5" xmlns:webc="sap.ui.webc.main" xmlns:text="sap.ui.richtexteditor" > <Shell> <Page ` && |\n| &&
|
`" xmlns:editor="sap.ui.codeeditor" xmlns:ui="sap.ui.table" xmlns="sap.m" xmlns:uxap="sap.uxap" xmlns:mchart="sap.suite.ui.microchart" xmlns:z2ui5="z2ui5" xmlns:webc="sap.ui.webc.main" xmlns:text="sap.ui.richtexteditor" > <Shell> <Page ` && |\n| &&
|
||||||
|
@ -1247,7 +1248,8 @@ CLASS z2ui5_lcl_fw_handler IMPLEMENTATION.
|
||||||
mo_body = z2ui5_lcl_utility_tree_json=>factory( z2ui5_cl_http_handler=>client-body ).
|
mo_body = z2ui5_lcl_utility_tree_json=>factory( z2ui5_cl_http_handler=>client-body ).
|
||||||
|
|
||||||
TRY.
|
TRY.
|
||||||
DATA(lv_id_prev) = mo_body->get_attribute( `OSYSTEM` )->get_attribute( `ID` )->get_val( ).
|
* DATA(lv_id_prev) = mo_body->get_attribute( `OSYSTEM` )->get_attribute( `ID` )->get_val( ).
|
||||||
|
DATA(lv_id_prev) = mo_body->get_attribute( `ID` )->get_val( ).
|
||||||
CATCH cx_root.
|
CATCH cx_root.
|
||||||
result = set_app_start( ).
|
result = set_app_start( ).
|
||||||
RETURN.
|
RETURN.
|
||||||
|
@ -1260,54 +1262,6 @@ CLASS z2ui5_lcl_fw_handler IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD request_end.
|
METHOD request_end.
|
||||||
|
|
||||||
DATA(lo_ui5_model) = z2ui5_lcl_utility_tree_json=>factory( ).
|
|
||||||
|
|
||||||
IF ms_next-s_set-check_set_prev_view = abap_false OR ms_next-s_set-xml_popup IS NOT INITIAL.
|
|
||||||
lo_ui5_model->add_attribute_instance( request_end_model( ) ).
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
IF ms_next-s_set-xml_main IS NOT INITIAL AND ms_next-s_set-check_set_prev_view = abap_false.
|
|
||||||
lo_ui5_model->add_attribute( n = `vView` v = ms_next-s_set-xml_main ).
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
IF ms_next-s_set-xml_popup IS NOT INITIAL.
|
|
||||||
lo_ui5_model->add_attribute( n = `vViewPopup` v = ms_next-s_set-xml_popup ).
|
|
||||||
IF ms_next-s_set-popup_open_by_id IS NOT INITIAL.
|
|
||||||
lo_ui5_model->add_attribute( n = `OPENBY` v = ms_next-s_set-popup_open_by_id ).
|
|
||||||
ENDIF.
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
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 ).
|
|
||||||
|
|
||||||
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.
|
|
||||||
|
|
||||||
IF ms_next-s_set-s_cursor_pos IS NOT INITIAL.
|
|
||||||
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_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.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
IF ms_next-s_set-path IS NOT INITIAL.
|
IF ms_next-s_set-path IS NOT INITIAL.
|
||||||
DATA(lv_path) = z2ui5_lcl_utility=>get_header_val( '~path' ).
|
DATA(lv_path) = z2ui5_lcl_utility=>get_header_val( '~path' ).
|
||||||
DATA(lv_path_info) = z2ui5_lcl_utility=>get_header_val( '~path_info' ).
|
DATA(lv_path_info) = z2ui5_lcl_utility=>get_header_val( '~path_info' ).
|
||||||
|
@ -1317,10 +1271,12 @@ CLASS z2ui5_lcl_fw_handler IMPLEMENTATION.
|
||||||
ms_next-s_set-path = lv_path && ms_next-s_set-path.
|
ms_next-s_set-path = lv_path && ms_next-s_set-path.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
lo_ui5_model->add_attribute( n = `path` v = ms_next-s_set-path ).
|
DATA(lo_resp) = z2ui5_lcl_utility_tree_json=>factory( ).
|
||||||
lo_ui5_model->add_attribute( n = `title` v = ms_next-s_set-title ).
|
lo_resp->add_attribute( n = `PARAMS` v = z2ui5_lcl_utility=>trans_any_2_json( ms_next-s_set ) apos_active = abap_false ).
|
||||||
|
lo_resp->add_attribute( n = `S_MSG` v = z2ui5_lcl_utility=>trans_any_2_json( ms_next-s_msg ) apos_active = abap_false ).
|
||||||
result = lo_ui5_model->get_root( )->stringify( ).
|
lo_resp->add_attribute( n = `ID` v = ms_db-id ).
|
||||||
|
lo_resp->add_attribute_object( `OVIEWMODEL` )->add_attribute_instance( request_end_model( ) ).
|
||||||
|
result = lo_resp->get_root( )->stringify( ).
|
||||||
z2ui5_lcl_fw_db=>create( id = ms_db-id db = ms_db ).
|
z2ui5_lcl_fw_db=>create( id = ms_db-id db = ms_db ).
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
@ -1339,63 +1295,68 @@ CLASS z2ui5_lcl_fw_handler IMPLEMENTATION.
|
||||||
|
|
||||||
DATA(lo_app) = CAST object( result->ms_db-o_app ) ##NEEDED.
|
DATA(lo_app) = CAST object( result->ms_db-o_app ) ##NEEDED.
|
||||||
|
|
||||||
DATA(lo_model) = mo_body->get_attribute( `OUPDATE` ).
|
TRY.
|
||||||
|
|
||||||
LOOP AT result->ms_db-t_attri REFERENCE INTO DATA(lr_attri)
|
DATA(lo_model) = mo_body->get_attribute( `OUPDATE` ).
|
||||||
WHERE bind_type = cs_bind_type-two_way.
|
|
||||||
|
|
||||||
FIELD-SYMBOLS <attribute> TYPE any.
|
LOOP AT result->ms_db-t_attri REFERENCE INTO DATA(lr_attri)
|
||||||
DATA(lv_name) = c_prefix && to_upper( lr_attri->name ).
|
WHERE bind_type = cs_bind_type-two_way.
|
||||||
ASSIGN (lv_name) TO <attribute>.
|
|
||||||
z2ui5_lcl_utility=>raise( when = xsdbool( sy-subrc <> 0 ) ).
|
|
||||||
|
|
||||||
IF lr_attri->gen_kind IS NOT INITIAL.
|
FIELD-SYMBOLS <attribute> TYPE any.
|
||||||
|
DATA(lv_name) = c_prefix && to_upper( lr_attri->name ).
|
||||||
|
ASSIGN (lv_name) TO <attribute>.
|
||||||
|
z2ui5_lcl_utility=>raise( when = xsdbool( sy-subrc <> 0 ) ).
|
||||||
|
|
||||||
CASE lr_attri->gen_kind.
|
IF lr_attri->gen_kind IS NOT INITIAL.
|
||||||
WHEN cl_abap_datadescr=>kind_elem.
|
|
||||||
CREATE DATA <attribute> TYPE (lr_attri->gen_type).
|
|
||||||
ASSIGN <attribute>->* TO <attribute>.
|
|
||||||
WHEN cl_abap_datadescr=>kind_table.
|
|
||||||
DATA lr_data TYPE REF TO data.
|
|
||||||
CREATE DATA lr_data TYPE (lr_attri->gen_type).
|
|
||||||
ASSIGN lr_data->* TO FIELD-SYMBOL(<field>).
|
|
||||||
CREATE DATA <attribute> LIKE STANDARD TABLE OF <field>.
|
|
||||||
ASSIGN <attribute>->* TO <attribute>.
|
|
||||||
ENDCASE.
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
CASE lr_attri->type_kind.
|
CASE lr_attri->gen_kind.
|
||||||
|
WHEN cl_abap_datadescr=>kind_elem.
|
||||||
WHEN `h`.
|
CREATE DATA <attribute> TYPE (lr_attri->gen_type).
|
||||||
z2ui5_lcl_utility=>trans_ref_tab_2_tab(
|
ASSIGN <attribute>->* TO <attribute>.
|
||||||
EXPORTING ir_tab_from = lo_model->get_attribute( lr_attri->name )->mr_actual
|
WHEN cl_abap_datadescr=>kind_table.
|
||||||
IMPORTING t_result = <attribute> ).
|
DATA lr_data TYPE REF TO data.
|
||||||
|
CREATE DATA lr_data TYPE (lr_attri->gen_type).
|
||||||
WHEN OTHERS.
|
ASSIGN lr_data->* TO FIELD-SYMBOL(<field>).
|
||||||
|
CREATE DATA <attribute> LIKE STANDARD TABLE OF <field>.
|
||||||
DATA(lo_attri) = lo_model->get_attribute( lr_attri->name ).
|
ASSIGN <attribute>->* TO <attribute>.
|
||||||
FIELD-SYMBOLS <val> TYPE any.
|
ENDCASE.
|
||||||
ASSIGN lo_attri->mr_actual->* TO <val>.
|
ENDIF.
|
||||||
|
|
||||||
CASE lr_attri->type_kind.
|
CASE lr_attri->type_kind.
|
||||||
WHEN 'D' OR 'T'.
|
|
||||||
/ui2/cl_json=>deserialize(
|
WHEN `h`.
|
||||||
EXPORTING
|
z2ui5_lcl_utility=>trans_ref_tab_2_tab(
|
||||||
json = `"` && <val> && `"`
|
EXPORTING ir_tab_from = lo_model->get_attribute( lr_attri->name )->mr_actual
|
||||||
CHANGING
|
IMPORTING t_result = <attribute> ).
|
||||||
data = <attribute> ).
|
|
||||||
" WHEN 'C'.
|
|
||||||
" CASE lr_attri->type.
|
|
||||||
" WHEN `ABAP_BOOL` OR `ABAP_BOOLEAN` OR `XSDBOOLEAN`.
|
|
||||||
" <attribute> = xsdbool( <val> = `true` ).
|
|
||||||
" WHEN OTHERS.
|
|
||||||
" <attribute> = <val>.
|
|
||||||
"° ENDCASE.
|
|
||||||
WHEN OTHERS.
|
WHEN OTHERS.
|
||||||
<attribute> = <val>.
|
|
||||||
|
DATA(lo_attri) = lo_model->get_attribute( lr_attri->name ).
|
||||||
|
FIELD-SYMBOLS <val> TYPE any.
|
||||||
|
ASSIGN lo_attri->mr_actual->* TO <val>.
|
||||||
|
|
||||||
|
CASE lr_attri->type_kind.
|
||||||
|
WHEN 'D' OR 'T'.
|
||||||
|
/ui2/cl_json=>deserialize(
|
||||||
|
EXPORTING
|
||||||
|
json = `"` && <val> && `"`
|
||||||
|
CHANGING
|
||||||
|
data = <attribute> ).
|
||||||
|
" WHEN 'C'.
|
||||||
|
" CASE lr_attri->type.
|
||||||
|
" WHEN `ABAP_BOOL` OR `ABAP_BOOLEAN` OR `XSDBOOLEAN`.
|
||||||
|
" <attribute> = xsdbool( <val> = `true` ).
|
||||||
|
" WHEN OTHERS.
|
||||||
|
" <attribute> = <val>.
|
||||||
|
"° ENDCASE.
|
||||||
|
WHEN OTHERS.
|
||||||
|
<attribute> = <val>.
|
||||||
|
ENDCASE.
|
||||||
ENDCASE.
|
ENDCASE.
|
||||||
ENDCASE.
|
ENDLOOP.
|
||||||
ENDLOOP.
|
|
||||||
|
CATCH cx_root.
|
||||||
|
ENDTRY.
|
||||||
|
|
||||||
TRY.
|
TRY.
|
||||||
result->ms_actual-event = mo_body->get_attribute( `OEVENT` )->get_attribute( `EVENT` )->get_val( ).
|
result->ms_actual-event = mo_body->get_attribute( `OEVENT` )->get_attribute( `EVENT` )->get_val( ).
|
||||||
|
@ -1419,17 +1380,22 @@ CLASS z2ui5_lcl_fw_handler IMPLEMENTATION.
|
||||||
result = NEW #( ).
|
result = NEW #( ).
|
||||||
result->ms_db-id = z2ui5_lcl_utility=>get_uuid( ).
|
result->ms_db-id = z2ui5_lcl_utility=>get_uuid( ).
|
||||||
|
|
||||||
TRY.
|
DATA(lv_classname) = ``.
|
||||||
DATA(lv_classname) = z2ui5_lcl_utility=>get_trim_upper( z2ui5_cl_http_handler=>client-t_param[ name = `app` ]-value ).
|
DATA(lv_path) = z2ui5_lcl_utility=>get_header_val( '~path' ).
|
||||||
z2ui5_lcl_utility=>raise( when = xsdbool( lv_classname = `` ) ).
|
DATA(lv_origin) = z2ui5_lcl_utility=>get_header_val( 'origin' ).
|
||||||
CATCH cx_root.
|
DATA(lv_referer) = z2ui5_lcl_utility=>get_header_val( 'referer' ).
|
||||||
result = result->set_app_system( ).
|
REPLACE lv_origin IN lv_referer WITH ``.
|
||||||
RETURN.
|
REPLACE lv_path IN lv_referer WITH ``.
|
||||||
ENDTRY.
|
SPLIT lv_referer AT `/` INTO lv_classname DATA(lv_dummy).
|
||||||
|
IF lv_classname IS NOT INITIAL AND lv_classname(1) <> `?`.
|
||||||
|
lv_classname = to_upper( lv_classname ).
|
||||||
|
ELSE.
|
||||||
|
result = result->set_app_system( ).
|
||||||
|
RETURN.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
TRY.
|
TRY.
|
||||||
CREATE OBJECT result->ms_db-o_app TYPE (lv_classname).
|
CREATE OBJECT result->ms_db-o_app TYPE (lv_classname).
|
||||||
|
|
||||||
CATCH cx_root.
|
CATCH cx_root.
|
||||||
result = result->set_app_system( error_text = `class with name ` && lv_classname && ` not found` ).
|
result = result->set_app_system( error_text = `class with name ` && lv_classname && ` not found` ).
|
||||||
RETURN.
|
RETURN.
|
||||||
|
@ -1745,12 +1711,20 @@ CLASS z2ui5_lcl_fw_client IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD z2ui5_if_client~_event.
|
METHOD z2ui5_if_client~_event.
|
||||||
|
|
||||||
|
" IF data IS INITIAL.
|
||||||
|
" result = `onEvent( { 'EVENT' : '` && val && `', 'METHOD' : 'UPDATE' } )`.
|
||||||
|
" ELSE.
|
||||||
|
|
||||||
IF data IS INITIAL.
|
IF data IS INITIAL.
|
||||||
result = `onEvent( { 'EVENT' : '` && val && `', 'METHOD' : 'UPDATE' } )`.
|
DATA(lv_data) = `''`.
|
||||||
ELSE.
|
ELSE.
|
||||||
result = `onEvent( { 'EVENT' : '` && val && `', 'METHOD' : 'UPDATE' } ,` && data && `)`.
|
lv_data = data.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
|
result = `onEvent( { 'EVENT' : '` && val && `', 'METHOD' : 'UPDATE' } , ` && lv_data && ` , `
|
||||||
|
&& z2ui5_lcl_utility=>get_json_boolean( hold_view ) && ` )`.
|
||||||
|
" ENDIF.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
METHOD z2ui5_if_client~_event_close_popup.
|
METHOD z2ui5_if_client~_event_close_popup.
|
||||||
|
|
|
@ -371,8 +371,8 @@ CLASS ltcl_unit_02_app_start IMPLEMENTATION.
|
||||||
|
|
||||||
client->set_next( VALUE #(
|
client->set_next( VALUE #(
|
||||||
xml_main = `test`
|
xml_main = `test`
|
||||||
s_cursor_pos = VALUE #( id = 'id_text2' cursorpos = '5' selectionstart = '5' selectionend = '10' )
|
s_cursor = VALUE #( id = 'id_text2' cursorpos = '5' selectionstart = '5' selectionend = '10' )
|
||||||
t_scroll_pos = VALUE #(
|
t_scroll = VALUE #(
|
||||||
( name = 'id_page' value = '99999' )
|
( name = 'id_page' value = '99999' )
|
||||||
( name = 'id_text3' value = '99999' )
|
( name = 'id_text3' value = '99999' )
|
||||||
)
|
)
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
INTERFACE z2ui5_if_app
|
INTERFACE z2ui5_if_app public.
|
||||||
PUBLIC .
|
|
||||||
|
|
||||||
INTERFACES if_serializable_object.
|
INTERFACES if_serializable_object.
|
||||||
|
|
||||||
DATA id TYPE string.
|
DATA id TYPE string.
|
||||||
|
|
|
@ -23,23 +23,22 @@ INTERFACE z2ui5_if_client
|
||||||
|
|
||||||
TYPES:
|
TYPES:
|
||||||
BEGIN OF ty_S_next,
|
BEGIN OF ty_S_next,
|
||||||
xml_main TYPE string,
|
xml_main TYPE string,
|
||||||
xml_popup TYPE string,
|
xml_popup TYPE string,
|
||||||
popup_open_by_id TYPE string,
|
popover_open_by_id TYPE string,
|
||||||
check_set_prev_view TYPE abap_bool,
|
t_scroll TYPE ty_t_name_value,
|
||||||
t_scroll_pos TYPE ty_t_name_value,
|
title TYPE string,
|
||||||
title TYPE string,
|
path TYPE string,
|
||||||
path TYPE string,
|
BEGIN OF s_cursor,
|
||||||
begin OF s_cursor_pos,
|
id TYPE string,
|
||||||
id TYPE string,
|
cursorpos TYPE string,
|
||||||
cursorpos TYPE string,
|
selectionstart TYPE string,
|
||||||
selectionstart TYPE string,
|
selectionend TYPE string,
|
||||||
selectionend TYPE string,
|
END OF s_cursor,
|
||||||
END OF s_cursor_pos,
|
BEGIN OF s_timer,
|
||||||
BEGIN OF s_timer,
|
interval_ms TYPE string,
|
||||||
interval_ms TYPE string,
|
event_finished TYPE string,
|
||||||
event_finished TYPE string,
|
END OF s_timer,
|
||||||
END OF s_timer,
|
|
||||||
END OF ty_s_next.
|
END OF ty_s_next.
|
||||||
|
|
||||||
METHODS set_next
|
METHODS set_next
|
||||||
|
@ -94,6 +93,7 @@ INTERFACE z2ui5_if_client
|
||||||
IMPORTING
|
IMPORTING
|
||||||
val TYPE clike
|
val TYPE clike
|
||||||
data TYPE clike OPTIONAL
|
data TYPE clike OPTIONAL
|
||||||
|
hold_view TYPE abap_bool DEFAULT abap_false
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(result) TYPE string.
|
VALUE(result) TYPE string.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user