mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 12:20:51 +08:00
#303 pass dialog reworked, thanks to @sshlapak
This commit is contained in:
parent
f1fceb2021
commit
1d92b82736
|
@ -33,6 +33,8 @@ SELECTION-SCREEN BEGIN OF SCREEN 1001.
|
|||
* dummy for triggering screen
|
||||
SELECTION-SCREEN END OF SCREEN 1001.
|
||||
|
||||
INCLUDE zabapgit_password_dialog. " !!! Contains SELECTION SCREEN
|
||||
|
||||
DEFINE _add.
|
||||
ro_html->add( &1 ) ##NO_TEXT.
|
||||
END-OF-DEFINITION.
|
||||
|
@ -125,13 +127,25 @@ INCLUDE zabapgit_app_impl.
|
|||
INCLUDE zabapgit_unit_test.
|
||||
INCLUDE zabapgit_forms.
|
||||
|
||||
INITIALIZATION.
|
||||
lcl_password_dialog=>on_screen_init( ).
|
||||
|
||||
START-OF-SELECTION.
|
||||
PERFORM run.
|
||||
|
||||
* Hide Execute button from screen
|
||||
AT SELECTION-SCREEN OUTPUT.
|
||||
PERFORM output.
|
||||
IF sy-dynnr = lcl_password_dialog=>DYNNR.
|
||||
lcl_password_dialog=>on_screen_output( ).
|
||||
ELSE.
|
||||
PERFORM output.
|
||||
ENDIF.
|
||||
|
||||
* SAP back command re-direction
|
||||
AT SELECTION-SCREEN ON EXIT-COMMAND.
|
||||
PERFORM exit.
|
||||
|
||||
AT SELECTION-SCREEN.
|
||||
IF sy-dynnr = lcl_password_dialog=>DYNNR.
|
||||
lcl_password_dialog=>on_screen_event( sscrfields-ucomm ).
|
||||
ENDIF.
|
|
@ -113,12 +113,6 @@ CLASS lcl_git_transport DEFINITION FINAL.
|
|||
iv_url TYPE string
|
||||
RAISING lcx_exception.
|
||||
|
||||
CLASS-METHODS do_password_popup
|
||||
IMPORTING iv_repo_url TYPE string
|
||||
EXPORTING ev_user TYPE string
|
||||
ev_pass TYPE string
|
||||
RAISING lcx_exception.
|
||||
|
||||
ENDCLASS. "lcl_transport DEFINITION
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
|
@ -316,12 +310,12 @@ CLASS lcl_git_transport IMPLEMENTATION.
|
|||
lv_user TYPE string,
|
||||
lv_pass TYPE string.
|
||||
|
||||
do_password_popup(
|
||||
lcl_password_dialog=>popup(
|
||||
EXPORTING
|
||||
iv_repo_url = iv_url
|
||||
IMPORTING
|
||||
ev_user = lv_user
|
||||
ev_pass = lv_pass ).
|
||||
CHANGING
|
||||
cv_user = lv_user
|
||||
cv_pass = lv_pass ).
|
||||
|
||||
IF lv_user IS INITIAL.
|
||||
lcx_exception=>raise( 'HTTP 401, unauthorized' ).
|
||||
|
@ -333,56 +327,6 @@ CLASS lcl_git_transport IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD. "acquire_login_details
|
||||
|
||||
METHOD do_password_popup.
|
||||
DATA: lv_returncode TYPE c,
|
||||
lt_fields TYPE TABLE OF sval.
|
||||
|
||||
FIELD-SYMBOLS: <ls_field> LIKE LINE OF lt_fields.
|
||||
|
||||
* REFACTOR
|
||||
DEFINE _add_dialog_fld.
|
||||
APPEND INITIAL LINE TO lt_fields ASSIGNING <ls_field>.
|
||||
<ls_field>-tabname = &1. "#EC NOTEXT
|
||||
<ls_field>-fieldname = &2. "#EC NOTEXT
|
||||
<ls_field>-fieldtext = &3. "#EC NOTEXT
|
||||
<ls_field>-value = &4. "#EC NOTEXT
|
||||
<ls_field>-field_attr = &5. "#EC NOTEXT
|
||||
END-OF-DEFINITION.
|
||||
* REFACTOR
|
||||
|
||||
" TAB FLD LABEL DEF ATTR
|
||||
_add_dialog_fld 'ADR12' 'URI_SRCH' 'Repo URL' iv_repo_url '05'.
|
||||
_add_dialog_fld 'ADRC' 'NAME1' 'Username' '' ''.
|
||||
_add_dialog_fld 'ADRC' 'NAME2' 'Pass' '' ''.
|
||||
|
||||
CALL FUNCTION 'POPUP_GET_VALUES'
|
||||
EXPORTING
|
||||
popup_title = 'Repository login'
|
||||
IMPORTING
|
||||
returncode = lv_returncode
|
||||
TABLES
|
||||
fields = lt_fields
|
||||
EXCEPTIONS
|
||||
error_in_fields = 1
|
||||
OTHERS = 2. "#EC NOTEXT
|
||||
IF sy-subrc <> 0.
|
||||
lcx_exception=>raise( 'Error from POPUP_GET_VALUES' ).
|
||||
ENDIF.
|
||||
|
||||
IF lv_returncode = 'A'.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
READ TABLE lt_fields INDEX 2 ASSIGNING <ls_field>.
|
||||
ASSERT sy-subrc = 0.
|
||||
ev_user = <ls_field>-value.
|
||||
|
||||
READ TABLE lt_fields INDEX 3 ASSIGNING <ls_field>.
|
||||
ASSERT sy-subrc = 0.
|
||||
ev_pass = <ls_field>-value.
|
||||
|
||||
ENDMETHOD. "do_password_popup
|
||||
|
||||
METHOD parse_branch_list.
|
||||
|
||||
DATA: lt_result TYPE TABLE OF string,
|
||||
|
|
122
src/zabapgit_password_dialog.prog.abap
Normal file
122
src/zabapgit_password_dialog.prog.abap
Normal file
|
@ -0,0 +1,122 @@
|
|||
*&---------------------------------------------------------------------*
|
||||
*& Include ZABAPGIT_PASSWORD_DIALOG
|
||||
*&---------------------------------------------------------------------*
|
||||
TABLES sscrfields.
|
||||
|
||||
SELECTION-SCREEN BEGIN OF SCREEN 1002 TITLE s_title.
|
||||
SELECTION-SCREEN BEGIN OF LINE.
|
||||
SELECTION-SCREEN COMMENT 1(10) s_url FOR FIELD p_url.
|
||||
PARAMETER: p_url TYPE string LOWER CASE VISIBLE LENGTH 40.
|
||||
SELECTION-SCREEN END OF LINE.
|
||||
SELECTION-SCREEN BEGIN OF LINE.
|
||||
SELECTION-SCREEN COMMENT 1(10) s_user FOR FIELD p_user.
|
||||
PARAMETER: p_user TYPE string LOWER CASE VISIBLE LENGTH 40.
|
||||
SELECTION-SCREEN END OF LINE.
|
||||
SELECTION-SCREEN BEGIN OF LINE.
|
||||
SELECTION-SCREEN COMMENT 1(10) s_pass FOR FIELD p_pass.
|
||||
PARAMETER: p_pass TYPE string LOWER CASE VISIBLE LENGTH 40.
|
||||
SELECTION-SCREEN END OF LINE.
|
||||
SELECTION-SCREEN END OF SCREEN 1002.
|
||||
|
||||
*-----------------------------------------------------------------------
|
||||
* LCL_PASSWORD_DIALOG
|
||||
*-----------------------------------------------------------------------
|
||||
CLASS lcl_password_dialog DEFINITION.
|
||||
|
||||
PUBLIC SECTION.
|
||||
CONSTANTS DYNNR TYPE char4 VALUE '1002'.
|
||||
|
||||
CLASS-METHODS popup
|
||||
IMPORTING
|
||||
iv_repo_url TYPE string
|
||||
CHANGING
|
||||
cv_user TYPE string
|
||||
cv_pass TYPE string.
|
||||
|
||||
CLASS-METHODS on_screen_init.
|
||||
CLASS-METHODS on_screen_output.
|
||||
CLASS-METHODS on_screen_event
|
||||
IMPORTING
|
||||
iv_ucomm TYPE syucomm.
|
||||
|
||||
PRIVATE SECTION.
|
||||
CLASS-DATA mv_confirm TYPE abap_bool.
|
||||
|
||||
ENDCLASS. "lcl_password_dialog DEFINITION
|
||||
|
||||
CLASS lcl_password_dialog IMPLEMENTATION.
|
||||
|
||||
METHOD popup.
|
||||
|
||||
clear p_pass.
|
||||
p_url = iv_repo_url.
|
||||
p_user = cv_user.
|
||||
mv_confirm = abap_false.
|
||||
|
||||
CALL SELECTION-SCREEN DYNNR STARTING AT 5 5 ENDING AT 60 8.
|
||||
|
||||
IF mv_confirm = abap_true.
|
||||
cv_user = p_user.
|
||||
cv_pass = p_pass.
|
||||
ELSE.
|
||||
CLEAR: cv_user, cv_pass.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD. "popup
|
||||
|
||||
METHOD on_screen_init.
|
||||
s_title = 'Login' ##NO_TEXT.
|
||||
s_url = 'Repo URL' ##NO_TEXT.
|
||||
s_user = 'User' ##NO_TEXT.
|
||||
s_pass = 'Password' ##NO_TEXT.
|
||||
ENDMETHOD. "on_screen_init
|
||||
|
||||
METHOD on_screen_output.
|
||||
DATA lt_ucomm TYPE TABLE OF sy-ucomm.
|
||||
|
||||
ASSERT sy-dynnr = DYNNR.
|
||||
|
||||
LOOP AT SCREEN.
|
||||
IF screen-name = 'P_URL'.
|
||||
screen-input = '0'.
|
||||
screen-display_3d = '0'.
|
||||
MODIFY SCREEN.
|
||||
ENDIF.
|
||||
IF screen-name = 'P_PASS'.
|
||||
screen-invisible = '1'.
|
||||
MODIFY SCREEN.
|
||||
ENDIF.
|
||||
ENDLOOP.
|
||||
|
||||
" Program RSSYSTDB, GUI Status %_CSP
|
||||
PERFORM set_pf_status IN PROGRAM rsdbrunt IF FOUND.
|
||||
APPEND 'NONE' TO lt_ucomm. "Button Check
|
||||
APPEND 'SPOS' TO lt_ucomm. "Save as Variant
|
||||
|
||||
CALL FUNCTION 'RS_SET_SELSCREEN_STATUS'
|
||||
EXPORTING p_status = sy-pfkey
|
||||
TABLES p_exclude = lt_ucomm.
|
||||
|
||||
ENDMETHOD. "on_screen_output
|
||||
|
||||
METHOD on_screen_event.
|
||||
ASSERT sy-dynnr = DYNNR.
|
||||
|
||||
" CRET - F8
|
||||
" OTHERS - simulate Enter press
|
||||
CASE iv_ucomm.
|
||||
WHEN 'CRET'.
|
||||
mv_confirm = abap_true.
|
||||
WHEN OTHERS. "TODO REFACTOR !!! A CLUTCH !
|
||||
" This will work unless any new specific logic appear
|
||||
" for other commands. The problem is that the password dialog
|
||||
" does not have Enter event (or I don't know how to activate it ;)
|
||||
" so Enter issues previous command from previous screen
|
||||
" But for now this works :) Fortunately Esc produces another flow
|
||||
mv_confirm = abap_true.
|
||||
LEAVE TO SCREEN 0.
|
||||
ENDCASE.
|
||||
|
||||
ENDMETHOD. "on_screen_event
|
||||
|
||||
ENDCLASS. " lcl_password_dialog IMPLEMENTATION
|
48
src/zabapgit_password_dialog.prog.xml
Normal file
48
src/zabapgit_password_dialog.prog.xml
Normal file
|
@ -0,0 +1,48 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_PROG" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<PROGDIR>
|
||||
<NAME>ZABAPGIT_PASSWORD_DIALOG</NAME>
|
||||
<STATE>A</STATE>
|
||||
<SQLX/>
|
||||
<EDTX/>
|
||||
<VARCL>X</VARCL>
|
||||
<DBAPL/>
|
||||
<DBNA/>
|
||||
<CLAS/>
|
||||
<TYPE/>
|
||||
<OCCURS/>
|
||||
<SUBC>I</SUBC>
|
||||
<APPL/>
|
||||
<SECU/>
|
||||
<CNAM/>
|
||||
<CDAT>0000-00-00</CDAT>
|
||||
<UNAM/>
|
||||
<UDAT>0000-00-00</UDAT>
|
||||
<VERN/>
|
||||
<LEVL/>
|
||||
<RSTAT/>
|
||||
<RMAND/>
|
||||
<RLOAD>E</RLOAD>
|
||||
<FIXPT/>
|
||||
<SSET/>
|
||||
<SDATE>0000-00-00</SDATE>
|
||||
<STIME/>
|
||||
<IDATE>0000-00-00</IDATE>
|
||||
<ITIME/>
|
||||
<LDBNAME/>
|
||||
<UCCHECK>X</UCCHECK>
|
||||
</PROGDIR>
|
||||
<TPOOL>
|
||||
<item>
|
||||
<ID>R</ID>
|
||||
<KEY/>
|
||||
<ENTRY>Password dialog and selection screen</ENTRY>
|
||||
<LENGTH>36</LENGTH>
|
||||
<SPLIT/>
|
||||
</item>
|
||||
</TPOOL>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
Loading…
Reference in New Issue
Block a user