mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 20:32:26 +08:00
Check other dev clients in user master record (#2710)
* Fallback check other clients in user master record * Replace SELECT...ENDSELECT with SELECT SINGLE
This commit is contained in:
parent
84042f1370
commit
3f01361d13
|
@ -42,15 +42,18 @@ ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CLASS ZCL_ABAPGIT_USER_MASTER_RECORD IMPLEMENTATION.
|
CLASS zcl_abapgit_user_master_record IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
METHOD constructor.
|
METHOD constructor.
|
||||||
|
|
||||||
DATA: lt_return TYPE TABLE OF bapiret2,
|
DATA: lt_return TYPE TABLE OF bapiret2,
|
||||||
ls_address TYPE bapiaddr3,
|
ls_address TYPE bapiaddr3,
|
||||||
lt_smtp TYPE TABLE OF bapiadsmtp,
|
lt_smtp TYPE TABLE OF bapiadsmtp,
|
||||||
ls_smtp TYPE bapiadsmtp.
|
ls_smtp TYPE bapiadsmtp,
|
||||||
|
lt_dev_clients TYPE SORTED TABLE OF mandt WITH UNIQUE KEY table_line,
|
||||||
|
lv_not_found TYPE abap_bool.
|
||||||
|
FIELD-SYMBOLS: <lv_dev_client> LIKE LINE OF lt_dev_clients.
|
||||||
|
|
||||||
CALL FUNCTION 'BAPI_USER_GET_DETAIL'
|
CALL FUNCTION 'BAPI_USER_GET_DETAIL'
|
||||||
EXPORTING
|
EXPORTING
|
||||||
|
@ -60,18 +63,51 @@ CLASS ZCL_ABAPGIT_USER_MASTER_RECORD IMPLEMENTATION.
|
||||||
TABLES
|
TABLES
|
||||||
return = lt_return
|
return = lt_return
|
||||||
addsmtp = lt_smtp.
|
addsmtp = lt_smtp.
|
||||||
|
LOOP AT lt_return TRANSPORTING NO FIELDS WHERE type CA 'EA'.
|
||||||
* Choose the first email from SU01
|
lv_not_found = abap_true.
|
||||||
SORT lt_smtp BY consnumber ASCENDING.
|
|
||||||
|
|
||||||
LOOP AT lt_smtp INTO ls_smtp.
|
|
||||||
ms_user-email = ls_smtp-e_mail.
|
|
||||||
EXIT.
|
EXIT.
|
||||||
ENDLOOP.
|
ENDLOOP.
|
||||||
|
|
||||||
* Attempt to use the full name from SU01
|
IF lv_not_found = abap_false.
|
||||||
ms_user-name = ls_address-fullname.
|
" Choose the first email from SU01
|
||||||
|
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.
|
||||||
|
|
||||||
|
ELSE.
|
||||||
|
" Try other development clients
|
||||||
|
SELECT mandt INTO TABLE lt_dev_clients
|
||||||
|
FROM t000
|
||||||
|
WHERE cccategory = 'C'
|
||||||
|
AND mandt <> sy-mandt
|
||||||
|
ORDER BY PRIMARY KEY.
|
||||||
|
|
||||||
|
LOOP AT lt_dev_clients ASSIGNING <lv_dev_client>.
|
||||||
|
SELECT SINGLE p~name_text a~smtp_addr INTO (ms_user-name,ms_user-email)
|
||||||
|
FROM usr21 AS u
|
||||||
|
INNER JOIN adrp AS p ON p~persnumber = u~persnumber
|
||||||
|
AND p~client = u~mandt
|
||||||
|
INNER JOIN adr6 AS a ON a~persnumber = u~persnumber
|
||||||
|
AND a~addrnumber = u~addrnumber
|
||||||
|
AND a~client = u~mandt
|
||||||
|
CLIENT SPECIFIED
|
||||||
|
WHERE u~mandt = <lv_dev_client>
|
||||||
|
AND u~bname = iv_user
|
||||||
|
AND p~date_from <= sy-datum
|
||||||
|
AND p~date_to >= sy-datum
|
||||||
|
AND a~date_from <= sy-datum.
|
||||||
|
|
||||||
|
IF sy-subrc = 0.
|
||||||
|
EXIT.
|
||||||
|
ENDIF.
|
||||||
|
ENDLOOP.
|
||||||
|
ENDIF.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user