Refactor "Object to Files" to html form (#4623)

* start conversion from popup to html form

* replace magic with constants

* revert label

* restructure to gui component


modify export object logic

* adjust whitespace

* remove test_changed_by functionality

* remove popup_object

Co-authored-by: Goran Back <g.back@geringhoff.de>
Co-authored-by: Lars Hvam <larshp@hotmail.com>
This commit is contained in:
g-back 2021-03-12 12:31:17 +01:00 committed by GitHub
parent a5856a04c7
commit 72f34f5bdf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 179 additions and 99 deletions

View File

@ -204,9 +204,6 @@ CLASS zcl_abapgit_gui_chunk_lib IMPLEMENTATION.
)->add(
iv_txt = 'Object to Files'
iv_act = zif_abapgit_definitions=>c_action-zip_object
)->add(
iv_txt = 'Test Changed by'
iv_act = zif_abapgit_definitions=>c_action-changed_by
)->add(
iv_txt = 'Debug Info'
iv_act = zif_abapgit_definitions=>c_action-go_debuginfo ).

View File

@ -0,0 +1,144 @@
CLASS zcl_abapgit_gui_page_ex_object DEFINITION
PUBLIC
INHERITING FROM zcl_abapgit_gui_component
FINAL
CREATE PRIVATE.
PUBLIC SECTION.
INTERFACES zif_abapgit_gui_event_handler.
INTERFACES zif_abapgit_gui_renderable.
CLASS-METHODS create
RETURNING
VALUE(ri_page) TYPE REF TO zif_abapgit_gui_renderable
RAISING
zcx_abapgit_exception.
METHODS constructor
RAISING
zcx_abapgit_exception.
PROTECTED SECTION.
PRIVATE SECTION.
CONSTANTS:
BEGIN OF c_id,
object_type TYPE string VALUE 'object_type',
object_name TYPE string VALUE 'object_name',
END OF c_id.
CONSTANTS:
BEGIN OF c_event,
go_back TYPE string VALUE 'go-back',
export TYPE string VALUE 'export',
choose_object_type TYPE string VALUE 'choose-object-type',
END OF c_event.
DATA mo_form TYPE REF TO zcl_abapgit_html_form.
DATA mo_form_data TYPE REF TO zcl_abapgit_string_map.
DATA mo_validation_log TYPE REF TO zcl_abapgit_string_map.
DATA mo_form_util TYPE REF TO zcl_abapgit_html_form_utils.
METHODS get_form_schema
RETURNING
VALUE(ro_form) TYPE REF TO zcl_abapgit_html_form.
METHODS export_object
RAISING
zcx_abapgit_exception.
ENDCLASS.
CLASS zcl_abapgit_gui_page_ex_object IMPLEMENTATION.
METHOD constructor.
super->constructor( ).
CREATE OBJECT mo_validation_log.
CREATE OBJECT mo_form_data.
mo_form = get_form_schema( ).
mo_form_util = zcl_abapgit_html_form_utils=>create( mo_form ).
ENDMETHOD.
METHOD create.
DATA lo_component TYPE REF TO zcl_abapgit_gui_page_ex_object.
CREATE OBJECT lo_component.
ri_page = zcl_abapgit_gui_page_hoc=>create(
iv_page_title = 'Export Object to Files'
ii_child_component = lo_component ).
ENDMETHOD.
METHOD get_form_schema.
ro_form = zcl_abapgit_html_form=>create( iv_form_id = 'export-object-to-files' ).
ro_form->text(
iv_label = 'Object Type'
iv_name = c_id-object_type
iv_required = abap_true
iv_upper_case = abap_true
iv_side_action = c_event-choose_object_type
)->text(
iv_label = 'Object Name'
iv_name = c_id-object_name
iv_required = abap_true
iv_upper_case = abap_true
)->command(
iv_label = 'Export'
iv_cmd_type = zif_abapgit_html_form=>c_cmd_type-input_main
iv_action = c_event-export
)->command(
iv_label = 'Back'
iv_action = c_event-go_back ).
ENDMETHOD.
METHOD zif_abapgit_gui_event_handler~on_event.
mo_form_data = mo_form_util->normalize( ii_event->form_data( ) ).
CASE ii_event->mv_action.
WHEN c_event-go_back.
rs_handled-state = zcl_abapgit_gui=>c_event_state-go_back.
WHEN c_event-export.
export_object( ).
MESSAGE 'Object successfully exported' TYPE 'S'.
rs_handled-state = zcl_abapgit_gui=>c_event_state-go_back.
WHEN c_event-choose_object_type.
mo_form_data->set(
iv_key = 'object_type'
iv_val = zcl_abapgit_ui_factory=>get_popups( )->popup_search_help( 'TADIR-OBJECT' ) ).
IF mo_form_data->get( 'object_type' ) IS NOT INITIAL.
rs_handled-state = zcl_abapgit_gui=>c_event_state-re_render.
ELSE.
rs_handled-state = zcl_abapgit_gui=>c_event_state-no_more_act.
ENDIF.
ENDCASE.
ENDMETHOD.
METHOD export_object.
DATA lv_object_type TYPE trobjtype.
DATA lv_object_name TYPE sobj_name.
lv_object_type = mo_form_data->get( c_id-object_type ).
lv_object_name = mo_form_data->get( c_id-object_name ).
zcl_abapgit_zip=>export_object(
iv_object_type = lv_object_type
iv_object_name = lv_object_name ).
ENDMETHOD.
METHOD zif_abapgit_gui_renderable~render.
gui_services( )->register_event_handler( me ).
CREATE OBJECT ri_html TYPE zcl_abapgit_html.
ri_html->add( mo_form->render(
io_values = mo_form_data
io_validation_log = mo_validation_log ) ).
ENDMETHOD.
ENDCLASS.

View 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>ZCL_ABAPGIT_GUI_PAGE_EX_OBJECT</CLSNAME>
<LANGU>E</LANGU>
<DESCRIPT>Export Object</DESCRIPT>
<STATE>1</STATE>
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>
<UNICODE>X</UNICODE>
</VSEOCLASS>
</asx:values>
</asx:abap>
</abapGit>

View File

@ -141,7 +141,7 @@ ENDCLASS.
CLASS ZCL_ABAPGIT_GUI_ROUTER IMPLEMENTATION.
CLASS zcl_abapgit_gui_router IMPLEMENTATION.
METHOD abapgit_services_actions.
@ -560,9 +560,6 @@ CLASS ZCL_ABAPGIT_GUI_ROUTER IMPLEMENTATION.
METHOD other_utilities.
CASE ii_event->mv_action.
WHEN zif_abapgit_definitions=>c_action-changed_by.
zcl_abapgit_services_basis=>test_changed_by( ).
rs_handled-state = zcl_abapgit_gui=>c_event_state-no_more_act.
WHEN zif_abapgit_definitions=>c_action-performance_test.
zcl_abapgit_services_basis=>run_performance_test( ).
rs_handled-state = zcl_abapgit_gui=>c_event_state-no_more_act.
@ -802,8 +799,8 @@ CLASS ZCL_ABAPGIT_GUI_ROUTER IMPLEMENTATION.
zcl_abapgit_transport_mass=>run( ).
rs_handled-state = zcl_abapgit_gui=>c_event_state-no_more_act.
WHEN zif_abapgit_definitions=>c_action-zip_object. " Export object as ZIP
zcl_abapgit_zip=>export_object( ).
rs_handled-state = zcl_abapgit_gui=>c_event_state-no_more_act.
rs_handled-page = zcl_abapgit_gui_page_ex_object=>create( ).
rs_handled-state = zcl_abapgit_gui=>c_event_state-new_page.
ENDCASE.
ENDMETHOD.

View File

@ -50,9 +50,6 @@ CLASS ltcl_popups_mock IMPLEMENTATION.
METHOD zif_abapgit_popups~popup_folder_logic.
ENDMETHOD.
METHOD zif_abapgit_popups~popup_object.
ENDMETHOD.
METHOD zif_abapgit_popups~popup_package_export.
ENDMETHOD.

View File

@ -721,38 +721,6 @@ CLASS zcl_abapgit_popups IMPLEMENTATION.
ENDMETHOD.
METHOD zif_abapgit_popups~popup_object.
DATA: lt_fields TYPE TABLE OF sval.
DATA: lv_object_type TYPE spo_value.
DATA: lv_object_name TYPE spo_value.
CLEAR: rs_tadir-object, rs_tadir-obj_name.
add_field( EXPORTING iv_tabname = 'TADIR'
iv_fieldname = 'OBJECT'
iv_fieldtext = 'Type'
CHANGING ct_fields = lt_fields ).
add_field( EXPORTING iv_tabname = 'TADIR'
iv_fieldname = 'OBJ_NAME'
iv_fieldtext = 'Name'
CHANGING ct_fields = lt_fields ).
_popup_3_get_values( EXPORTING iv_popup_title = 'Object'
iv_no_value_check = abap_true
IMPORTING ev_value_1 = lv_object_type
ev_value_2 = lv_object_name
CHANGING ct_fields = lt_fields ).
rs_tadir = zcl_abapgit_factory=>get_tadir( )->read_single(
iv_object = to_upper( lv_object_type )
iv_obj_name = to_upper( lv_object_name ) ).
ENDMETHOD.
METHOD zif_abapgit_popups~popup_package_export.
DATA: lt_fields TYPE TABLE OF sval.

View File

@ -11,9 +11,6 @@ CLASS zcl_abapgit_services_basis DEFINITION
VALUE(rv_package) TYPE devclass
RAISING
zcx_abapgit_exception.
CLASS-METHODS test_changed_by
RAISING
zcx_abapgit_exception.
CLASS-METHODS run_performance_test
RAISING
zcx_abapgit_exception.
@ -196,25 +193,4 @@ CLASS zcl_abapgit_services_basis IMPLEMENTATION.
ix_previous = lx_salv_error ).
ENDTRY.
ENDMETHOD.
METHOD test_changed_by.
DATA ls_tadir TYPE zif_abapgit_definitions=>ty_tadir.
DATA ls_item TYPE zif_abapgit_definitions=>ty_item.
DATA lv_user TYPE xubname.
ls_tadir = zcl_abapgit_ui_factory=>get_popups( )->popup_object( ).
IF ls_tadir IS INITIAL.
RETURN.
ENDIF.
ls_item-obj_type = ls_tadir-object.
ls_item-obj_name = ls_tadir-obj_name.
lv_user = zcl_abapgit_objects=>changed_by( ls_item ).
MESSAGE lv_user TYPE 'S'.
ENDMETHOD.
ENDCLASS.

View File

@ -350,10 +350,6 @@ CLASS ltcl_popups_mock IMPLEMENTATION.
ENDMETHOD.
METHOD zif_abapgit_popups~popup_object.
ENDMETHOD.
METHOD zif_abapgit_popups~popup_package_export.
ENDMETHOD.

View File

@ -44,10 +44,6 @@ CLASS ltcl_abapgit_popups_mock IMPLEMENTATION.
ENDMETHOD.
METHOD zif_abapgit_popups~popup_object.
ENDMETHOD.
METHOD zif_abapgit_popups~popup_package_export.
ENDMETHOD.

View File

@ -37,11 +37,6 @@ INTERFACE zif_abapgit_popups
VALUE(rv_folder_logic) TYPE string
RAISING
zcx_abapgit_exception .
METHODS popup_object
RETURNING
VALUE(rs_tadir) TYPE zif_abapgit_definitions=>ty_tadir
RAISING
zcx_abapgit_exception .
METHODS create_branch_popup
IMPORTING
!iv_source_branch_name TYPE string

View File

@ -23,8 +23,11 @@ CLASS zcl_abapgit_zip DEFINITION
RAISING
zcx_abapgit_exception .
CLASS-METHODS export_object
IMPORTING
iv_object_type TYPE trobjtype
iv_object_name TYPE sobj_name
RAISING
zcx_abapgit_exception .
zcx_abapgit_exception.
CLASS-METHODS export_package
EXPORTING
!ev_xstr TYPE xstring
@ -73,7 +76,7 @@ ENDCLASS.
CLASS ZCL_ABAPGIT_ZIP IMPLEMENTATION.
CLASS zcl_abapgit_zip IMPLEMENTATION.
METHOD encode_files.
@ -146,24 +149,22 @@ CLASS ZCL_ABAPGIT_ZIP IMPLEMENTATION.
FIELD-SYMBOLS: <ls_file> LIKE LINE OF ls_files_item-files.
WHILE ls_tadir IS INITIAL.
ls_tadir = zcl_abapgit_factory=>get_tadir( )->read_single(
iv_object = iv_object_type
iv_obj_name = iv_object_name ).
ls_tadir = zcl_abapgit_ui_factory=>get_popups( )->popup_object( ).
IF ls_tadir IS INITIAL.
MESSAGE 'Object couldn''t be found' TYPE 'S' DISPLAY LIKE 'E'.
ENDIF.
ENDWHILE.
IF ls_tadir IS INITIAL.
zcx_abapgit_exception=>raise( 'Object could not be found' ).
ENDIF.
ls_files_item-item-obj_type = ls_tadir-object.
ls_files_item-item-obj_name = ls_tadir-obj_name.
ls_files_item = zcl_abapgit_objects=>serialize( is_item = ls_files_item-item
ls_files_item = zcl_abapgit_objects=>serialize( is_item = ls_files_item-item
iv_language = sy-langu ).
IF lines( ls_files_item-files ) = 0.
MESSAGE 'Empty' TYPE 'S'.
RETURN.
zcx_abapgit_exception=>raise( 'Empty' ).
ENDIF.
cl_gui_frontend_services=>directory_browse(
@ -172,17 +173,15 @@ CLASS ZCL_ABAPGIT_ZIP IMPLEMENTATION.
CHANGING
selected_folder = lv_folder ).
IF lv_folder IS INITIAL.
RETURN.
RAISE EXCEPTION TYPE zcx_abapgit_cancel.
ENDIF.
gv_prev = lv_folder.
cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_sep ).
LOOP AT ls_files_item-files ASSIGNING <ls_file>.
CONCATENATE lv_folder lv_sep <ls_file>-filename INTO lv_fullpath.
save_binstring_to_localfile( iv_filename = lv_fullpath
lv_fullpath = |{ lv_folder }{ lv_sep }{ <ls_file>-filename }|.
save_binstring_to_localfile( iv_filename = lv_fullpath
iv_binstring = <ls_file>-data ).
ENDLOOP.

View File

@ -482,7 +482,6 @@ INTERFACE zif_abapgit_definitions
change_order_by TYPE string VALUE 'change_order_by',
goto_message TYPE string VALUE 'goto_message',
direction TYPE string VALUE 'direction',
changed_by TYPE string VALUE 'changed_by',
documentation TYPE string VALUE 'documentation',
changelog TYPE string VALUE 'changelog',
END OF c_action.