abapGit/src/zabapgit_forms.prog.abap
2016-07-02 12:43:40 +00:00

173 lines
5.1 KiB
ABAP

*&---------------------------------------------------------------------*
*& Include ZABAPGIT_FORMS
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form run
*&---------------------------------------------------------------------*
FORM run.
DATA: lx_exception TYPE REF TO lcx_exception,
lv_ind TYPE t000-ccnocliind.
SELECT SINGLE ccnocliind FROM t000 INTO lv_ind
WHERE mandt = sy-mandt.
IF sy-subrc = 0
AND lv_ind <> ' '
AND lv_ind <> '1'. " check changes allowed
WRITE: / 'Wrong client, changes to repository objects not allowed'. "#EC NOTEXT
RETURN.
ENDIF.
TRY.
lcl_persistence_migrate=>run( ).
lcl_app=>run( ).
CATCH lcx_exception INTO lx_exception.
MESSAGE lx_exception->mv_text TYPE 'E'.
ENDTRY.
ENDFORM. "run
*&---------------------------------------------------------------------*
*& Form branch_popup
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->TT_FIELDS text
* -->PV_CODE text
* -->CS_ERROR text
* -->CV_SHOW_POPUP text
* -->RAISING text
* -->LCX_EXCEPTION text
* -->##CALLED text
* -->##NEEDED text
*----------------------------------------------------------------------*
FORM branch_popup TABLES tt_fields STRUCTURE sval
USING pv_code TYPE clike
CHANGING cs_error TYPE svale
cv_show_popup TYPE c
RAISING lcx_exception ##called ##needed.
* called dynamically from function module POPUP_GET_VALUES_USER_BUTTONS
DATA: lv_url TYPE string,
lv_answer TYPE c,
lx_error TYPE REF TO lcx_exception,
lt_selection TYPE TABLE OF spopli,
ls_package_data TYPE scompkdtln,
lt_branches TYPE lcl_git_transport=>ty_branch_list_tt.
FIELD-SYMBOLS: <ls_fbranch> LIKE LINE OF tt_fields,
<ls_branch> LIKE LINE OF lt_branches,
<ls_sel> LIKE LINE OF lt_selection,
<ls_furl> LIKE LINE OF tt_fields.
CLEAR cs_error.
IF pv_code = 'COD1'.
cv_show_popup = abap_true.
READ TABLE tt_fields ASSIGNING <ls_furl> WITH KEY tabname = 'ABAPTXT255'.
IF sy-subrc <> 0 OR <ls_furl>-value IS INITIAL.
MESSAGE 'Fill URL' TYPE 'S' DISPLAY LIKE 'E'. "#EC NOTEXT
RETURN.
ENDIF.
lv_url = <ls_furl>-value.
TRY.
lt_branches = lcl_git_transport=>branches( lv_url ).
CATCH lcx_exception INTO lx_error.
MESSAGE lx_error TYPE 'S' DISPLAY LIKE 'E'.
RETURN.
ENDTRY.
LOOP AT lt_branches ASSIGNING <ls_branch>.
APPEND INITIAL LINE TO lt_selection ASSIGNING <ls_sel>.
<ls_sel>-varoption = <ls_branch>-name.
ENDLOOP.
CALL FUNCTION 'POPUP_TO_DECIDE_LIST'
EXPORTING
textline1 = 'Select branch'
titel = 'Select branch'
IMPORTING
answer = lv_answer
TABLES
t_spopli = lt_selection
EXCEPTIONS
not_enough_answers = 1
too_much_answers = 2
too_much_marks = 3
OTHERS = 4. "#EC NOTEXT
IF sy-subrc <> 0.
_raise 'Error from POPUP_TO_DECIDE_LIST'.
ENDIF.
IF lv_answer = 'A'. " cancel
RETURN.
ENDIF.
READ TABLE lt_selection ASSIGNING <ls_sel> WITH KEY selflag = abap_true.
ASSERT sy-subrc = 0.
READ TABLE tt_fields ASSIGNING <ls_fbranch> WITH KEY tabname = 'TEXTL'.
ASSERT sy-subrc = 0.
<ls_fbranch>-value = <ls_sel>-varoption.
ELSEIF pv_code = 'COD2'.
cv_show_popup = abap_true.
CALL FUNCTION 'FUNCTION_EXISTS'
EXPORTING
funcname = 'PB_POPUP_PACKAGE_CREATE'
EXCEPTIONS
function_not_exist = 1
OTHERS = 2.
IF sy-subrc = 1.
* looks like the function module used does not exist on all
* versions since 702, so show an error
_raise 'Function module PB_POPUP_PACKAGE_CREATE does not exist'.
ENDIF.
CALL FUNCTION 'PB_POPUP_PACKAGE_CREATE'
CHANGING
p_object_data = ls_package_data
EXCEPTIONS
action_cancelled = 1.
IF sy-subrc = 1.
RETURN.
ENDIF.
lcl_sap_package=>create( ls_package_data ).
COMMIT WORK.
READ TABLE tt_fields ASSIGNING <ls_fbranch> WITH KEY tabname = 'TDEVC'.
ASSERT sy-subrc = 0.
<ls_fbranch>-value = ls_package_data-devclass.
ENDIF.
ENDFORM. "branch_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
CALL FUNCTION 'RS_SET_SELSCREEN_STATUS'
EXPORTING
p_status = sy-pfkey
TABLES
p_exclude = lt_ucomm.
ENDFORM.
FORM exit RAISING lcx_exception.
CASE sy-ucomm.
WHEN 'CBAC'. "Back
IF lcl_app=>gui( )->back( ) IS INITIAL.
LEAVE TO SCREEN 1001.
ENDIF.
ENDCASE.
ENDFORM.