mirror of
https://github.com/abap2UI5/abap2UI5.git
synced 2025-04-30 07:16:10 +08:00
add-search-app (#824)
* add-search-app * Update src/02/02/z2ui5_cl_app_search_apps.clas.abap Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com> * update abaplint fixes * update startup app * update * update * update * update * update --------- Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>
This commit is contained in:
parent
fc6952a072
commit
63ff4eed6d
|
@ -42,6 +42,31 @@ CLASS z2ui5_cl_util_func DEFINITION
|
|||
RETURNING
|
||||
VALUE(result) TYPE string.
|
||||
|
||||
CLASS-METHODS db_save
|
||||
IMPORTING
|
||||
uname TYPE clike OPTIONAL
|
||||
handle TYPE clike OPTIONAL
|
||||
handle2 TYPE clike OPTIONAL
|
||||
handle3 TYPE clike OPTIONAL
|
||||
data TYPE any
|
||||
check_commit TYPE abap_bool DEFAULT abap_true
|
||||
RETURNING
|
||||
VALUE(result) TYPE string.
|
||||
|
||||
CLASS-METHODS db_load_by_id
|
||||
IMPORTING
|
||||
id TYPE clike OPTIONAL
|
||||
EXPORTING
|
||||
VALUE(result) TYPE any.
|
||||
|
||||
CLASS-METHODS db_load_by_handle
|
||||
IMPORTING
|
||||
uname TYPE clike OPTIONAL
|
||||
handle TYPE clike OPTIONAL
|
||||
handle2 TYPE clike OPTIONAL
|
||||
handle3 TYPE clike OPTIONAL
|
||||
EXPORTING
|
||||
VALUE(result) TYPE any.
|
||||
|
||||
CLASS-METHODS source_get_method
|
||||
IMPORTING
|
||||
|
@ -1508,4 +1533,70 @@ CLASS z2ui5_cl_util_func IMPLEMENTATION.
|
|||
RAISE EXCEPTION TYPE z2ui5_cx_util_error EXPORTING val = v.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD db_load_by_handle.
|
||||
|
||||
DATA lt_db TYPE STANDARD TABLE OF z2ui5_t_fw_02 WITH EMPTY KEY.
|
||||
|
||||
SELECT data
|
||||
FROM z2ui5_t_fw_02
|
||||
WHERE
|
||||
uname = @uname
|
||||
AND handle = @handle
|
||||
AND handle2 = @handle2
|
||||
AND handle3 = @handle3
|
||||
INTO CORRESPONDING FIELDS OF TABLE @lt_db.
|
||||
|
||||
DATA(ls_db) = lt_db[ 1 ].
|
||||
|
||||
trans_xml_2_any(
|
||||
EXPORTING
|
||||
xml = ls_db-data
|
||||
IMPORTING
|
||||
any = result
|
||||
).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD db_load_by_id.
|
||||
|
||||
DATA lt_db TYPE STANDARD TABLE OF z2ui5_t_fw_02 WITH EMPTY KEY.
|
||||
|
||||
SELECT data
|
||||
FROM z2ui5_t_fw_02
|
||||
WHERE id = @id
|
||||
INTO CORRESPONDING FIELDS OF TABLE @lt_db.
|
||||
|
||||
DATA(ls_db) = lt_db[ 1 ].
|
||||
|
||||
trans_xml_2_any(
|
||||
EXPORTING
|
||||
xml = ls_db-data
|
||||
IMPORTING
|
||||
any = result
|
||||
).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD db_save.
|
||||
|
||||
DATA(ls_db) = VALUE z2ui5_t_fw_02(
|
||||
id = uuid_get_c32( )
|
||||
uname = uname
|
||||
handle = handle
|
||||
handle2 = handle2
|
||||
handle3 = handle3
|
||||
data = trans_xml_by_any( data )
|
||||
).
|
||||
|
||||
MODIFY z2ui5_t_fw_02 FROM @ls_db.
|
||||
|
||||
IF check_commit = abap_true.
|
||||
COMMIT WORK AND WAIT.
|
||||
ENDIF.
|
||||
|
||||
result = ls_db-id.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
|
98
src/01/01/z2ui5_t_fw_02.tabl.xml
Normal file
98
src/01/01/z2ui5_t_fw_02.tabl.xml
Normal file
|
@ -0,0 +1,98 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_TABL" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<DD02V>
|
||||
<TABNAME>Z2UI5_T_FW_02</TABNAME>
|
||||
<DDLANGUAGE>E</DDLANGUAGE>
|
||||
<TABCLASS>TRANSP</TABCLASS>
|
||||
<DDTEXT>abap2UI5 - data storage</DDTEXT>
|
||||
<CONTFLAG>A</CONTFLAG>
|
||||
<EXCLASS>1</EXCLASS>
|
||||
</DD02V>
|
||||
<DD09L>
|
||||
<TABNAME>Z2UI5_T_FW_02</TABNAME>
|
||||
<AS4LOCAL>A</AS4LOCAL>
|
||||
<TABKAT>0</TABKAT>
|
||||
<TABART>APPL0</TABART>
|
||||
<BUFALLOW>N</BUFALLOW>
|
||||
</DD09L>
|
||||
<DD03P_TABLE>
|
||||
<DD03P>
|
||||
<FIELDNAME>MANDT</FIELDNAME>
|
||||
<KEYFLAG>X</KEYFLAG>
|
||||
<ADMINFIELD>0</ADMINFIELD>
|
||||
<INTTYPE>C</INTTYPE>
|
||||
<INTLEN>000006</INTLEN>
|
||||
<NOTNULL>X</NOTNULL>
|
||||
<DATATYPE>CHAR</DATATYPE>
|
||||
<LENG>000003</LENG>
|
||||
<MASK> CHAR</MASK>
|
||||
</DD03P>
|
||||
<DD03P>
|
||||
<FIELDNAME>ID</FIELDNAME>
|
||||
<KEYFLAG>X</KEYFLAG>
|
||||
<ADMINFIELD>0</ADMINFIELD>
|
||||
<INTTYPE>C</INTTYPE>
|
||||
<INTLEN>000064</INTLEN>
|
||||
<NOTNULL>X</NOTNULL>
|
||||
<DATATYPE>CHAR</DATATYPE>
|
||||
<LENG>000032</LENG>
|
||||
<MASK> CHAR</MASK>
|
||||
</DD03P>
|
||||
<DD03P>
|
||||
<FIELDNAME>UNAME</FIELDNAME>
|
||||
<ADMINFIELD>0</ADMINFIELD>
|
||||
<INTTYPE>C</INTTYPE>
|
||||
<INTLEN>000064</INTLEN>
|
||||
<DATATYPE>CHAR</DATATYPE>
|
||||
<LENG>000032</LENG>
|
||||
<MASK> CHAR</MASK>
|
||||
</DD03P>
|
||||
<DD03P>
|
||||
<FIELDNAME>HANDLE</FIELDNAME>
|
||||
<ADMINFIELD>0</ADMINFIELD>
|
||||
<INTTYPE>C</INTTYPE>
|
||||
<INTLEN>000064</INTLEN>
|
||||
<DATATYPE>CHAR</DATATYPE>
|
||||
<LENG>000032</LENG>
|
||||
<MASK> CHAR</MASK>
|
||||
</DD03P>
|
||||
<DD03P>
|
||||
<FIELDNAME>HANDLE2</FIELDNAME>
|
||||
<ADMINFIELD>0</ADMINFIELD>
|
||||
<INTTYPE>C</INTTYPE>
|
||||
<INTLEN>000064</INTLEN>
|
||||
<DATATYPE>CHAR</DATATYPE>
|
||||
<LENG>000032</LENG>
|
||||
<MASK> CHAR</MASK>
|
||||
</DD03P>
|
||||
<DD03P>
|
||||
<FIELDNAME>HANDLE3</FIELDNAME>
|
||||
<ADMINFIELD>0</ADMINFIELD>
|
||||
<INTTYPE>C</INTTYPE>
|
||||
<INTLEN>000064</INTLEN>
|
||||
<DATATYPE>CHAR</DATATYPE>
|
||||
<LENG>000032</LENG>
|
||||
<MASK> CHAR</MASK>
|
||||
</DD03P>
|
||||
<DD03P>
|
||||
<FIELDNAME>DATA</FIELDNAME>
|
||||
<ADMINFIELD>0</ADMINFIELD>
|
||||
<INTTYPE>g</INTTYPE>
|
||||
<INTLEN>000008</INTLEN>
|
||||
<DATATYPE>STRG</DATATYPE>
|
||||
<MASK> STRG</MASK>
|
||||
</DD03P>
|
||||
<DD03P>
|
||||
<FIELDNAME>DATA2</FIELDNAME>
|
||||
<ADMINFIELD>0</ADMINFIELD>
|
||||
<INTTYPE>g</INTTYPE>
|
||||
<INTLEN>000008</INTLEN>
|
||||
<DATATYPE>STRG</DATATYPE>
|
||||
<MASK> STRG</MASK>
|
||||
</DD03P>
|
||||
</DD03P_TABLE>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
|
@ -169,7 +169,8 @@ CLASS Z2UI5_CL_FW_INDEX_HTML IMPLEMENTATION.
|
|||
` }` && |\n| &&
|
||||
` }` && |\n| &&
|
||||
` )` && |\n| &&
|
||||
` }catch(e){ BusyIndicator.hide(); MessageBox.error(e.toLocaleString()); }` && |\n| &&
|
||||
` }catch(e){ BusyIndicator.hide(); sap.z2ui5.isBusy = false; MessageBox.error( e.toLocaleString() , { title : "Unexpected Error Occured - App Terminated" , actions : [ ] , onClose : () => { new sap.m.BusyDialog({ text : "Please Restart t` &&
|
||||
`he App" }).open(); } } ) }` && |\n| &&
|
||||
` },` && |\n| &&
|
||||
|\n| &&
|
||||
` async displayFragment(xml, viewProp, openById) {` && |\n| &&
|
||||
|
|
|
@ -8,7 +8,6 @@
|
|||
<TABCLASS>TRANSP</TABCLASS>
|
||||
<CLIDEP>X</CLIDEP>
|
||||
<DDTEXT>abap2UI5 - drafts</DDTEXT>
|
||||
<MASTERLANG>E</MASTERLANG>
|
||||
<CONTFLAG>A</CONTFLAG>
|
||||
<EXCLASS>1</EXCLASS>
|
||||
</DD02V>
|
||||
|
@ -44,7 +43,6 @@
|
|||
<ADMINFIELD>0</ADMINFIELD>
|
||||
<INTTYPE>C</INTTYPE>
|
||||
<INTLEN>000064</INTLEN>
|
||||
<NOTNULL>X</NOTNULL>
|
||||
<DATATYPE>CHAR</DATATYPE>
|
||||
<LENG>000032</LENG>
|
||||
<MASK> CHAR</MASK>
|
||||
|
@ -54,7 +52,6 @@
|
|||
<ADMINFIELD>0</ADMINFIELD>
|
||||
<INTTYPE>C</INTTYPE>
|
||||
<INTLEN>000064</INTLEN>
|
||||
<NOTNULL>X</NOTNULL>
|
||||
<DATATYPE>CHAR</DATATYPE>
|
||||
<LENG>000032</LENG>
|
||||
<MASK> CHAR</MASK>
|
||||
|
@ -64,7 +61,6 @@
|
|||
<ADMINFIELD>0</ADMINFIELD>
|
||||
<INTTYPE>C</INTTYPE>
|
||||
<INTLEN>000064</INTLEN>
|
||||
<NOTNULL>X</NOTNULL>
|
||||
<DATATYPE>CHAR</DATATYPE>
|
||||
<LENG>000032</LENG>
|
||||
<MASK> CHAR</MASK>
|
||||
|
|
|
@ -75,6 +75,10 @@ CLASS z2ui5_cl_fw_app_startup IMPLEMENTATION.
|
|||
editable = `true`
|
||||
)->content( )->_ns_m( ).
|
||||
|
||||
DATA(lv_url_search) = z2ui5_cl_util_func=>app_get_url(
|
||||
client = client
|
||||
classname = 'z2ui5_cl_app_search_apps' ).
|
||||
|
||||
content->label( `Step 1`
|
||||
)->text( `Create a new class in your abap system`
|
||||
)->label( `Step 2`
|
||||
|
@ -86,6 +90,7 @@ CLASS z2ui5_cl_fw_app_startup IMPLEMENTATION.
|
|||
href = `https://github.com/abap2UI5/abap2UI5/blob/main/src/03/02/z2ui5_cl_app_hello_world.clas.abap`
|
||||
)->label( `Step 4` ).
|
||||
|
||||
|
||||
IF ms_home-class_editable = abap_true.
|
||||
|
||||
content->input( placeholder = `fill in the class name and press 'check'`
|
||||
|
@ -109,7 +114,8 @@ CLASS z2ui5_cl_fw_app_startup IMPLEMENTATION.
|
|||
href = lv_url
|
||||
enabled = z2ui5_cl_util_func=>boolean_abap_2_json( xsdbool( ms_home-class_editable = abap_false ) ) ).
|
||||
|
||||
DATA(form) = grid->simpleform( title = `Samples`
|
||||
|
||||
DATA(form) = grid->simpleform( title = `Apps`
|
||||
editable = abap_true
|
||||
layout = `ResponsiveGridLayout` ).
|
||||
|
||||
|
@ -121,15 +127,35 @@ CLASS z2ui5_cl_fw_app_startup IMPLEMENTATION.
|
|||
href = `https://github.com/abap2UI5/abap2UI5-samples` ).
|
||||
ENDIF.
|
||||
|
||||
data(lv_url_samples) = z2ui5_cl_util_func=>app_get_url(
|
||||
client = client
|
||||
classname = 'z2ui5_cl_demo_app_000' ).
|
||||
|
||||
DATA(cont) = form->content( )->_ns_m( ).
|
||||
cont->label( ).
|
||||
cont->button(
|
||||
cont->label( `Samples`).
|
||||
* cont->button(
|
||||
* text = `Continue...`
|
||||
* press = client->_event( val = `DEMOS` check_view_destroy = abap_true )
|
||||
* enabled = xsdbool( mv_check_demo = abap_true ) )->_go_new( ).
|
||||
cont->link(
|
||||
text = `Continue...`
|
||||
press = client->_event( val = `DEMOS` check_view_destroy = abap_true )
|
||||
enabled = xsdbool( mv_check_demo = abap_true ) )->_go_new( ).
|
||||
cont->button( visible = abap_false )->link( text = `More on GitHub...`
|
||||
target = `_blank`
|
||||
href = `https://github.com/abap2UI5/abap2UI5-documentation/blob/main/docs/links.md` ).
|
||||
target = `_blank`
|
||||
* press = client->_event( val = `DEMOS` check_view_destroy = abap_true )
|
||||
href = lv_url_samples
|
||||
enabled = xsdbool( mv_check_demo = abap_true )
|
||||
)->_go_new( ).
|
||||
cont->button( visible = abap_false ).
|
||||
|
||||
cont->label( `Local`
|
||||
)->link( text = `Search apps on your system...`
|
||||
target = `_blank`
|
||||
href = lv_url_search
|
||||
).
|
||||
|
||||
cont->label( `Online` )->link( text = `More on GitHub...`
|
||||
target = `_blank`
|
||||
href = `https://github.com/abap2UI5/abap2UI5-documentation/blob/main/docs/links.md` ).
|
||||
|
||||
|
||||
client->view_display( form->_stringify( ) ).
|
||||
|
||||
|
@ -143,8 +169,8 @@ CLASS z2ui5_cl_fw_app_startup IMPLEMENTATION.
|
|||
IF mv_check_initialized = abap_false.
|
||||
mv_check_initialized = abap_true.
|
||||
z2ui5_on_init( ).
|
||||
view_display_start( ).
|
||||
return.
|
||||
view_display_start( ).
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
IF client->get( )-check_on_navigated = abap_true.
|
||||
|
@ -156,7 +182,7 @@ CLASS z2ui5_cl_fw_app_startup IMPLEMENTATION.
|
|||
ASSIGN ls_result-row->* TO <class>.
|
||||
ms_home-classname = <class>.
|
||||
view_display_start( ).
|
||||
return.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
CATCH cx_root.
|
||||
ENDTRY.
|
||||
|
|
120
src/02/02/z2ui5_cl_app_search_apps.clas.abap
Normal file
120
src/02/02/z2ui5_cl_app_search_apps.clas.abap
Normal file
|
@ -0,0 +1,120 @@
|
|||
CLASS z2ui5_cl_app_search_apps DEFINITION
|
||||
PUBLIC
|
||||
CREATE PUBLIC .
|
||||
|
||||
PUBLIC SECTION.
|
||||
|
||||
INTERFACES z2ui5_if_app.
|
||||
|
||||
TYPES:
|
||||
BEGIN OF ty_app,
|
||||
name TYPE string,
|
||||
visible TYPE abap_bool,
|
||||
END OF ty_app.
|
||||
DATA mt_apps TYPE STANDARD TABLE OF ty_app WITH EMPTY KEY.
|
||||
|
||||
DATA check_initialized TYPE abap_bool.
|
||||
DATA mv_search_value TYPE string.
|
||||
|
||||
PROTECTED SECTION.
|
||||
METHODS search.
|
||||
METHODS view_display
|
||||
IMPORTING
|
||||
client TYPE REF TO z2ui5_if_client.
|
||||
PRIVATE SECTION.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
||||
CLASS z2ui5_cl_app_search_apps IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD z2ui5_if_app~main.
|
||||
|
||||
IF check_initialized = abap_false.
|
||||
check_initialized = abap_true.
|
||||
|
||||
mt_apps = VALUE #( FOR row IN z2ui5_cl_util_func=>rtti_get_classes_impl_intf( `Z2UI5_IF_APP` )
|
||||
( name = row ) ).
|
||||
search( ).
|
||||
view_display( client ).
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
IF client->get( )-check_on_navigated = abap_true.
|
||||
view_display( client ).
|
||||
ENDIF.
|
||||
|
||||
CASE client->get( )-event.
|
||||
|
||||
WHEN `ON_PRESS`.
|
||||
DATA(lt_arg) = client->get( )-t_event_arg.
|
||||
DATA(lv_app) = lt_arg[ 1 ].
|
||||
|
||||
DATA li_app TYPE REF TO z2ui5_if_app.
|
||||
CREATE OBJECT li_app TYPE (lv_app).
|
||||
client->nav_app_call( li_app ).
|
||||
|
||||
* client->message_toast_display( lv_app ).
|
||||
|
||||
WHEN 'BACK'.
|
||||
client->nav_app_leave( client->get_app( client->get( )-s_draft-id_prev_app_stack ) ).
|
||||
|
||||
WHEN 'ON_SEARCH'.
|
||||
search( ).
|
||||
client->view_model_update( ).
|
||||
client->message_toast_display( |backend search done| ).
|
||||
ENDCASE.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD search.
|
||||
|
||||
DATA lr_app TYPE REF TO ty_app.
|
||||
|
||||
LOOP AT mt_apps REFERENCE INTO lr_app.
|
||||
lr_app->visible = abap_false.
|
||||
IF lr_app->name CS 'DEMO'.
|
||||
CONTINUE.
|
||||
ENDIF.
|
||||
IF lr_app->name CS mv_search_value.
|
||||
lr_app->visible = abap_true.
|
||||
ENDIF.
|
||||
ENDLOOP.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD view_display.
|
||||
|
||||
|
||||
|
||||
DATA(page) = z2ui5_cl_xml_view=>factory(
|
||||
)->shell(
|
||||
)->page(
|
||||
title = 'abap2UI5 - Search Apps'
|
||||
navbuttonpress = client->_event( 'BACK' )
|
||||
shownavbutton = xsdbool( client->get( )-s_draft-id_prev_app_stack is not initial )
|
||||
)->header_content(
|
||||
)->search_field(
|
||||
value = client->_bind_edit( mv_search_value )
|
||||
search = client->_event( 'ON_SEARCH' )
|
||||
change = client->_event( 'ON_SEARCH' )
|
||||
width = `17.5rem`
|
||||
id = `SEARCH`
|
||||
)->get_parent( ).
|
||||
|
||||
LOOP AT mt_apps REFERENCE INTO DATA(lr_app).
|
||||
DATA(lv_tabix) = sy-tabix.
|
||||
page->generic_tile(
|
||||
class = 'sapUiTinyMarginBegin sapUiTinyMarginTop tileLayout'
|
||||
press = client->_event( val = `ON_PRESS` t_arg = VALUE #( ( `${$source>/header}` ) ) )
|
||||
header = client->_bind( val = lr_app->name tab = mt_apps tab_index = lv_tabix )
|
||||
visible = client->_bind( val = lr_app->visible tab = mt_apps tab_index = lv_tabix ) ).
|
||||
ENDLOOP.
|
||||
|
||||
client->view_display( page->stringify( ) ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
19
src/02/02/z2ui5_cl_app_search_apps.clas.testclasses.abap
Normal file
19
src/02/02/z2ui5_cl_app_search_apps.clas.testclasses.abap
Normal file
|
@ -0,0 +1,19 @@
|
|||
CLASS ltcl_unit_test DEFINITION FINAL FOR TESTING
|
||||
DURATION short
|
||||
RISK LEVEL dangerous.
|
||||
|
||||
PRIVATE SECTION.
|
||||
METHODS first_test FOR TESTING RAISING cx_static_check.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS ltcl_unit_test IMPLEMENTATION.
|
||||
|
||||
METHOD first_test.
|
||||
|
||||
DATA(lo_app) = NEW z2ui5_cl_app_search_apps( ) ##NEEDED.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
17
src/02/02/z2ui5_cl_app_search_apps.clas.xml
Normal file
17
src/02/02/z2ui5_cl_app_search_apps.clas.xml
Normal file
|
@ -0,0 +1,17 @@
|
|||
<?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_SEARCH_APPS</CLSNAME>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>abap2UI5 - find all apps on the system</DESCRIPT>
|
||||
<STATE>1</STATE>
|
||||
<CLSCCINCL>X</CLSCCINCL>
|
||||
<FIXPT>X</FIXPT>
|
||||
<UNICODE>X</UNICODE>
|
||||
<WITH_UNIT_TESTS>X</WITH_UNIT_TESTS>
|
||||
</VSEOCLASS>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
Loading…
Reference in New Issue
Block a user