Bug 11355

Summary: Web-User-Daten nicht immer eindeutig
Product: [SCX/Suite] VMI Reporter: Hopmann, Peter <Peter.Hopmann>
Component: StammdatenpflegeAssignee: Hopmann, Peter <Peter.Hopmann>
Status: VERIFIED FIXED QA Contact: Tilli, Benedikt <Benedikt.Tilli>
Severity: minor    
Priority: P3 Keywords: Pegasus, Vorabkorrektur
Version: 19.0   
Hardware: All   
OS: All   
Whiteboard: Überprüft 21.0
Kundennummer: Bestellnummer:
PV Übergabe: --- Phase Roadmap: ---
Erledigt mit: Pegasus SAP Release: ---
Transport: E74K907301, FE0K903707, M50K900045, M60K900042, M39K901612, M49K901601 CRM-ID/Ticket:

Description Hopmann, Peter intern 2020-01-24 07:42:02 CET
Die Anmeldung am Webfrontend kann mit der Kurz-ID (nur altes Webfrontend) mit der e-Mail-Adresse oder dem User-Namen (nur neues Webfrontend V2) durchgeführt werden. Am Webfrontend werden die möglichen Optionen nacheinander geprüft. Es besteht theoretisch die Möglichkeit, User-Daten nicht eindeutig anzulegen. 
Beispiel:
ID          User-name   E-Mail
4711        Horst1      horst@mail
4712        host@mail   hosrt2@mail
4713        4711        horst3@mail
Comment 1 Hopmann, Peter intern 2020-05-11 22:56:25 CEST
/GIB/CL_DCV_WEB_USER
  METHOD check_data.

    DATA: ls_double TYPE /gib/dcvt010,
          lf_dummy TYPE c,
          lr_msg TYPE REF TO /gib/cl_dcv_error_msg.
    DATA: lf_email TYPE /gib/dcvt010-email,                 "hw11355
          lf_objectid TYPE /gib/dcvt010-objectid.           "hw11355

    FIELD-SYMBOLS: <ls_data> TYPE /gib/dcvt010v_s.

    ASSIGN mr_data->* TO <ls_data>.
    er_result = super->check_data( ).
    CREATE OBJECT lr_msg.
*# email vorhanden?
    IF <ls_data>-email = space.
      MESSAGE w166 WITH <ls_data>-username INTO lf_dummy.
      lr_msg->sy_set( ).
      er_result->add_error( ir_msg = lr_msg
                            if_fieldname = 'EMAIL'  ).
    ENDIF.
*# doublette?
*#11355
*    SELECT SINGLE * FROM /gib/dcvt010 INTO ls_double    "#EC CI_NOORDER
*      WHERE email = <ls_data>-email
*        AND username <> <ls_data>-username.
    lf_email = <ls_data>-email.
    TRANSLATE lf_email TO UPPER CASE.
    SELECT SINGLE * FROM /gib/dcvt010 INTO ls_double    "#EC CI_NOORDER
      WHERE (    email = <ls_data>-email
              OR username = lf_email        "in upper case
              OR username = <ls_data>-objectid  )
          AND username <> <ls_data>-username .
    IF sy-subrc <> 0.
      lf_email = <ls_data>-username.        "existing email as new username
      TRANSLATE lf_email TO LOWER CASE.
      SELECT SINGLE * FROM /gib/dcvt010 INTO ls_double  "#EC CI_NOORDER
        WHERE email = lf_email
          AND username <> <ls_data>-username .
    ENDIF.
    IF sy-subrc <> 0
      AND <ls_data>-username CO '0123456789 '.    "existing ID as new username
      lf_objectid = <ls_data>-username.
      SELECT SINGLE * FROM /gib/dcvt010 INTO ls_double  "#EC CI_NOORDER
        WHERE objectid = lf_objectid
          AND username <> <ls_data>-username .
    ENDIF.
*##113555
    IF sy-subrc = 0.
      MESSAGE e165 WITH ls_double-email ls_double-username <ls_data>-username INTO lf_dummy.
      lr_msg->sy_set( ).
      er_result->add_error( ir_msg = lr_msg
                            if_fieldname = 'EMAIL'  ).
    ENDIF.

  ENDMETHOD.