mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 12:20:51 +08:00
refactor user record class (#6520)
This commit is contained in:
parent
90d1e1a02f
commit
0ab304420b
|
@ -15,10 +15,10 @@ CLASS zcl_abapgit_user_record DEFINITION
|
||||||
!iv_user TYPE sy-uname.
|
!iv_user TYPE sy-uname.
|
||||||
METHODS get_name
|
METHODS get_name
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(rv_name) TYPE zif_abapgit_git_definitions=>ty_git_user-name.
|
VALUE(rv_name) TYPE string.
|
||||||
METHODS get_email
|
METHODS get_email
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(rv_email) TYPE zif_abapgit_git_definitions=>ty_git_user-email.
|
VALUE(rv_email) TYPE string.
|
||||||
CLASS-METHODS get_title
|
CLASS-METHODS get_title
|
||||||
IMPORTING
|
IMPORTING
|
||||||
iv_username TYPE sy-uname
|
iv_username TYPE sy-uname
|
||||||
|
@ -32,25 +32,19 @@ CLASS zcl_abapgit_user_record DEFINITION
|
||||||
o_user TYPE REF TO zcl_abapgit_user_record,
|
o_user TYPE REF TO zcl_abapgit_user_record,
|
||||||
END OF ty_user.
|
END OF ty_user.
|
||||||
|
|
||||||
TYPES:
|
CLASS-DATA gt_user TYPE HASHED TABLE OF ty_user WITH UNIQUE KEY user.
|
||||||
ty_smtp TYPE STANDARD TABLE OF bapiadsmtp WITH DEFAULT KEY.
|
|
||||||
|
|
||||||
TYPES:
|
DATA: BEGIN OF ms_user,
|
||||||
ty_dev_clients TYPE SORTED TABLE OF sy-mandt WITH UNIQUE KEY table_line.
|
name TYPE string,
|
||||||
|
email TYPE string,
|
||||||
CLASS-DATA:
|
END OF ms_user .
|
||||||
gt_user TYPE HASHED TABLE OF ty_user
|
|
||||||
WITH UNIQUE KEY user.
|
|
||||||
|
|
||||||
DATA:
|
|
||||||
ms_user TYPE zif_abapgit_git_definitions=>ty_git_user.
|
|
||||||
|
|
||||||
METHODS check_user_exists
|
METHODS check_user_exists
|
||||||
IMPORTING
|
IMPORTING
|
||||||
VALUE(iv_user) TYPE sy-uname
|
iv_user TYPE sy-uname
|
||||||
EXPORTING
|
EXPORTING
|
||||||
VALUE(es_address) TYPE bapiaddr3
|
ev_fullname TYPE string
|
||||||
VALUE(et_smtp) TYPE ty_smtp
|
ev_email TYPE string
|
||||||
RAISING
|
RAISING
|
||||||
zcx_abapgit_exception.
|
zcx_abapgit_exception.
|
||||||
|
|
||||||
|
@ -85,53 +79,50 @@ CLASS zcl_abapgit_user_record IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD check_user_exists.
|
METHOD check_user_exists.
|
||||||
|
|
||||||
DATA lt_return TYPE STANDARD TABLE OF bapiret2 WITH DEFAULT KEY.
|
DATA lt_return TYPE STANDARD TABLE OF bapiret2 WITH DEFAULT KEY.
|
||||||
|
DATA ls_address TYPE bapiaddr3.
|
||||||
|
DATA lt_smtp TYPE TABLE OF bapiadsmtp.
|
||||||
|
DATA ls_smtp LIKE LINE OF lt_smtp.
|
||||||
|
|
||||||
CALL FUNCTION 'BAPI_USER_GET_DETAIL'
|
CALL FUNCTION 'BAPI_USER_GET_DETAIL'
|
||||||
EXPORTING
|
EXPORTING
|
||||||
username = iv_user
|
username = iv_user
|
||||||
IMPORTING
|
IMPORTING
|
||||||
address = es_address
|
address = ls_address
|
||||||
TABLES
|
TABLES
|
||||||
return = lt_return
|
return = lt_return
|
||||||
addsmtp = et_smtp.
|
addsmtp = lt_smtp.
|
||||||
LOOP AT lt_return TRANSPORTING NO FIELDS WHERE type CA 'EA'.
|
LOOP AT lt_return TRANSPORTING NO FIELDS WHERE type CA 'EA'.
|
||||||
zcx_abapgit_exception=>raise( |User: { iv_user } not found| ).
|
zcx_abapgit_exception=>raise( |User: { iv_user } not found| ).
|
||||||
ENDLOOP.
|
ENDLOOP.
|
||||||
|
|
||||||
|
ev_fullname = ls_address-fullname.
|
||||||
|
|
||||||
|
" Choose the first email from SU01
|
||||||
|
SORT lt_smtp BY consnumber ASCENDING.
|
||||||
|
|
||||||
|
LOOP AT lt_smtp INTO ls_smtp.
|
||||||
|
ev_email = ls_smtp-e_mail.
|
||||||
|
EXIT.
|
||||||
|
ENDLOOP.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD constructor.
|
METHOD constructor.
|
||||||
|
|
||||||
DATA:
|
DATA ls_user TYPE ty_user.
|
||||||
ls_address TYPE bapiaddr3,
|
|
||||||
lt_smtp TYPE TABLE OF bapiadsmtp,
|
|
||||||
ls_smtp TYPE bapiadsmtp,
|
|
||||||
ls_user TYPE ty_user,
|
|
||||||
lo_exception TYPE REF TO zcx_abapgit_exception.
|
|
||||||
|
|
||||||
"Get user details
|
" Get user details
|
||||||
TRY.
|
TRY.
|
||||||
check_user_exists(
|
check_user_exists(
|
||||||
EXPORTING
|
EXPORTING
|
||||||
iv_user = iv_user
|
iv_user = iv_user
|
||||||
IMPORTING
|
IMPORTING
|
||||||
es_address = ls_address
|
ev_fullname = ms_user-name
|
||||||
et_smtp = lt_smtp ).
|
ev_email = ms_user-email ).
|
||||||
|
CATCH zcx_abapgit_exception.
|
||||||
" Choose the first email from SU01
|
" Could not find user, try to get from other clients
|
||||||
SORT lt_smtp BY consnumber ASCENDING.
|
|
||||||
|
|
||||||
LOOP AT lt_smtp INTO ls_smtp.
|
|
||||||
ms_user-email = ls_smtp-e_mail.
|
|
||||||
EXIT.
|
|
||||||
ENDLOOP.
|
|
||||||
|
|
||||||
" Attempt to use the full name from SU01
|
|
||||||
ms_user-name = ls_address-fullname.
|
|
||||||
CATCH zcx_abapgit_exception INTO lo_exception.
|
|
||||||
"Could not find user,try to get from other clients
|
|
||||||
get_user_dtls_from_other_clnt( iv_user ).
|
get_user_dtls_from_other_clnt( iv_user ).
|
||||||
ENDTRY.
|
ENDTRY.
|
||||||
|
|
||||||
|
@ -154,7 +145,7 @@ CLASS zcl_abapgit_user_record IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD get_instance.
|
METHOD get_instance.
|
||||||
|
|
||||||
FIELD-SYMBOLS: <ls_user> TYPE ty_user.
|
FIELD-SYMBOLS <ls_user> TYPE ty_user.
|
||||||
|
|
||||||
READ TABLE gt_user ASSIGNING <ls_user> WITH TABLE KEY user = iv_user.
|
READ TABLE gt_user ASSIGNING <ls_user> WITH TABLE KEY user = iv_user.
|
||||||
IF sy-subrc = 0.
|
IF sy-subrc = 0.
|
||||||
|
@ -178,18 +169,17 @@ CLASS zcl_abapgit_user_record IMPLEMENTATION.
|
||||||
METHOD get_user_dtls_from_other_clnt.
|
METHOD get_user_dtls_from_other_clnt.
|
||||||
|
|
||||||
CONSTANTS lc_cc_category TYPE string VALUE 'C'.
|
CONSTANTS lc_cc_category TYPE string VALUE 'C'.
|
||||||
|
TYPES ty_dev_clients TYPE SORTED TABLE OF sy-mandt WITH UNIQUE KEY table_line.
|
||||||
DATA lt_dev_clients TYPE ty_dev_clients.
|
DATA lt_dev_clients TYPE ty_dev_clients.
|
||||||
|
FIELD-SYMBOLS <lv_dev_client> LIKE LINE OF lt_dev_clients.
|
||||||
|
|
||||||
FIELD-SYMBOLS: <lv_dev_client> LIKE LINE OF lt_dev_clients.
|
" Could not find the user, try other development clients
|
||||||
|
|
||||||
" Could not find the user Try other development clients
|
|
||||||
SELECT mandt FROM t000 INTO TABLE lt_dev_clients
|
SELECT mandt FROM t000 INTO TABLE lt_dev_clients
|
||||||
WHERE cccategory = lc_cc_category AND mandt <> sy-mandt
|
WHERE cccategory = lc_cc_category AND mandt <> sy-mandt
|
||||||
ORDER BY PRIMARY KEY.
|
ORDER BY PRIMARY KEY.
|
||||||
|
|
||||||
LOOP AT lt_dev_clients ASSIGNING <lv_dev_client>.
|
LOOP AT lt_dev_clients ASSIGNING <lv_dev_client>.
|
||||||
SELECT SINGLE p~name_text a~smtp_addr INTO (ms_user-name,ms_user-email)
|
SELECT SINGLE p~name_text a~smtp_addr INTO (ms_user-name, ms_user-email)
|
||||||
FROM usr21 AS u
|
FROM usr21 AS u
|
||||||
INNER JOIN adrp AS p ON p~persnumber = u~persnumber
|
INNER JOIN adrp AS p ON p~persnumber = u~persnumber
|
||||||
AND p~client = u~mandt
|
AND p~client = u~mandt
|
||||||
|
|
Loading…
Reference in New Issue
Block a user