mirror of
https://github.com/abap2UI5/abap2UI5.git
synced 2025-04-29 21:42:45 +08:00
start app popup value help (#792)
* start app popup * update value help * lint fixes
This commit is contained in:
parent
b1e60622d8
commit
e099cc2c69
|
@ -176,21 +176,29 @@ CLASS z2ui5_cl_util_func DEFINITION
|
|||
!val TYPE REF TO object
|
||||
RETURNING
|
||||
VALUE(result) TYPE abap_attrdescr_tab .
|
||||
CLASS-METHODS rtti_get_t_comp_by_struc
|
||||
CLASS-METHODS rtti_get_t_comp_by_data
|
||||
IMPORTING
|
||||
!val TYPE any
|
||||
RETURNING
|
||||
VALUE(result) TYPE cl_abap_structdescr=>component_table .
|
||||
VALUE(result) TYPE cl_abap_structdescr=>component_table.
|
||||
CLASS-METHODS rtti_get_type_name
|
||||
IMPORTING
|
||||
!val TYPE any
|
||||
RETURNING
|
||||
VALUE(result) TYPE string .
|
||||
VALUE(result) TYPE string.
|
||||
|
||||
CLASS-METHODS rtti_check_type_kind_dref
|
||||
IMPORTING
|
||||
!val TYPE any
|
||||
RETURNING
|
||||
VALUE(result) TYPE abap_bool .
|
||||
VALUE(result) TYPE abap_bool.
|
||||
|
||||
CLASS-METHODS rtti_get_classes_impl_intf
|
||||
IMPORTING
|
||||
!val TYPE clike
|
||||
RETURNING
|
||||
VALUE(result) TYPE string_table.
|
||||
|
||||
CLASS-METHODS rtti_get_type_kind
|
||||
IMPORTING
|
||||
!val TYPE any
|
||||
|
@ -417,6 +425,68 @@ CLASS z2ui5_cl_util_func IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD rtti_get_classes_impl_intf.
|
||||
|
||||
TRY.
|
||||
|
||||
DATA obj TYPE REF TO object.
|
||||
CALL METHOD ('XCO_CP_ABAP')=>interface
|
||||
EXPORTING
|
||||
iv_name = val
|
||||
RECEIVING
|
||||
ro_interface = obj.
|
||||
|
||||
FIELD-SYMBOLS <any> TYPE any.
|
||||
ASSIGN obj->('IF_XCO_AO_INTERFACE~IMPLEMENTATIONS') TO <any>.
|
||||
obj = <any>.
|
||||
|
||||
ASSIGN obj->('IF_XCO_INTF_IMPLEMENTATIONS_FC~ALL') TO <any>.
|
||||
obj = <any>.
|
||||
|
||||
CALL METHOD obj->('IF_XCO_INTF_IMPLEMENTATIONS~GET').
|
||||
|
||||
DATA lt_implementation_names TYPE string_table.
|
||||
CALL METHOD obj->('IF_XCO_INTF_IMPLEMENTATIONS~GET_NAMES')
|
||||
RECEIVING
|
||||
rt_names = lt_implementation_names.
|
||||
|
||||
result = lt_implementation_names.
|
||||
|
||||
CATCH cx_sy_dyn_call_illegal_class.
|
||||
|
||||
TYPES:
|
||||
BEGIN OF ty_s_impl,
|
||||
clsname TYPE c LENGTH 30,
|
||||
refclsname TYPE c LENGTH 30,
|
||||
END OF ty_s_impl.
|
||||
DATA lt_impl TYPE STANDARD TABLE OF ty_s_impl WITH DEFAULT KEY.
|
||||
|
||||
TYPES:
|
||||
BEGIN OF ty_s_key,
|
||||
intkey TYPE c LENGTH 30,
|
||||
END OF ty_s_key.
|
||||
DATA ls_key TYPE ty_s_key.
|
||||
ls_key-intkey = val.
|
||||
|
||||
DATA(lv_fm) = `SEO_INTERFACE_IMPLEM_GET_ALL`.
|
||||
CALL FUNCTION lv_fm
|
||||
EXPORTING
|
||||
intkey = ls_key
|
||||
IMPORTING
|
||||
impkeys = lt_impl
|
||||
EXCEPTIONS
|
||||
not_existing = 1
|
||||
OTHERS = 2.
|
||||
|
||||
LOOP AT lt_impl REFERENCE INTO DATA(lr_impl).
|
||||
INSERT CONV #( lr_impl->clsname ) INTO TABLE result.
|
||||
ENDLOOP.
|
||||
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD rtti_get_classname_by_ref.
|
||||
|
||||
DATA(lv_classname) = cl_abap_classdescr=>get_class_name( in ).
|
||||
|
@ -450,10 +520,16 @@ CLASS z2ui5_cl_util_func IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD rtti_get_t_comp_by_struc.
|
||||
METHOD rtti_get_t_comp_by_data.
|
||||
|
||||
DATA(lo_type) = cl_abap_structdescr=>describe_by_data( val ).
|
||||
DATA(lo_struct) = CAST cl_abap_structdescr( lo_type ).
|
||||
TRY.
|
||||
DATA(lo_tab) = CAST cl_abap_tabledescr( lo_type ).
|
||||
DATA(lo_struct) = CAST cl_abap_structdescr( lo_tab->get_table_line_type( ) ).
|
||||
CATCH cx_root.
|
||||
lo_struct = CAST cl_abap_structdescr( lo_type ).
|
||||
ENDTRY.
|
||||
|
||||
result = lo_struct->get_components( ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
|
|
@ -696,7 +696,7 @@ CLASS ltcl_unit_test IMPLEMENTATION.
|
|||
|
||||
DATA(ls_row) = VALUE ty_row( ).
|
||||
|
||||
DATA(lt_comp) = z2ui5_cl_util_func=>rtti_get_t_comp_by_struc( ls_row ).
|
||||
DATA(lt_comp) = z2ui5_cl_util_func=>rtti_get_t_comp_by_data( ls_row ).
|
||||
|
||||
IF lines( lt_comp ) <> 7.
|
||||
cl_abap_unit_assert=>fail( ).
|
||||
|
|
|
@ -360,7 +360,7 @@ CLASS z2ui5_cl_fw_binding IMPLEMENTATION.
|
|||
ASSIGN (lv_name) TO <attribute>.
|
||||
z2ui5_cl_util_func=>x_check_raise( xsdbool( sy-subrc <> 0 ) ).
|
||||
|
||||
DATA(lt_comp) = z2ui5_cl_util_func=>rtti_get_t_comp_by_struc( <attribute> ).
|
||||
DATA(lt_comp) = z2ui5_cl_util_func=>rtti_get_t_comp_by_data( <attribute> ).
|
||||
|
||||
DATA(lv_attri) = z2ui5_cl_util_func=>c_replace_assign_struc( val ).
|
||||
LOOP AT lt_comp REFERENCE INTO DATA(lr_comp).
|
||||
|
|
|
@ -45,7 +45,7 @@ CLASS Z2UI5_CL_FW_CLIENT IMPLEMENTATION.
|
|||
data lr_ref type ref to data.
|
||||
|
||||
ASSIGN i_tab[ i_tab_index ] TO <row>.
|
||||
DATA(lt_attri) = z2ui5_cl_util_func=>rtti_get_t_comp_by_struc( <row> ).
|
||||
DATA(lt_attri) = z2ui5_cl_util_func=>rtti_get_t_comp_by_data( <row> ).
|
||||
|
||||
LOOP AT lt_attri ASSIGNING FIELD-SYMBOL(<comp>).
|
||||
|
||||
|
|
|
@ -238,7 +238,7 @@ CLASS z2ui5_cl_fw_controller IMPLEMENTATION.
|
|||
ls_params = location->get_attribute( `STARTUP_PARAMETERS` )->get_val_ref( ).
|
||||
ASSIGN ls_params->* TO <struc>.
|
||||
|
||||
DATA(lt_comp) = z2ui5_cl_util_func=>rtti_get_t_comp_by_struc( <struc> ).
|
||||
DATA(lt_comp) = z2ui5_cl_util_func=>rtti_get_t_comp_by_data( <struc> ).
|
||||
|
||||
LOOP AT lt_comp INTO DATA(ls_comp).
|
||||
|
||||
|
|
|
@ -29,6 +29,7 @@ CLASS z2ui5_cl_fw_app_startup DEFINITION
|
|||
METHODS z2ui5_on_event.
|
||||
METHODS view_display_start.
|
||||
PROTECTED SECTION.
|
||||
DATA mt_classes TYPE string_table.
|
||||
PRIVATE SECTION.
|
||||
ENDCLASS.
|
||||
|
||||
|
@ -89,7 +90,10 @@ CLASS z2ui5_cl_fw_app_startup IMPLEMENTATION.
|
|||
content->input( placeholder = `fill in the class name and press 'check'`
|
||||
editable = z2ui5_cl_util_func=>boolean_abap_2_json( ms_home-class_editable )
|
||||
value = client->_bind_edit( ms_home-classname )
|
||||
submit = client->_event( ms_home-btn_event_id ) ).
|
||||
submit = client->_event( ms_home-btn_event_id )
|
||||
valuehelprequest = client->_event( 'VALUE_HELP' )
|
||||
showvaluehelp = abap_true
|
||||
).
|
||||
|
||||
ELSE.
|
||||
content->text( ms_home-classname ).
|
||||
|
@ -140,6 +144,17 @@ CLASS z2ui5_cl_fw_app_startup IMPLEMENTATION.
|
|||
z2ui5_on_init( ).
|
||||
ENDIF.
|
||||
|
||||
IF client->get( )-check_on_navigated = abap_true.
|
||||
TRY.
|
||||
DATA(lo_f4) = CAST z2ui5_cl_popup_to_select( client->get_app( client->get( )-s_draft-id_prev_app ) ).
|
||||
DATA(ls_result) = lo_f4->result( ).
|
||||
IF ls_result-check_cancel = abap_false.
|
||||
ms_home-classname = mt_classes[ ls_result-index ].
|
||||
ENDIF.
|
||||
CATCH cx_root.
|
||||
ENDTRY.
|
||||
ENDIF.
|
||||
|
||||
z2ui5_on_event( ).
|
||||
view_display_start( ).
|
||||
|
||||
|
@ -176,6 +191,10 @@ CLASS z2ui5_cl_fw_app_startup IMPLEMENTATION.
|
|||
type = `error` ).
|
||||
ENDTRY.
|
||||
|
||||
WHEN 'VALUE_HELP'.
|
||||
mt_classes = z2ui5_cl_util_func=>rtti_get_classes_impl_intf( `Z2UI5_IF_APP` ).
|
||||
client->nav_app_call( z2ui5_cl_popup_to_select=>factory( mt_classes ) ).
|
||||
|
||||
WHEN `DEMOS`.
|
||||
|
||||
DATA li_app TYPE REF TO z2ui5_if_app.
|
||||
|
|
|
@ -12,9 +12,16 @@ CLASS z2ui5_cl_popup_to_select DEFINITION
|
|||
RETURNING
|
||||
VALUE(r_result) TYPE REF TO z2ui5_cl_popup_to_select.
|
||||
|
||||
TYPES:
|
||||
BEGIN OF ty_s_result,
|
||||
index TYPE i,
|
||||
check_cancel TYPE abap_bool,
|
||||
END OF ty_s_result.
|
||||
DATA ms_result TYPE ty_s_result.
|
||||
|
||||
METHODS result
|
||||
RETURNING
|
||||
VALUE(result) TYPE i.
|
||||
VALUE(result) TYPE ty_s_result.
|
||||
|
||||
DATA mr_tab TYPE REF TO data.
|
||||
DATA mr_tab_popup TYPE REF TO data ##NEEDED.
|
||||
|
@ -23,7 +30,6 @@ CLASS z2ui5_cl_popup_to_select DEFINITION
|
|||
PROTECTED SECTION.
|
||||
DATA check_initialized TYPE abap_bool.
|
||||
DATA client TYPE REF TO z2ui5_if_client.
|
||||
DATA mv_selected_index TYPE i.
|
||||
METHODS on_event.
|
||||
METHODS display.
|
||||
METHODS set_output_table.
|
||||
|
@ -31,6 +37,7 @@ CLASS z2ui5_cl_popup_to_select DEFINITION
|
|||
METHODS on_event_search.
|
||||
|
||||
PRIVATE SECTION.
|
||||
DATA lv_check_table_line TYPE abap_bool.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
@ -58,12 +65,10 @@ CLASS z2ui5_cl_popup_to_select IMPLEMENTATION.
|
|||
cancel = client->_event( 'CANCEL' )
|
||||
search = client->_event( val = 'SEARCH' t_arg = VALUE #( ( `${$parameters>/value}` ) ( `${$parameters>/clearButtonPressed}` ) ) )
|
||||
confirm = client->_event( val = 'CONFIRM' t_arg = VALUE #( ( `${$parameters>/selectedContexts[0]/sPath}` ) ) )
|
||||
growing = abap_true
|
||||
).
|
||||
|
||||
DATA(lo_type) = cl_abap_structdescr=>describe_by_data( <tab_out> ).
|
||||
DATA(lo_table) = CAST cl_abap_tabledescr( lo_type ).
|
||||
DATA(lo_struct) = CAST cl_abap_structdescr( lo_table->get_table_line_type( ) ).
|
||||
DATA(lt_comp) = lo_struct->get_components( ).
|
||||
DATA(lt_comp) = z2ui5_cl_util_func=>rtti_get_t_comp_by_data( <tab_out> ).
|
||||
DELETE lt_comp WHERE name = 'ZZSELKZ'.
|
||||
|
||||
DATA(list) = tab->column_list_item( valign = `Top` selected = `{ZZSELKZ}` ).
|
||||
|
@ -106,6 +111,7 @@ CLASS z2ui5_cl_popup_to_select IMPLEMENTATION.
|
|||
on_event_confirm( ).
|
||||
|
||||
WHEN 'CANCEL'.
|
||||
ms_result-check_cancel = abap_true.
|
||||
client->popup_destroy( ).
|
||||
client->nav_app_leave( client->get_app( client->get( )-s_draft-id_prev_app_stack ) ).
|
||||
|
||||
|
@ -118,7 +124,7 @@ CLASS z2ui5_cl_popup_to_select IMPLEMENTATION.
|
|||
|
||||
METHOD result.
|
||||
|
||||
result = mv_selected_index.
|
||||
result = ms_result.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
@ -127,15 +133,20 @@ CLASS z2ui5_cl_popup_to_select IMPLEMENTATION.
|
|||
|
||||
FIELD-SYMBOLS <row> TYPE any.
|
||||
FIELD-SYMBOLS <row2> TYPE any.
|
||||
FIELD-SYMBOLS <row3> TYPE any.
|
||||
FIELD-SYMBOLS <tab> TYPE STANDARD TABLE.
|
||||
ASSIGN mr_tab->* TO <tab>.
|
||||
|
||||
DATA(lo_type) = cl_abap_structdescr=>describe_by_data( <tab> ).
|
||||
DATA(lo_table) = CAST cl_abap_tabledescr( lo_type ).
|
||||
DATA(lo_struct) = CAST cl_abap_structdescr( lo_table->get_table_line_type( ) ).
|
||||
TRY.
|
||||
DATA(lo_struct) = CAST cl_abap_structdescr( lo_table->get_table_line_type( ) ).
|
||||
DATA(lt_comp) = lo_struct->get_components( ).
|
||||
CATCH cx_root.
|
||||
lv_check_table_line = abap_true.
|
||||
DATA(lo_elem) = CAST cl_abap_elemdescr( lo_table->get_table_line_type( ) ).
|
||||
INSERT VALUE #( name = 'TAB_LINE' type = CAST #( lo_elem ) ) INTO TABLE lt_comp.
|
||||
ENDTRY.
|
||||
DATA(lo_type_bool) = cl_abap_structdescr=>describe_by_name( 'ABAP_BOOL' ).
|
||||
DATA(lt_comp) = lo_struct->get_components( ).
|
||||
INSERT VALUE #( name = `ZZSELKZ` type = CAST #( lo_type_bool ) ) INTO TABLE lt_comp.
|
||||
|
||||
DATA(lo_line_type) = cl_abap_structdescr=>create( lt_comp ).
|
||||
|
@ -146,24 +157,25 @@ CLASS z2ui5_cl_popup_to_select IMPLEMENTATION.
|
|||
|
||||
FIELD-SYMBOLS <tab_out> TYPE STANDARD TABLE.
|
||||
FIELD-SYMBOLS <tab_out2> TYPE STANDARD TABLE.
|
||||
FIELD-SYMBOLS <field> TYPE any.
|
||||
ASSIGN mr_tab_popup->* TO <tab_out>.
|
||||
ASSIGN mr_tab_popup_backup->* TO <tab_out2>.
|
||||
LOOP AT <tab> ASSIGNING <row>.
|
||||
|
||||
DATA lr_row TYPE REF TO data.
|
||||
CREATE DATA lr_row LIKE LINE OF <tab_out>.
|
||||
ASSIGN lr_row->* TO <row2>.
|
||||
<row2> = CORRESPONDING #( <row> ).
|
||||
IF lv_check_table_line = abap_true.
|
||||
ASSIGN lr_row->('TAB_LINE') TO <field>.
|
||||
<field> = <row>.
|
||||
ELSE.
|
||||
<row2> = CORRESPONDING #( <row> ).
|
||||
ENDIF.
|
||||
INSERT <row2> INTO TABLE <tab_out>.
|
||||
|
||||
DATA lr_row2 TYPE REF TO data.
|
||||
CREATE DATA lr_row2 LIKE LINE OF <tab_out2>.
|
||||
ASSIGN lr_row2->* TO <row3>.
|
||||
<row3> = CORRESPONDING #( <row> ).
|
||||
INSERT <row3> INTO TABLE <tab_out2>.
|
||||
|
||||
ENDLOOP.
|
||||
|
||||
<tab_out2> = <tab_out>.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
|
@ -177,7 +189,7 @@ CLASS z2ui5_cl_popup_to_select IMPLEMENTATION.
|
|||
DATA(lv_tabix) = sy-tabix.
|
||||
ASSIGN ('<row>-ZZSELKZ') TO <field>.
|
||||
IF <field> = abap_true.
|
||||
mv_selected_index = lv_tabix.
|
||||
ms_result-index = lv_tabix.
|
||||
EXIT.
|
||||
ENDIF.
|
||||
ENDLOOP.
|
||||
|
@ -192,22 +204,14 @@ CLASS z2ui5_cl_popup_to_select IMPLEMENTATION.
|
|||
DATA(lt_arg) = client->get( )-t_event_arg.
|
||||
READ TABLE lt_arg INTO DATA(ls_arg) INDEX 1.
|
||||
|
||||
FIELD-SYMBOLS <row> TYPE any.
|
||||
FIELD-SYMBOLS <tab_out> TYPE STANDARD TABLE.
|
||||
FIELD-SYMBOLS <tab_out_backup> TYPE STANDARD TABLE.
|
||||
FIELD-SYMBOLS <row2> TYPE any.
|
||||
FIELD-SYMBOLS <field2> TYPE any.
|
||||
ASSIGN mr_tab_popup->* TO <tab_out>.
|
||||
CLEAR <tab_out>.
|
||||
ASSIGN mr_tab_popup_backup->* TO <tab_out_backup>.
|
||||
|
||||
LOOP AT <tab_out_backup> ASSIGNING <row>.
|
||||
DATA lr_row TYPE REF TO data.
|
||||
CREATE DATA lr_row LIKE LINE OF <tab_out>.
|
||||
ASSIGN lr_row->* TO <row2>.
|
||||
<row2> = CORRESPONDING #( <row> ).
|
||||
INSERT <row2> INTO TABLE <tab_out>.
|
||||
ENDLOOP.
|
||||
<tab_out> = <tab_out_backup>.
|
||||
|
||||
DATA(lo_type) = cl_abap_structdescr=>describe_by_data( <tab_out> ).
|
||||
DATA(lo_table) = CAST cl_abap_tabledescr( lo_type ).
|
||||
|
@ -218,7 +222,7 @@ CLASS z2ui5_cl_popup_to_select IMPLEMENTATION.
|
|||
LOOP AT lt_comp INTO DATA(ls_comp).
|
||||
DATA(lv_assign) = '<ROW2>-' && ls_comp-name.
|
||||
ASSIGN (lv_assign) TO <field2>.
|
||||
IF <field2> CS ls_arg.
|
||||
IF to_upper( <field2> ) CS to_upper( ls_arg ).
|
||||
lv_check_continue = abap_true.
|
||||
EXIT.
|
||||
ENDIF.
|
||||
|
|
Loading…
Reference in New Issue
Block a user