From 2db16f281b2dc07a1b3f5fa683961d3eaa9de592 Mon Sep 17 00:00:00 2001 From: sbcgua Date: Wed, 21 Sep 2016 20:29:18 +0300 Subject: [PATCH] playground page userexit #350 --- src/zabapgit.prog.abap | 1 + src/zabapgit_definitions.prog.abap | 1 + src/zabapgit_gui_router.prog.abap | 25 ++++++++++++++++++ src/zabapgit_page_main.prog.abap | 1 + src/zabapgit_popups.prog.abap | 41 ++++++++++++++++++++++++++++++ 5 files changed, 69 insertions(+) diff --git a/src/zabapgit.prog.abap b/src/zabapgit.prog.abap index 4f41d8296..d407ca08d 100644 --- a/src/zabapgit.prog.abap +++ b/src/zabapgit.prog.abap @@ -68,6 +68,7 @@ INCLUDE zabapgit_transport. INCLUDE zabapgit_services. " All services here INCLUDE zabapgit_gui_pages. " All GUI pages here +INCLUDE zabapgit_gui_pages_userexit IF FOUND. INCLUDE zabapgit_gui_router. INCLUDE zabapgit_gui. diff --git a/src/zabapgit_definitions.prog.abap b/src/zabapgit_definitions.prog.abap index 3fd1dc3ca..48ae7ad22 100644 --- a/src/zabapgit_definitions.prog.abap +++ b/src/zabapgit_definitions.prog.abap @@ -177,5 +177,6 @@ CONSTANTS: BEGIN OF gc_action, go_stage TYPE string VALUE 'go_stage', go_commit TYPE string VALUE 'go_commit', go_branch_overview TYPE string VALUE 'go_branch_overview', + go_playground TYPE string VALUE 'go_playground', jump TYPE string VALUE 'jump', END OF gc_action. \ No newline at end of file diff --git a/src/zabapgit_gui_router.prog.abap b/src/zabapgit_gui_router.prog.abap index cdc8f6d1e..e94fe1bb6 100644 --- a/src/zabapgit_gui_router.prog.abap +++ b/src/zabapgit_gui_router.prog.abap @@ -50,6 +50,10 @@ CLASS lcl_gui_router DEFINITION FINAL. RETURNING VALUE(ri_page) TYPE REF TO lif_gui_page RAISING lcx_exception. + METHODS get_page_playground + RETURNING VALUE(ri_page) TYPE REF TO lif_gui_page + RAISING lcx_exception lcx_cancel. + ENDCLASS. *----------------------------------------------------------------------* @@ -88,6 +92,9 @@ CLASS lcl_gui_router IMPLEMENTATION. WHEN gc_action-go_branch_overview. " Go repo branch overview ei_page = get_page_branch_overview( iv_getdata ). ev_state = gc_event_state-new_page. + WHEN gc_action-go_playground. " Create playground page + ei_page = get_page_playground( ). + ev_state = gc_event_state-new_page. " SAP GUI actions WHEN gc_action-jump. @@ -286,4 +293,22 @@ CLASS lcl_gui_router IMPLEMENTATION. ENDMETHOD. "get_page_background + METHOD get_page_playground. + DATA: lv_class_name TYPE string, + lv_cancel TYPE abap_bool. + + lcl_popups=>run_page_class_popup( IMPORTING ev_name = lv_class_name + ev_cancel = lv_cancel ). + IF lv_cancel = abap_true. + RAISE EXCEPTION TYPE lcx_cancel. + ENDIF. + + TRY. + CREATE OBJECT ri_page TYPE (lv_class_name). + CATCH cx_sy_create_object_error. + lcx_exception=>raise( |Cannot create page class { lv_class_name }| ). + ENDTRY. + + ENDMETHOD. "get_page_playground + ENDCLASS. " lcl_gui_router \ No newline at end of file diff --git a/src/zabapgit_page_main.prog.abap b/src/zabapgit_page_main.prog.abap index 73ec0fbfc..690a09725 100644 --- a/src/zabapgit_page_main.prog.abap +++ b/src/zabapgit_page_main.prog.abap @@ -144,6 +144,7 @@ CLASS lcl_gui_page_main IMPLEMENTATION. lo_betasub->add( iv_txt = 'Database util' iv_act = gc_action-go_db ) ##NO_TEXT. lo_betasub->add( iv_txt = 'Package to zip' iv_act = gc_action-zip_package ) ##NO_TEXT. lo_betasub->add( iv_txt = 'Transport to zip' iv_act = gc_action-zip_transport ) ##NO_TEXT. + lo_betasub->add( iv_txt = 'Page playground' iv_act = gc_action-go_playground ) ##NO_TEXT. ro_menu->add( iv_txt = 'Clone' iv_act = gc_action-repo_clone ) ##NO_TEXT. ro_menu->add( iv_txt = 'Explore' iv_act = gc_action-go_explore ) ##NO_TEXT. diff --git a/src/zabapgit_popups.prog.abap b/src/zabapgit_popups.prog.abap index df16c6a11..a5a1cbf63 100644 --- a/src/zabapgit_popups.prog.abap +++ b/src/zabapgit_popups.prog.abap @@ -23,6 +23,10 @@ CLASS lcl_popups DEFINITION. EXPORTING ev_name TYPE string ev_cancel TYPE abap_bool RAISING lcx_exception, + run_page_class_popup + EXPORTING ev_name TYPE string + ev_cancel TYPE abap_bool + RAISING lcx_exception, repo_new_offline RETURNING VALUE(rs_popup) TYPE ty_popup RAISING lcx_exception, @@ -142,6 +146,43 @@ CLASS lcl_popups IMPLEMENTATION. ENDMETHOD. + METHOD run_page_class_popup. + + DATA: lv_answer TYPE c LENGTH 1, + lt_fields TYPE TABLE OF sval. + + FIELD-SYMBOLS: LIKE LINE OF lt_fields. + + + CLEAR: ev_name, ev_cancel. + +* TAB FLD LABEL DEF ATTR + _add_dialog_fld 'TEXTL' 'LINE' 'Name' 'lcl_gui_page_' ''. + + CALL FUNCTION 'POPUP_GET_VALUES' + EXPORTING + popup_title = 'Run page manually' + IMPORTING + returncode = lv_answer + TABLES + fields = lt_fields + EXCEPTIONS + error_in_fields = 1 + OTHERS = 2 ##NO_TEXT. + IF sy-subrc <> 0. + lcx_exception=>raise( 'error from POPUP_GET_VALUES' ). + ENDIF. + + IF lv_answer = 'A'. + ev_cancel = abap_true. + ELSE. + READ TABLE lt_fields INDEX 1 ASSIGNING . + ASSERT sy-subrc = 0. + ev_name = to_upper( -value ). + ENDIF. + + ENDMETHOD. "run_page_class_popup + METHOD repo_new_offline. DATA: lv_returncode TYPE c,