abapGit/src/zabapgit_forms.prog.abap
Frederik Hudák 777445002a Revert behavior of second back button (#2779)
* Revert behavior of second back button

* Leave clearing of stack on go home
2019-07-10 21:28:20 -07:00

201 lines
5.8 KiB
ABAP

*&---------------------------------------------------------------------*
*& Include ZABAPGIT_FORMS
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form run
*&---------------------------------------------------------------------*
FORM run.
DATA: lx_exception TYPE REF TO zcx_abapgit_exception,
lv_ind TYPE t000-ccnocliind.
TRY.
zcl_abapgit_migrations=>run( ).
PERFORM open_gui.
CATCH zcx_abapgit_exception INTO lx_exception.
MESSAGE lx_exception TYPE 'E'.
ENDTRY.
ENDFORM. "run
FORM open_gui RAISING zcx_abapgit_exception.
IF sy-batch = abap_true.
zcl_abapgit_background=>run( ).
ELSE.
zcl_abapgit_services_abapgit=>prepare_gui_startup( ).
zcl_abapgit_ui_factory=>get_gui( )->go_home( ).
CALL SELECTION-SCREEN 1001. " trigger screen
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form branch_popup
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->TT_FIELDS text
* -->PV_CODE text
* -->CS_ERROR text
* -->CV_SHOW_POPUP text
* -->RAISING text
* -->zcx_abapgit_exception text
* -->##CALLED text
* -->##NEEDED text
*----------------------------------------------------------------------*
FORM branch_popup TABLES tt_fields TYPE zif_abapgit_definitions=>ty_sval_tt
USING pv_code TYPE clike
CHANGING cs_error TYPE svale
cv_show_popup TYPE c
RAISING zcx_abapgit_exception ##called ##needed.
* called dynamically from function module POPUP_GET_VALUES_USER_BUTTONS
DATA: lx_error TYPE REF TO zcx_abapgit_exception,
li_popups TYPE REF TO zif_abapgit_popups.
TRY.
li_popups = zcl_abapgit_ui_factory=>get_popups( ).
li_popups->branch_popup_callback(
EXPORTING
iv_code = pv_code
CHANGING
ct_fields = tt_fields[]
cs_error = cs_error
cv_show_popup = cv_show_popup ).
CATCH zcx_abapgit_exception INTO lx_error.
MESSAGE lx_error TYPE 'S' DISPLAY LIKE 'E'.
ENDTRY.
ENDFORM. "branch_popup
FORM package_popup TABLES tt_fields TYPE zif_abapgit_definitions=>ty_sval_tt
USING pv_code TYPE clike
CHANGING cs_error TYPE svale
cv_show_popup TYPE c
RAISING zcx_abapgit_exception ##called ##needed.
* called dynamically from function module POPUP_GET_VALUES_USER_BUTTONS
DATA: lx_error TYPE REF TO zcx_abapgit_exception,
li_popups TYPE REF TO zif_abapgit_popups.
TRY.
li_popups = zcl_abapgit_ui_factory=>get_popups( ).
li_popups->package_popup_callback(
EXPORTING
iv_code = pv_code
CHANGING
ct_fields = tt_fields[]
cs_error = cs_error
cv_show_popup = cv_show_popup ).
CATCH zcx_abapgit_exception INTO lx_error.
MESSAGE lx_error TYPE 'S' DISPLAY LIKE 'E'.
ENDTRY.
ENDFORM. "package_popup
FORM output.
DATA: lt_ucomm TYPE TABLE OF sy-ucomm.
PERFORM set_pf_status IN PROGRAM rsdbrunt IF FOUND.
APPEND 'CRET' TO lt_ucomm. "Button Execute
APPEND 'SPOS' TO lt_ucomm. "Button Save
CALL FUNCTION 'RS_SET_SELSCREEN_STATUS'
EXPORTING
p_status = sy-pfkey
TABLES
p_exclude = lt_ucomm.
ENDFORM.
FORM exit RAISING zcx_abapgit_exception.
CASE sy-ucomm.
WHEN 'CBAC'. "Back
IF zcl_abapgit_ui_factory=>get_gui( )->back( ) = abap_true. " end of stack
zcl_abapgit_ui_factory=>get_gui( )->free( ). " Graceful shutdown
ELSE.
LEAVE TO SCREEN 1001.
ENDIF.
ENDCASE.
ENDFORM.
FORM password_popup
USING
iv_repo_url TYPE string
CHANGING
cv_user TYPE string
cv_pass TYPE string.
lcl_password_dialog=>popup(
EXPORTING
iv_repo_url = iv_repo_url
CHANGING
cv_user = cv_user
cv_pass = cv_pass ).
ENDFORM.
FORM remove_toolbar USING pv_dynnr TYPE char4.
DATA: ls_header TYPE rpy_dyhead,
lt_containers TYPE dycatt_tab,
lt_fields_to_containers TYPE dyfatc_tab,
lt_flow_logic TYPE swydyflow.
CALL FUNCTION 'RPY_DYNPRO_READ'
EXPORTING
progname = sy-cprog
dynnr = pv_dynnr
IMPORTING
header = ls_header
TABLES
containers = lt_containers
fields_to_containers = lt_fields_to_containers
flow_logic = lt_flow_logic
EXCEPTIONS
cancelled = 1
not_found = 2
permission_error = 3
OTHERS = 4.
IF sy-subrc IS NOT INITIAL.
RETURN. " Ignore errors, just exit
ENDIF.
IF ls_header-no_toolbar = abap_true.
RETURN. " No change required
ENDIF.
ls_header-no_toolbar = abap_true.
CALL FUNCTION 'RPY_DYNPRO_INSERT'
EXPORTING
header = ls_header
suppress_exist_checks = abap_true
TABLES
containers = lt_containers
fields_to_containers = lt_fields_to_containers
flow_logic = lt_flow_logic
EXCEPTIONS
cancelled = 1
already_exists = 2
program_not_exists = 3
not_executed = 4
missing_required_field = 5
illegal_field_value = 6
field_not_allowed = 7
not_generated = 8
illegal_field_position = 9
OTHERS = 10.
IF sy-subrc <> 2 AND sy-subrc <> 0.
RETURN. " Ignore errors, just exit
ENDIF.
ENDFORM.