From 3f01361d13692dd4eb2e3e427f4b02e52b06938f Mon Sep 17 00:00:00 2001 From: Fabian Lupa Date: Tue, 11 Jun 2019 17:57:28 +0200 Subject: [PATCH] Check other dev clients in user master record (#2710) * Fallback check other clients in user master record * Replace SELECT...ENDSELECT with SELECT SINGLE --- .../zcl_abapgit_user_master_record.clas.abap | 62 +++++++++++++++---- 1 file changed, 49 insertions(+), 13 deletions(-) diff --git a/src/utils/zcl_abapgit_user_master_record.clas.abap b/src/utils/zcl_abapgit_user_master_record.clas.abap index 92519cbfc..ab9874bc2 100644 --- a/src/utils/zcl_abapgit_user_master_record.clas.abap +++ b/src/utils/zcl_abapgit_user_master_record.clas.abap @@ -42,15 +42,18 @@ ENDCLASS. -CLASS ZCL_ABAPGIT_USER_MASTER_RECORD IMPLEMENTATION. +CLASS zcl_abapgit_user_master_record IMPLEMENTATION. METHOD constructor. - DATA: lt_return TYPE TABLE OF bapiret2, - ls_address TYPE bapiaddr3, - lt_smtp TYPE TABLE OF bapiadsmtp, - ls_smtp TYPE bapiadsmtp. + DATA: lt_return TYPE TABLE OF bapiret2, + ls_address TYPE bapiaddr3, + lt_smtp TYPE TABLE OF 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: LIKE LINE OF lt_dev_clients. CALL FUNCTION 'BAPI_USER_GET_DETAIL' EXPORTING @@ -60,18 +63,51 @@ CLASS ZCL_ABAPGIT_USER_MASTER_RECORD IMPLEMENTATION. TABLES return = lt_return addsmtp = lt_smtp. - -* 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. + LOOP AT lt_return TRANSPORTING NO FIELDS WHERE type CA 'EA'. + lv_not_found = abap_true. EXIT. ENDLOOP. -* Attempt to use the full name from SU01 - ms_user-name = ls_address-fullname. + IF lv_not_found = abap_false. + " 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 . + 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 = + 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.