Skip to content

Commit

Permalink
Sync data tab with the field settings
Browse files Browse the repository at this point in the history
  • Loading branch information
bizhuka committed Nov 20, 2021
1 parent e1f5d3b commit a3f2ce5
Show file tree
Hide file tree
Showing 7 changed files with 146 additions and 114 deletions.
75 changes: 45 additions & 30 deletions src/zaqo_editor3_072_field_setting.prog.abap
Expand Up @@ -5,24 +5,24 @@ CLASS lcl_field_setting DEFINITION INHERITING FROM lcl_tab FINAL FRIENDS zcl_eui
PUBLIC SECTION.
METHODS:

pbo REDEFINITION.
pbo REDEFINITION.

PROTECTED SECTION.
METHODS:
_fill_table REDEFINITION,
_get_layout REDEFINITION,
_get_catalog REDEFINITION,
_get_toolbar REDEFINITION,
_on_hotspot_click REDEFINITION,
_on_user_command REDEFINITION,
_on_app_event REDEFINITION,
_on_data_changed FOR EVENT data_changed OF cl_gui_alv_grid "#EC CALLED
_fill_table REDEFINITION,
_get_layout REDEFINITION,
_get_catalog REDEFINITION,
_get_toolbar REDEFINITION,
_on_hotspot_click REDEFINITION,
_on_user_command REDEFINITION,
_on_app_event REDEFINITION,
_on_data_changed FOR EVENT data_changed OF cl_gui_alv_grid "#EC CALLED
IMPORTING
er_data_changed,

_check_data
CHANGING
cv_ok TYPE abap_bool.
_check_data
CHANGING
cv_ok TYPE abap_bool.

PRIVATE SECTION.
CONSTANTS:
Expand All @@ -33,13 +33,13 @@ CLASS lcl_field_setting DEFINITION INHERITING FROM lcl_tab FINAL FRIENDS zcl_eui

* TYPES:
METHODS:
_add_new_field
IMPORTING
io_grid TYPE REF TO cl_gui_alv_grid,
_add_new_field
IMPORTING
io_grid TYPE REF TO cl_gui_alv_grid,

_edit_1_value
IMPORTING
ir_fld_value TYPE REF TO lcl_editor=>ts_fld_value.
_edit_1_value
IMPORTING
ir_fld_value TYPE REF TO lcl_editor=>ts_fld_value.
ENDCLASS.

CLASS lcl_field_setting IMPLEMENTATION.
Expand Down Expand Up @@ -149,7 +149,8 @@ CLASS lcl_field_setting IMPLEMENTATION.
EXPORTING
ir_field_desc = lr_field_desc
iv_editable = lv_editable.
lo_table_comp_alv->show( ).
CHECK lo_table_comp_alv->show( ) = 'OK'.
go_editor->sync_screen_ui( iv_message1 = '' ).

WHEN 'VALUE_BUTTON'.
_edit_1_value( lr_fld_value ).
Expand All @@ -167,6 +168,8 @@ CLASS lcl_field_setting IMPLEMENTATION.
ENDMETHOD.

METHOD _edit_1_value.
DATA lv_write_back TYPE abap_bool VALUE abap_false.

CASE ir_fld_value->ui_type.

WHEN zcl_eui_type=>mc_ui_type-range.
Expand All @@ -175,7 +178,7 @@ CLASS lcl_field_setting IMPLEMENTATION.
IF go_editor->is_editable( ir_fld_value->is_editable ) <> abap_true.
lv_read_only = abap_true.
ENDIF.
zcl_eui_screen=>show_range(
lv_write_back = zcl_eui_screen=>show_range(
is_field_desc = ir_fld_value->field_desc
ir_cur_value = ir_fld_value->cur_value
iv_read_only = lv_read_only ).
Expand All @@ -185,7 +188,7 @@ CLASS lcl_field_setting IMPLEMENTATION.
CREATE OBJECT lo_table_alv
EXPORTING
ir_fld_value = ir_fld_value.
lo_table_alv->show( ).
CHECK lo_table_alv->show( ) = 'OK'.

WHEN zcl_eui_type=>mc_ui_type-string.
DATA lr_text TYPE REF TO string.
Expand All @@ -200,7 +203,7 @@ CLASS lcl_field_setting IMPLEMENTATION.
ir_text = lr_text
iv_editable = lv_editable.
lo_memo->popup( ).
lo_memo->show( ).
CHECK lo_memo->show( ) = 'OK'.

" Parameters
WHEN OTHERS.
Expand All @@ -209,8 +212,19 @@ CLASS lcl_field_setting IMPLEMENTATION.
zcl_eui_screen=>edit_in_popup(
EXPORTING iv_label = ir_fld_value->label
" iv_rollname = ir_fld_value->rollname
CHANGING cv_value = <lv_value> ).
CHANGING cv_value = <lv_value>
cv_ok = lv_write_back ).

IF lv_write_back = abap_true.
go_editor->set_top_screen( ).
ENDIF.
ENDCASE.

go_editor->sync_screen_ui( iv_message1 = '' ).

" For ranges and parameters only
CHECK lv_write_back = abap_true.
go_editor->mo_screen->set_init_params( ).
ENDMETHOD.

METHOD _get_toolbar.
Expand All @@ -236,7 +250,7 @@ CLASS lcl_field_setting IMPLEMENTATION.
METHOD _on_user_command.
CASE e_ucomm.
WHEN cl_gui_alv_grid=>mc_fc_loc_delete_row. " mc_button-delete_field.
go_editor->sync_screen_ui( iv_message = '' ).
go_editor->sync_screen_ui( iv_message1 = 'Exit for regenerating "Option data" screen'(ad3) ).

WHEN mc_button-add_new_field.
_add_new_field( sender ).
Expand Down Expand Up @@ -275,21 +289,22 @@ CLASS lcl_field_setting IMPLEMENTATION.

io_grid->refresh_table_display( ).
MESSAGE s032(zaqo_message) WITH lv_fname INTO sy-msgli.
go_editor->sync_screen_ui( iv_message = sy-msgli
iv_exit = abap_true ).
go_editor->sync_screen_ui( iv_message1 = sy-msgli
iv_message2 = 'Exit for regenerating "Option data" screen'(ad3)
iv_cmd = mc_pai_cmd-exit ).
ENDMETHOD.

METHOD _on_data_changed.
" Call checks manually. For sync with 'Edit data' tab only
CHECK er_data_changed IS NOT INITIAL.

DATA lv_message TYPE abap_bool VALUE abap_undefined.
DATA lv_message1 TYPE string.
READ TABLE er_data_changed->mt_mod_cells TRANSPORTING NO FIELDS
WITH KEY fieldname = 'ROLLNAME'.
IF sy-subrc = 0.
CLEAR lv_message. " <-- Yes show message
lv_message1 = 'Exit for regenerating "Option data" screen'(ad3).
ENDIF.
go_editor->sync_screen_ui( lv_message ).
go_editor->sync_screen_ui( iv_message1 = lv_message1 ).
ENDMETHOD.

METHOD _on_app_event.
Expand Down Expand Up @@ -349,7 +364,7 @@ ENDCLASS.
*&---------------------------------------------------------------------*

MODULE pbo_072 OUTPUT.
DATA go_field_setting TYPE REF TO lcl_field_setting. "#EC DECL_MODUL
DATA go_field_setting TYPE REF TO lcl_field_setting. "#EC DECL_MODUL
IF go_field_setting IS INITIAL.
CREATE OBJECT go_field_setting.
ENDIF.
Expand Down
18 changes: 9 additions & 9 deletions src/zaqo_editor3_cld.prog.abap
Expand Up @@ -65,7 +65,7 @@ CLASS lcl_editor DEFINITION FINAL
TYPES:
BEGIN OF ts_fld_value,
icon TYPE icon_d.
INCLUDE TYPE zcl_aqo_helper=>ts_field_value.
INCLUDE TYPE zcl_aqo_helper=>ts_field_value AS _field_value.
TYPES:
cur_value TYPE REF TO data,
catalog TYPE icon_d,
Expand Down Expand Up @@ -99,13 +99,15 @@ CLASS lcl_editor DEFINITION FINAL

sync_screen_ui
IMPORTING
iv_message TYPE csequence
iv_exit TYPE abap_bool OPTIONAL,
iv_message1 TYPE csequence
iv_message2 TYPE csequence OPTIONAL
iv_cmd TYPE syucomm DEFAULT '-',

do_open
IMPORTING
is_db_key TYPE ts_db_key
iv_menu_mode TYPE abap_bool OPTIONAL,
is_db_key TYPE ts_db_key
iv_true_editor TYPE abap_bool DEFAULT abap_true,
set_top_screen,

do_delete
IMPORTING
Expand Down Expand Up @@ -147,7 +149,7 @@ CLASS lcl_editor DEFINITION FINAL

PRIVATE SECTION.
DATA:
mv_initial_hash TYPE char16.
mv_initial_hash TYPE string. "char16.

METHODS:
_set_tab1_icon,
Expand All @@ -170,8 +172,6 @@ CLASS lcl_editor DEFINITION FINAL
_find_f4_tables,

_make_screen
IMPORTING
iv_menu_mode TYPE abap_bool
RETURNING VALUE(ro_screen) TYPE REF TO zcl_eui_screen,
_on_pbo_menu_screen FOR EVENT pbo_event OF zif_eui_manager
IMPORTING
Expand All @@ -184,7 +184,7 @@ CLASS lcl_editor DEFINITION FINAL
RETURNING VALUE(rv_ok) TYPE abap_bool,

_calculate_hash
RETURNING VALUE(rv_hash) TYPE char16.
RETURNING VALUE(rv_hash) LIKE mv_initial_hash. "char16.
ENDCLASS.

*&---------------------------------------------------------------------*
Expand Down
68 changes: 37 additions & 31 deletions src/zaqo_editor3_editor.prog.abap
Expand Up @@ -18,33 +18,29 @@ CLASS lcl_editor IMPLEMENTATION.
ENDMETHOD.

METHOD sync_screen_ui.
DATA: lv_ucomm TYPE syucomm VALUE '-'.

DO 1 TIMES.
CHECK iv_message <> abap_undefined.

DATA lv_message TYPE string.
lv_message = 'Exit for regenerating "Option data" screen'(ad3).
DATA lt_message TYPE stringtab.
APPEND iv_message1 TO lt_message.
APPEND iv_message2 TO lt_message.
DELETE lt_message WHERE table_line IS INITIAL.

IF lt_message IS NOT INITIAL.
" Messages as popup
IF iv_exit = abap_true.
IF iv_cmd = mc_pai_cmd-exit.
DATA lo_logger TYPE REF TO zcl_eui_logger.
CREATE OBJECT lo_logger.
lo_logger->add_text( iv_text = iv_message ).
lo_logger->add_text( iv_text = lv_message iv_msgty = 'W' ).
lo_logger->show( iv_profile = zcl_eui_logger=>mc_profile-popup ).
lv_ucomm = mc_pai_cmd-exit.
EXIT.
ENDIF.

" Informative messages
IF iv_message IS NOT INITIAL.
CONCATENATE iv_message lv_message INTO lv_message SEPARATED BY ` - `.
DATA lv_message TYPE string.
LOOP AT lt_message INTO lv_message.
lo_logger->add_text( iv_text = lv_message ).
ENDLOOP.
lo_logger->show( iv_profile = zcl_eui_logger=>mc_profile-popup ).
ELSE.
CONCATENATE LINES OF lt_message INTO lv_message SEPARATED BY ` - `.
MESSAGE lv_message TYPE 'S'.
ENDIF.
MESSAGE lv_message TYPE 'S'.
ENDDO.
ENDIF.

cl_gui_cfw=>set_new_ok_code( lv_ucomm ).
cl_gui_cfw=>set_new_ok_code( iv_cmd ).
ENDMETHOD.

METHOD pbo.
Expand Down Expand Up @@ -156,7 +152,7 @@ CLASS lcl_editor IMPLEMENTATION.
OR mc_pai_cmd-new_option. " TODO detect creation mode?

CHECK _is_saved( ) = abap_true.
do_open( is_db_key = ls_command-db_key ).
do_open( ls_command-db_key ).

IF lv_ok_code = mc_pai_cmd-new_option.
g_tabs-pressed_tab = mc_pai_cmd-tab_field_settings.
Expand Down Expand Up @@ -210,21 +206,34 @@ CLASS lcl_editor IMPLEMENTATION.

_set_flags( ).
zsaqo3_general_info = _get_general_info( ).

" Fill mt_fld_value & F4
_fill_fields( ).
_find_f4_tables( ).

" Active tab is 'Edit data'
g_tabs-pressed_tab = mc_pai_cmd-tab_edit_data.
mo_screen = _make_screen( iv_menu_mode = iv_menu_mode ).
CHECK mo_screen IS NOT INITIAL.
mo_screen = _make_screen( ).

CHECK mo_screen IS NOT INITIAL.
IF iv_true_editor = abap_true.
mo_screen->pbo( ).
set_top_screen( ).
ENDIF.
mv_initial_hash = _calculate_hash( ).

CHECK mo_tree IS NOT INITIAL.
mo_prefs->add_opened( is_db_key ).
mo_tree->add_opened( is_db_key ).
ENDMETHOD.

METHOD set_top_screen.
CALL FUNCTION 'ZFM_EUI_NEXT_SCREEN'
EXPORTING
io_scr_manager = mo_screen
iv_is_top = abap_true.
ENDMETHOD.

METHOD _set_flags.
mv_read_only = abap_false.
IF mo_option->lock( ) <> abap_true.
Expand Down Expand Up @@ -499,6 +508,8 @@ CLASS lcl_editor IMPLEMENTATION.

LOOP AT mt_fld_value REFERENCE INTO ls_fld_value.
ASSIGN COMPONENT ls_fld_value->name OF STRUCTURE <ls_context> TO <lv_src>.
CHECK sy-subrc = 0.

ASSIGN ls_fld_value->cur_value->* TO <lv_dest>.
<lv_dest> = <lv_src>.
ENDLOOP.
Expand Down Expand Up @@ -576,6 +587,9 @@ CLASS lcl_editor IMPLEMENTATION.
ASSIGN COMPONENT ls_fld_value->name OF STRUCTURE <ls_dest> TO <lv_dest>.
ASSIGN ls_fld_value->cur_value->* TO <lv_src>.
<lv_dest> = <lv_src>.

" Use memory from SCREEN
GET REFERENCE OF <lv_dest> INTO ls_fld_value->cur_value.
ENDLOOP.

DATA: lv_unq_prog TYPE programm, lo_crc64 TYPE REF TO zcl_eui_crc64, lv_pack TYPE c LENGTH 9.
Expand Down Expand Up @@ -620,13 +634,6 @@ CLASS lcl_editor IMPLEMENTATION.
iv_label = ls_fld_value->label
iv_sub_fdesc = ls_fld_value->sub_fdesc ).
ENDLOOP.

CHECK iv_menu_mode <> abap_true.
ro_screen->pbo( ).
CALL FUNCTION 'ZFM_EUI_NEXT_SCREEN'
EXPORTING
io_scr_manager = ro_screen
iv_is_top = abap_true.
ENDMETHOD.

METHOD _on_pbo_menu_screen.
Expand Down Expand Up @@ -682,7 +689,6 @@ CLASS lcl_editor IMPLEMENTATION.
lo_crc64->add_to_hash( <ls_context> ).
lo_crc64->add_to_hash( zsaqo3_general_info ).
lo_crc64->add_to_hash( mt_fld_value ).

rv_hash = lo_crc64->get_hash( ).
ENDMETHOD.

Expand Down
4 changes: 2 additions & 2 deletions src/zaqo_editor3_evt.prog.abap
Expand Up @@ -50,8 +50,8 @@ FORM start_editor USING is_db_opt TYPE zsaqo_option. "#EC CALLED External call
zcl_aqo_helper=>is_in_editor( iv_tcode = lv_tcode ).

CREATE OBJECT go_editor.
go_editor->do_open( is_db_key = ls_db_key
iv_menu_mode = abap_true ).
go_editor->do_open( is_db_key = ls_db_key
iv_true_editor = abap_false ).

DATA lo_screen TYPE REF TO zcl_eui_screen.
lo_screen = go_editor->mo_screen.
Expand Down

0 comments on commit a3f2ce5

Please sign in to comment.