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
|
* dummy for triggering screen
|
||||||
SELECTION-SCREEN END OF SCREEN 1001.
|
SELECTION-SCREEN END OF SCREEN 1001.
|
||||||
|
|
||||||
|
INCLUDE zabapgit_password_dialog. " !!! Contains SELECTION SCREEN
|
||||||
|
|
||||||
DEFINE _add.
|
DEFINE _add.
|
||||||
ro_html->add( &1 ) ##NO_TEXT.
|
ro_html->add( &1 ) ##NO_TEXT.
|
||||||
END-OF-DEFINITION.
|
END-OF-DEFINITION.
|
||||||
|
@ -125,13 +127,25 @@ INCLUDE zabapgit_app_impl.
|
||||||
INCLUDE zabapgit_unit_test.
|
INCLUDE zabapgit_unit_test.
|
||||||
INCLUDE zabapgit_forms.
|
INCLUDE zabapgit_forms.
|
||||||
|
|
||||||
|
INITIALIZATION.
|
||||||
|
lcl_password_dialog=>on_screen_init( ).
|
||||||
|
|
||||||
START-OF-SELECTION.
|
START-OF-SELECTION.
|
||||||
PERFORM run.
|
PERFORM run.
|
||||||
|
|
||||||
* Hide Execute button from screen
|
* Hide Execute button from screen
|
||||||
AT SELECTION-SCREEN OUTPUT.
|
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
|
* SAP back command re-direction
|
||||||
AT SELECTION-SCREEN ON EXIT-COMMAND.
|
AT SELECTION-SCREEN ON EXIT-COMMAND.
|
||||||
PERFORM exit.
|
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
|
iv_url TYPE string
|
||||||
RAISING lcx_exception.
|
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
|
ENDCLASS. "lcl_transport DEFINITION
|
||||||
|
|
||||||
*----------------------------------------------------------------------*
|
*----------------------------------------------------------------------*
|
||||||
|
@ -316,12 +310,12 @@ CLASS lcl_git_transport IMPLEMENTATION.
|
||||||
lv_user TYPE string,
|
lv_user TYPE string,
|
||||||
lv_pass TYPE string.
|
lv_pass TYPE string.
|
||||||
|
|
||||||
do_password_popup(
|
lcl_password_dialog=>popup(
|
||||||
EXPORTING
|
EXPORTING
|
||||||
iv_repo_url = iv_url
|
iv_repo_url = iv_url
|
||||||
IMPORTING
|
CHANGING
|
||||||
ev_user = lv_user
|
cv_user = lv_user
|
||||||
ev_pass = lv_pass ).
|
cv_pass = lv_pass ).
|
||||||
|
|
||||||
IF lv_user IS INITIAL.
|
IF lv_user IS INITIAL.
|
||||||
lcx_exception=>raise( 'HTTP 401, unauthorized' ).
|
lcx_exception=>raise( 'HTTP 401, unauthorized' ).
|
||||||
|
@ -333,56 +327,6 @@ CLASS lcl_git_transport IMPLEMENTATION.
|
||||||
|
|
||||||
ENDMETHOD. "acquire_login_details
|
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.
|
METHOD parse_branch_list.
|
||||||
|
|
||||||
DATA: lt_result TYPE TABLE OF string,
|
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