<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Password Reset function in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/password-reset-function/m-p/2252092#M487033</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;See the below program and which we will use reset the password...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;SAP table Declaration&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;tables:   usr02,        " Logon data&lt;/P&gt;&lt;P&gt;          ush02.        " Change history for logon data&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Internal Table Declaration&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: int_ush02         like ush02 occurs 0 with header line,&lt;/P&gt;&lt;P&gt;      int_ush02_update  like ush02 occurs 0 with header line.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: begin of int_output occurs 0.&lt;/P&gt;&lt;P&gt;data:      flag    type c.&lt;/P&gt;&lt;P&gt;        include structure ush02.&lt;/P&gt;&lt;P&gt;data: end   of int_output.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Structures Declaration&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: lastchange like uschange.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Date Field Declaration&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data:  mode(1)    type c,&lt;/P&gt;&lt;P&gt;       ok_code(1) type n,&lt;/P&gt;&lt;P&gt;       user_name  like sy-uname.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data:  uflag      like ush02-uflag.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Selection Screen                                                     *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;selection-screen begin of block b00 with frame title text-b00.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;selection-screen begin of block b01 with frame title text-b01.&lt;/P&gt;&lt;P&gt;select-options: s_user  for usr02-bname  no intervals&lt;/P&gt;&lt;P&gt;                                         no-extension,&lt;/P&gt;&lt;P&gt;                s_class for usr02-class  no intervals&lt;/P&gt;&lt;P&gt;                                         no-extension.&lt;/P&gt;&lt;P&gt;selection-screen  skip.&lt;/P&gt;&lt;P&gt;parameter:      p_dept as checkbox,&lt;/P&gt;&lt;P&gt;                p_rf   as checkbox.&lt;/P&gt;&lt;P&gt;selection-screen end of block b01.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;selection-screen begin of block b02 with frame title text-b02.&lt;/P&gt;&lt;P&gt;parameter: lock   radiobutton group rad1,&lt;/P&gt;&lt;P&gt;           unlock radiobutton group rad1.&lt;/P&gt;&lt;P&gt;selection-screen  skip.&lt;/P&gt;&lt;P&gt;selection-screen begin of block b03 with frame title text-b03.&lt;/P&gt;&lt;P&gt;selection-screen  skip.&lt;/P&gt;&lt;P&gt;select-options: s_luser for usr02-bname  no intervals&lt;/P&gt;&lt;P&gt;                                         no-extension&lt;/P&gt;&lt;P&gt;                                         default sy-uname,&lt;/P&gt;&lt;P&gt;                s_ldate for sy-datum no intervals&lt;/P&gt;&lt;P&gt;                                         no-extension&lt;/P&gt;&lt;P&gt;                                         default sy-datum.&lt;/P&gt;&lt;P&gt;selection-screen  skip.&lt;/P&gt;&lt;P&gt;selection-screen end of block b03.&lt;/P&gt;&lt;P&gt;selection-screen end of block b02.&lt;/P&gt;&lt;P&gt;selection-screen end of block b00.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Events&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;initialization.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ok_code = 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  loop at screen.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;gray out radio button for unlock&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    if screen-name(11) = 'S_LUSER-LOW'.&lt;/P&gt;&lt;P&gt;      screen-input     = '0'.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;    if screen-name(11) = 'S_LDATE-LOW'.&lt;/P&gt;&lt;P&gt;      screen-input     = '0'.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;    modify screen.&lt;/P&gt;&lt;P&gt;  endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;at selection-screen.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  loop at screen.&lt;/P&gt;&lt;P&gt;    if unlock = 'X'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;gray out radio button for unlock&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      if screen-name(11) = 'S_LUSER-LOW'.&lt;/P&gt;&lt;P&gt;        screen-input     = '0'.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;      if screen-name(11) = 'S_LDATE-LOW'.&lt;/P&gt;&lt;P&gt;        screen-input     = '0'.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;      modify screen.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;  endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  case s_class-low.&lt;/P&gt;&lt;P&gt;    when 'SYSTEM'.&lt;/P&gt;&lt;P&gt;      perform error_message using '1' 'SYSTEM'.&lt;/P&gt;&lt;P&gt;      stop.&lt;/P&gt;&lt;P&gt;    when 'SUPER'.&lt;/P&gt;&lt;P&gt;      perform error_message using '1' 'SUPER'.&lt;/P&gt;&lt;P&gt;      stop.&lt;/P&gt;&lt;P&gt;    when 'SERVICE'.&lt;/P&gt;&lt;P&gt;      perform error_message using '1' 'SERVICE'.&lt;/P&gt;&lt;P&gt;      stop.&lt;/P&gt;&lt;P&gt;    when 'COMMUNICATIO'.&lt;/P&gt;&lt;P&gt;      perform error_message using '1' 'COMMUNICATIO'.&lt;/P&gt;&lt;P&gt;      stop.&lt;/P&gt;&lt;P&gt;    when 'FD_ERP'.&lt;/P&gt;&lt;P&gt;      perform error_message using '1' 'FD_ERP'.&lt;/P&gt;&lt;P&gt;      stop.&lt;/P&gt;&lt;P&gt;  endcase.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;if unblock mode, user who blcoked the user and the date&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;should be the same&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  if unlock = 'X'.&lt;/P&gt;&lt;P&gt;    read table s_ldate index 1.&lt;/P&gt;&lt;P&gt;    if s_ldate-low = space.&lt;/P&gt;&lt;P&gt;      perform error_message using '2' 'Date when lock was done'.&lt;/P&gt;&lt;P&gt;      stop..&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;    read table s_luser index 1.&lt;/P&gt;&lt;P&gt;    if s_luser-low = space.&lt;/P&gt;&lt;P&gt;      perform error_message using '2' 'User who locked'.&lt;/P&gt;&lt;P&gt;      stop..&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;either special user or department user has to be used&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  if s_user[] is initial and ( p_dept = space and p_rf = space ).&lt;/P&gt;&lt;P&gt;    perform error_message using '3'&lt;/P&gt;&lt;P&gt;      'Use at least  Single User or Checkbox - All Deptartment User'.&lt;/P&gt;&lt;P&gt;    stop.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;only special user or department user has to be used&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  if not s_user[] is initial and&lt;/P&gt;&lt;P&gt;            not ( p_dept = space and p_rf = space ).&lt;/P&gt;&lt;P&gt;    perform error_message using '3'&lt;/P&gt;&lt;P&gt;      'Use only      Single User or Checkbox - All Deptartment User'.&lt;/P&gt;&lt;P&gt;    ok_code = '1'.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;program control&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;start-of-selection.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  check ok_code = 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Status of user&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  0 User not locked&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; 32 (Hex 20) Locked by central administrator of CUA&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; 64 (Hex 40) Locked by administrator&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;128 (Hex 80) Locked due to incorrect messages&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;set lock/unlock mode&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  if lock = 'X'.&lt;/P&gt;&lt;P&gt;    mode  = 'L'.&lt;/P&gt;&lt;P&gt;    uflag = '64 '.&lt;/P&gt;&lt;P&gt;  else.&lt;/P&gt;&lt;P&gt;    mode  = 'U'.&lt;/P&gt;&lt;P&gt;    uflag = ' 0 '.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;select all department user when box is checked&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  if p_dept = 'X'.&lt;/P&gt;&lt;P&gt;    select bname from usr02&lt;/P&gt;&lt;P&gt;                 into s_user-low&lt;/P&gt;&lt;P&gt;                 where class = 'FD_DEP_USER'.&lt;/P&gt;&lt;P&gt;      append s_user.&lt;/P&gt;&lt;P&gt;    endselect.&lt;/P&gt;&lt;P&gt;  elseif p_rf = 'X'.&lt;/P&gt;&lt;P&gt;    select bname from usr02&lt;/P&gt;&lt;P&gt;                 into s_user-low&lt;/P&gt;&lt;P&gt;                 where class = 'FD_RF_USER'.&lt;/P&gt;&lt;P&gt;      append s_user.&lt;/P&gt;&lt;P&gt;    endselect.&lt;/P&gt;&lt;P&gt;  else.&lt;/P&gt;&lt;P&gt;    read table s_user index 1.&lt;/P&gt;&lt;P&gt;    if s_class-low = space.&lt;/P&gt;&lt;P&gt;      s_class-low = 'FD_DEP_USER'.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;    select single * from usr02&lt;/P&gt;&lt;P&gt;                    where bname = s_user-low&lt;/P&gt;&lt;P&gt;                    and   class = s_class-low.&lt;/P&gt;&lt;P&gt;    if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;    else.&lt;/P&gt;&lt;P&gt;      message i000(zwave) with 'Not allowed to block this user'.&lt;/P&gt;&lt;P&gt;      stop.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  sort s_user by low.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  loop at s_user.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;change to SAP standart (CHAR -&amp;gt; CHAR12)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    user_name = s_user-low.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;check last change to unblock only user which are blocked by same user&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;check status to change only user whioch have to be changed.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    clear ush02.&lt;/P&gt;&lt;P&gt;    perform check_last_user_change using    user_name&lt;/P&gt;&lt;P&gt;                                   changing ush02&lt;/P&gt;&lt;P&gt;                                            usr02.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;user not in the system&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    if ush02 is initial.&lt;/P&gt;&lt;P&gt;      int_output-bname = user_name.&lt;/P&gt;&lt;P&gt;      int_output-flag  = 'U'.&lt;/P&gt;&lt;P&gt;      append int_output.&lt;/P&gt;&lt;P&gt;      continue.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    int_output-bname = ush02-bname.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;user last change and current status not in sink&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    if usr02-uflag ne ush02-uflag.&lt;/P&gt;&lt;P&gt;      int_output-flag  = 'S'.&lt;/P&gt;&lt;P&gt;      append int_output.&lt;/P&gt;&lt;P&gt;      continue.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;lock mode&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    case mode.&lt;/P&gt;&lt;P&gt;      when 'L'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; user allready locked&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        if ush02-uflag ne ' 0 '.&lt;/P&gt;&lt;P&gt;          int_output+1    = ush02.&lt;/P&gt;&lt;P&gt;          int_output-flag = 'L'.&lt;/P&gt;&lt;P&gt;          append int_output.&lt;/P&gt;&lt;P&gt;          continue.&lt;/P&gt;&lt;P&gt;        endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;user for lock in internal table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        int_ush02 = ush02.&lt;/P&gt;&lt;P&gt;        append int_ush02.&lt;/P&gt;&lt;P&gt;        int_output+1    = ush02.&lt;/P&gt;&lt;P&gt;        int_output-flag = space.&lt;/P&gt;&lt;P&gt;        append int_output.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      when 'U'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; user  locked by other instance&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        if ush02-uflag &amp;gt; '128' .&lt;/P&gt;&lt;P&gt;          int_output+1    = ush02.&lt;/P&gt;&lt;P&gt;          int_output-flag = 'I'.&lt;/P&gt;&lt;P&gt;          append int_output.&lt;/P&gt;&lt;P&gt;          continue.&lt;/P&gt;&lt;P&gt;        endif.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;user was locked by different user&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        read table s_luser index 1.&lt;/P&gt;&lt;P&gt;        if ush02-modbe  ne s_luser-low and&lt;/P&gt;&lt;P&gt;           ush02-modbe  ne ush02-MODBE.&lt;/P&gt;&lt;P&gt;          int_output+1    = ush02.&lt;/P&gt;&lt;P&gt;          int_output-flag = 'N'.&lt;/P&gt;&lt;P&gt;          append int_output.&lt;/P&gt;&lt;P&gt;          continue.&lt;/P&gt;&lt;P&gt;        endif.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;user was locked on different date&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        read table s_ldate index 1.&lt;/P&gt;&lt;P&gt;        if ush02-modda  ne s_ldate-low.&lt;/P&gt;&lt;P&gt;          int_output+1    = ush02.&lt;/P&gt;&lt;P&gt;          int_output-flag = 'D'.&lt;/P&gt;&lt;P&gt;          append int_output.&lt;/P&gt;&lt;P&gt;          continue.&lt;/P&gt;&lt;P&gt;        endif.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;user for unlock in internal table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        int_ush02 = ush02.&lt;/P&gt;&lt;P&gt;        append int_ush02.&lt;/P&gt;&lt;P&gt;        int_output+1    = ush02.&lt;/P&gt;&lt;P&gt;        int_output-flag = space.&lt;/P&gt;&lt;P&gt;        append int_output.&lt;/P&gt;&lt;P&gt;    endcase.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  loop at int_ush02.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;lock / unlock&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    call function '/RTC/AS_LOCK_UNLOCK_USER'&lt;/P&gt;&lt;P&gt;         exporting&lt;/P&gt;&lt;P&gt;              mandt                 = sy-mandt&lt;/P&gt;&lt;P&gt;              user                  = int_ush02-bname&lt;/P&gt;&lt;P&gt;              mode                  = mode&lt;/P&gt;&lt;P&gt;              forced                = 'X'&lt;/P&gt;&lt;P&gt;         exceptions&lt;/P&gt;&lt;P&gt;              no_authorization      = 1&lt;/P&gt;&lt;P&gt;              wrong_mode            = 2&lt;/P&gt;&lt;P&gt;              mandt_not_found       = 3&lt;/P&gt;&lt;P&gt;              user_not_found        = 4&lt;/P&gt;&lt;P&gt;              lock_user_not_allowed = 5&lt;/P&gt;&lt;P&gt;              others                = 6.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;      perform create_change_entry using int_ush02-bname uflag.&lt;/P&gt;&lt;P&gt;    else.&lt;/P&gt;&lt;P&gt;      message e000(zwave) with&lt;/P&gt;&lt;P&gt;            'Lock/Unlock failed with reason ' sy-subrc.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;change history&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  if not int_ush02_update[] is initial.&lt;/P&gt;&lt;P&gt;    insert ush02 from table int_ush02_update.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;    else.&lt;/P&gt;&lt;P&gt;      message e000(zwave)&lt;/P&gt;&lt;P&gt;                with 'Table update USH02 for change data failed'.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  commit work.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  loop at int_output.&lt;/P&gt;&lt;P&gt;    write:/  int_output-bname,&lt;/P&gt;&lt;P&gt;             int_output-flag.&lt;/P&gt;&lt;P&gt;    case mode.&lt;/P&gt;&lt;P&gt;      when 'L'.&lt;/P&gt;&lt;P&gt;        case int_output-flag.&lt;/P&gt;&lt;P&gt;          when space.&lt;/P&gt;&lt;P&gt;            write: 'locked'.&lt;/P&gt;&lt;P&gt;          when 'S'.&lt;/P&gt;&lt;P&gt;            write: 'Lockstatus and Change history Lockstatus different'.&lt;/P&gt;&lt;P&gt;          when 'L'.&lt;/P&gt;&lt;P&gt;            write: 'User allready locked'.&lt;/P&gt;&lt;P&gt;        endcase.&lt;/P&gt;&lt;P&gt;      when 'U'.&lt;/P&gt;&lt;P&gt;        case int_output-flag.&lt;/P&gt;&lt;P&gt;          when space.&lt;/P&gt;&lt;P&gt;            write: 'unlocked'.&lt;/P&gt;&lt;P&gt;          when 'S'.&lt;/P&gt;&lt;P&gt;            write: 'Lockstatus and Change history Lockstatus different'.&lt;/P&gt;&lt;P&gt;          when 'N'.&lt;/P&gt;&lt;P&gt;            write: 'User locked by different administrator ',&lt;/P&gt;&lt;P&gt;                    ush02-modbe.&lt;/P&gt;&lt;P&gt;            write: 'To unlock use the field - User who locked',&lt;/P&gt;&lt;P&gt;                   'on the selection screen'.&lt;/P&gt;&lt;P&gt;          when 'D'.&lt;/P&gt;&lt;P&gt;            write: 'User locked on different day - locked'.&lt;/P&gt;&lt;P&gt;          when 'I'.&lt;/P&gt;&lt;P&gt;            write: 'Locked due unknown event'.&lt;/P&gt;&lt;P&gt;          when space.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;         Status of user&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;            if ush02-uflag = '0'.&lt;/P&gt;&lt;P&gt;              write: 'User not locked'.&lt;/P&gt;&lt;P&gt;            elseif ush02-uflag = '32'.&lt;/P&gt;&lt;P&gt;              write: 'Locked by central administrator of CUA'.&lt;/P&gt;&lt;P&gt;            elseif ush02-uflag = '64'.&lt;/P&gt;&lt;P&gt;              write: 'Locked by administrator'.&lt;/P&gt;&lt;P&gt;            elseif ush02-uflag = '128'.&lt;/P&gt;&lt;P&gt;              write: 'Locked due to incorrect messages'.&lt;/P&gt;&lt;P&gt;            endif.&lt;/P&gt;&lt;P&gt;        endcase.&lt;/P&gt;&lt;P&gt;    endcase.&lt;/P&gt;&lt;P&gt;  endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;end-of-selection.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  error_message&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     --&amp;gt;P_CLASS   text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;form error_message using  value(p_number)   value(p_class).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  data: titel(40) type c,&lt;/P&gt;&lt;P&gt;        txt1(40) type c,&lt;/P&gt;&lt;P&gt;        txt2(40) type c,&lt;/P&gt;&lt;P&gt;        txt3(40) type c,&lt;/P&gt;&lt;P&gt;        txt4(40) type c.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  case p_number.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    when '1'.&lt;/P&gt;&lt;P&gt;      titel = 'Attention - wrong value selected'.&lt;/P&gt;&lt;P&gt;      txt1  = '    The selected user group '.&lt;/P&gt;&lt;P&gt;      txt2  =  p_class.&lt;/P&gt;&lt;P&gt;      txt3  = '    cannot be blocked'.&lt;/P&gt;&lt;P&gt;      txt4  = ' '.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    when '2'.&lt;/P&gt;&lt;P&gt;      titel = 'Attention - value needed'.&lt;/P&gt;&lt;P&gt;      txt1  = '    The Input Field '.&lt;/P&gt;&lt;P&gt;      txt2  =  p_class.&lt;/P&gt;&lt;P&gt;      txt3  = '    has to be maitained'.&lt;/P&gt;&lt;P&gt;      txt4  = ' '.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    when '3'.&lt;/P&gt;&lt;P&gt;      titel = 'Attention - value needed'.&lt;/P&gt;&lt;P&gt;      txt1  =  p_class(12).&lt;/P&gt;&lt;P&gt;      txt2  =  p_class+14(15).&lt;/P&gt;&lt;P&gt;      txt3  =  p_class+29(31).&lt;/P&gt;&lt;P&gt;      txt4  = ' '.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  endcase.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  call function 'POPUP_TO_INFORM'&lt;/P&gt;&lt;P&gt;       exporting&lt;/P&gt;&lt;P&gt;            titel = titel&lt;/P&gt;&lt;P&gt;            txt1  = txt1&lt;/P&gt;&lt;P&gt;            txt2  = txt2&lt;/P&gt;&lt;P&gt;            txt3  = txt3&lt;/P&gt;&lt;P&gt;            txt4  = txt4.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.                    " error_message&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  check_last_user_change&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; --&amp;gt;  p1        text&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; &amp;lt;--  p2        text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;form check_last_user_change using    p1_user_name&lt;/P&gt;&lt;P&gt;                            changing p_ush02&lt;/P&gt;&lt;P&gt;                                     p_usr02.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  call function 'SUSR_USER_LASTCHANGE_GET'&lt;/P&gt;&lt;P&gt;       exporting&lt;/P&gt;&lt;P&gt;            user_name           = p1_user_name&lt;/P&gt;&lt;P&gt;       importing&lt;/P&gt;&lt;P&gt;            user_lastchange     = lastchange&lt;/P&gt;&lt;P&gt;       exceptions&lt;/P&gt;&lt;P&gt;            user_name_not_exist = 1&lt;/P&gt;&lt;P&gt;            others              = 2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;    exit.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;read last change&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  select single * from ush02&lt;/P&gt;&lt;P&gt;                      into p_ush02&lt;/P&gt;&lt;P&gt;                      where  bname = p1_user_name&lt;/P&gt;&lt;P&gt;                      and    modda = lastchange-modda&lt;/P&gt;&lt;P&gt;                      and    modti = lastchange-modti&lt;/P&gt;&lt;P&gt;                      and    modbe = lastchange-modbe.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;    exit.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;read current status&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  select single  * from  usr02&lt;/P&gt;&lt;P&gt;                   into p_usr02&lt;/P&gt;&lt;P&gt;                   where bname = p1_user_name.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;    exit.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.                    " check_last_user_change&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  check_last_user_change&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; --&amp;gt;  p1        text&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; &amp;lt;--  p2        text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;form create_change_entry using p2_user_name p_uflag.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;User flag&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   Status of user&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     0          User not locked&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    32 (Hex 20) Locked by central administrator of CUA&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    64 (Hex 40) Locked by administrator&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   128 (Hex 80) Locked due to incorrect messages&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   More than one lock can occur at the same time.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   In this case the field&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   contains the sum of the values&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  read table int_ush02 with key bname = p2_user_name.&lt;/P&gt;&lt;P&gt;  int_ush02_update = int_ush02.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;update the data with current date time user&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  int_ush02_update-modda = sy-datum.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  int_ush02_update-modti = sy-uzeit.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  int_ush02_update-modbe = sy-uname.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;fake here SU01 because Z transaction name is to long&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  int_ush02_update-tcode = 'SU01'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  int_ush02_update-repid = sy-repid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;lock / unlock status&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  int_ush02_update-uflag = p_uflag.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  append int_ush02_update.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;  else.&lt;/P&gt;&lt;P&gt;    message e000(zwave) with&lt;/P&gt;&lt;P&gt;               'Internal table insert for change data failed'.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Reward Points if it is helpful&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks&lt;/P&gt;&lt;P&gt;Seshu&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Message was edited by: &lt;/P&gt;&lt;P&gt;        Seshu Maramreddy&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 24 May 2007 01:28:08 GMT</pubDate>
    <dc:creator>Former Member</dc:creator>
    <dc:date>2007-05-24T01:28:08Z</dc:date>
    <item>
      <title>Password Reset function</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/password-reset-function/m-p/2252091#M487032</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi experts,&lt;/P&gt;&lt;P&gt; We are planning to implement Password reset function to a system, need to copy the existing code from another system...and the BSP code as well from another system for the UI..&lt;/P&gt;&lt;P&gt;Have any advice on how to do this...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Harini&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 23 May 2007 22:35:51 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/password-reset-function/m-p/2252091#M487032</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-05-23T22:35:51Z</dc:date>
    </item>
    <item>
      <title>Re: Password Reset function</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/password-reset-function/m-p/2252092#M487033</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;See the below program and which we will use reset the password...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;SAP table Declaration&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;tables:   usr02,        " Logon data&lt;/P&gt;&lt;P&gt;          ush02.        " Change history for logon data&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Internal Table Declaration&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: int_ush02         like ush02 occurs 0 with header line,&lt;/P&gt;&lt;P&gt;      int_ush02_update  like ush02 occurs 0 with header line.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: begin of int_output occurs 0.&lt;/P&gt;&lt;P&gt;data:      flag    type c.&lt;/P&gt;&lt;P&gt;        include structure ush02.&lt;/P&gt;&lt;P&gt;data: end   of int_output.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Structures Declaration&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: lastchange like uschange.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Date Field Declaration&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data:  mode(1)    type c,&lt;/P&gt;&lt;P&gt;       ok_code(1) type n,&lt;/P&gt;&lt;P&gt;       user_name  like sy-uname.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data:  uflag      like ush02-uflag.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Selection Screen                                                     *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;selection-screen begin of block b00 with frame title text-b00.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;selection-screen begin of block b01 with frame title text-b01.&lt;/P&gt;&lt;P&gt;select-options: s_user  for usr02-bname  no intervals&lt;/P&gt;&lt;P&gt;                                         no-extension,&lt;/P&gt;&lt;P&gt;                s_class for usr02-class  no intervals&lt;/P&gt;&lt;P&gt;                                         no-extension.&lt;/P&gt;&lt;P&gt;selection-screen  skip.&lt;/P&gt;&lt;P&gt;parameter:      p_dept as checkbox,&lt;/P&gt;&lt;P&gt;                p_rf   as checkbox.&lt;/P&gt;&lt;P&gt;selection-screen end of block b01.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;selection-screen begin of block b02 with frame title text-b02.&lt;/P&gt;&lt;P&gt;parameter: lock   radiobutton group rad1,&lt;/P&gt;&lt;P&gt;           unlock radiobutton group rad1.&lt;/P&gt;&lt;P&gt;selection-screen  skip.&lt;/P&gt;&lt;P&gt;selection-screen begin of block b03 with frame title text-b03.&lt;/P&gt;&lt;P&gt;selection-screen  skip.&lt;/P&gt;&lt;P&gt;select-options: s_luser for usr02-bname  no intervals&lt;/P&gt;&lt;P&gt;                                         no-extension&lt;/P&gt;&lt;P&gt;                                         default sy-uname,&lt;/P&gt;&lt;P&gt;                s_ldate for sy-datum no intervals&lt;/P&gt;&lt;P&gt;                                         no-extension&lt;/P&gt;&lt;P&gt;                                         default sy-datum.&lt;/P&gt;&lt;P&gt;selection-screen  skip.&lt;/P&gt;&lt;P&gt;selection-screen end of block b03.&lt;/P&gt;&lt;P&gt;selection-screen end of block b02.&lt;/P&gt;&lt;P&gt;selection-screen end of block b00.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Events&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;initialization.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ok_code = 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  loop at screen.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;gray out radio button for unlock&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    if screen-name(11) = 'S_LUSER-LOW'.&lt;/P&gt;&lt;P&gt;      screen-input     = '0'.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;    if screen-name(11) = 'S_LDATE-LOW'.&lt;/P&gt;&lt;P&gt;      screen-input     = '0'.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;    modify screen.&lt;/P&gt;&lt;P&gt;  endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;at selection-screen.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  loop at screen.&lt;/P&gt;&lt;P&gt;    if unlock = 'X'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;gray out radio button for unlock&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      if screen-name(11) = 'S_LUSER-LOW'.&lt;/P&gt;&lt;P&gt;        screen-input     = '0'.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;      if screen-name(11) = 'S_LDATE-LOW'.&lt;/P&gt;&lt;P&gt;        screen-input     = '0'.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;      modify screen.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;  endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  case s_class-low.&lt;/P&gt;&lt;P&gt;    when 'SYSTEM'.&lt;/P&gt;&lt;P&gt;      perform error_message using '1' 'SYSTEM'.&lt;/P&gt;&lt;P&gt;      stop.&lt;/P&gt;&lt;P&gt;    when 'SUPER'.&lt;/P&gt;&lt;P&gt;      perform error_message using '1' 'SUPER'.&lt;/P&gt;&lt;P&gt;      stop.&lt;/P&gt;&lt;P&gt;    when 'SERVICE'.&lt;/P&gt;&lt;P&gt;      perform error_message using '1' 'SERVICE'.&lt;/P&gt;&lt;P&gt;      stop.&lt;/P&gt;&lt;P&gt;    when 'COMMUNICATIO'.&lt;/P&gt;&lt;P&gt;      perform error_message using '1' 'COMMUNICATIO'.&lt;/P&gt;&lt;P&gt;      stop.&lt;/P&gt;&lt;P&gt;    when 'FD_ERP'.&lt;/P&gt;&lt;P&gt;      perform error_message using '1' 'FD_ERP'.&lt;/P&gt;&lt;P&gt;      stop.&lt;/P&gt;&lt;P&gt;  endcase.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;if unblock mode, user who blcoked the user and the date&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;should be the same&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  if unlock = 'X'.&lt;/P&gt;&lt;P&gt;    read table s_ldate index 1.&lt;/P&gt;&lt;P&gt;    if s_ldate-low = space.&lt;/P&gt;&lt;P&gt;      perform error_message using '2' 'Date when lock was done'.&lt;/P&gt;&lt;P&gt;      stop..&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;    read table s_luser index 1.&lt;/P&gt;&lt;P&gt;    if s_luser-low = space.&lt;/P&gt;&lt;P&gt;      perform error_message using '2' 'User who locked'.&lt;/P&gt;&lt;P&gt;      stop..&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;either special user or department user has to be used&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  if s_user[] is initial and ( p_dept = space and p_rf = space ).&lt;/P&gt;&lt;P&gt;    perform error_message using '3'&lt;/P&gt;&lt;P&gt;      'Use at least  Single User or Checkbox - All Deptartment User'.&lt;/P&gt;&lt;P&gt;    stop.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;only special user or department user has to be used&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  if not s_user[] is initial and&lt;/P&gt;&lt;P&gt;            not ( p_dept = space and p_rf = space ).&lt;/P&gt;&lt;P&gt;    perform error_message using '3'&lt;/P&gt;&lt;P&gt;      'Use only      Single User or Checkbox - All Deptartment User'.&lt;/P&gt;&lt;P&gt;    ok_code = '1'.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;program control&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;start-of-selection.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  check ok_code = 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Status of user&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  0 User not locked&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; 32 (Hex 20) Locked by central administrator of CUA&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; 64 (Hex 40) Locked by administrator&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;128 (Hex 80) Locked due to incorrect messages&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;set lock/unlock mode&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  if lock = 'X'.&lt;/P&gt;&lt;P&gt;    mode  = 'L'.&lt;/P&gt;&lt;P&gt;    uflag = '64 '.&lt;/P&gt;&lt;P&gt;  else.&lt;/P&gt;&lt;P&gt;    mode  = 'U'.&lt;/P&gt;&lt;P&gt;    uflag = ' 0 '.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;select all department user when box is checked&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  if p_dept = 'X'.&lt;/P&gt;&lt;P&gt;    select bname from usr02&lt;/P&gt;&lt;P&gt;                 into s_user-low&lt;/P&gt;&lt;P&gt;                 where class = 'FD_DEP_USER'.&lt;/P&gt;&lt;P&gt;      append s_user.&lt;/P&gt;&lt;P&gt;    endselect.&lt;/P&gt;&lt;P&gt;  elseif p_rf = 'X'.&lt;/P&gt;&lt;P&gt;    select bname from usr02&lt;/P&gt;&lt;P&gt;                 into s_user-low&lt;/P&gt;&lt;P&gt;                 where class = 'FD_RF_USER'.&lt;/P&gt;&lt;P&gt;      append s_user.&lt;/P&gt;&lt;P&gt;    endselect.&lt;/P&gt;&lt;P&gt;  else.&lt;/P&gt;&lt;P&gt;    read table s_user index 1.&lt;/P&gt;&lt;P&gt;    if s_class-low = space.&lt;/P&gt;&lt;P&gt;      s_class-low = 'FD_DEP_USER'.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;    select single * from usr02&lt;/P&gt;&lt;P&gt;                    where bname = s_user-low&lt;/P&gt;&lt;P&gt;                    and   class = s_class-low.&lt;/P&gt;&lt;P&gt;    if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;    else.&lt;/P&gt;&lt;P&gt;      message i000(zwave) with 'Not allowed to block this user'.&lt;/P&gt;&lt;P&gt;      stop.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  sort s_user by low.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  loop at s_user.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;change to SAP standart (CHAR -&amp;gt; CHAR12)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    user_name = s_user-low.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;check last change to unblock only user which are blocked by same user&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;check status to change only user whioch have to be changed.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    clear ush02.&lt;/P&gt;&lt;P&gt;    perform check_last_user_change using    user_name&lt;/P&gt;&lt;P&gt;                                   changing ush02&lt;/P&gt;&lt;P&gt;                                            usr02.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;user not in the system&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    if ush02 is initial.&lt;/P&gt;&lt;P&gt;      int_output-bname = user_name.&lt;/P&gt;&lt;P&gt;      int_output-flag  = 'U'.&lt;/P&gt;&lt;P&gt;      append int_output.&lt;/P&gt;&lt;P&gt;      continue.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    int_output-bname = ush02-bname.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;user last change and current status not in sink&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    if usr02-uflag ne ush02-uflag.&lt;/P&gt;&lt;P&gt;      int_output-flag  = 'S'.&lt;/P&gt;&lt;P&gt;      append int_output.&lt;/P&gt;&lt;P&gt;      continue.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;lock mode&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    case mode.&lt;/P&gt;&lt;P&gt;      when 'L'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; user allready locked&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        if ush02-uflag ne ' 0 '.&lt;/P&gt;&lt;P&gt;          int_output+1    = ush02.&lt;/P&gt;&lt;P&gt;          int_output-flag = 'L'.&lt;/P&gt;&lt;P&gt;          append int_output.&lt;/P&gt;&lt;P&gt;          continue.&lt;/P&gt;&lt;P&gt;        endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;user for lock in internal table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        int_ush02 = ush02.&lt;/P&gt;&lt;P&gt;        append int_ush02.&lt;/P&gt;&lt;P&gt;        int_output+1    = ush02.&lt;/P&gt;&lt;P&gt;        int_output-flag = space.&lt;/P&gt;&lt;P&gt;        append int_output.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      when 'U'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; user  locked by other instance&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        if ush02-uflag &amp;gt; '128' .&lt;/P&gt;&lt;P&gt;          int_output+1    = ush02.&lt;/P&gt;&lt;P&gt;          int_output-flag = 'I'.&lt;/P&gt;&lt;P&gt;          append int_output.&lt;/P&gt;&lt;P&gt;          continue.&lt;/P&gt;&lt;P&gt;        endif.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;user was locked by different user&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        read table s_luser index 1.&lt;/P&gt;&lt;P&gt;        if ush02-modbe  ne s_luser-low and&lt;/P&gt;&lt;P&gt;           ush02-modbe  ne ush02-MODBE.&lt;/P&gt;&lt;P&gt;          int_output+1    = ush02.&lt;/P&gt;&lt;P&gt;          int_output-flag = 'N'.&lt;/P&gt;&lt;P&gt;          append int_output.&lt;/P&gt;&lt;P&gt;          continue.&lt;/P&gt;&lt;P&gt;        endif.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;user was locked on different date&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        read table s_ldate index 1.&lt;/P&gt;&lt;P&gt;        if ush02-modda  ne s_ldate-low.&lt;/P&gt;&lt;P&gt;          int_output+1    = ush02.&lt;/P&gt;&lt;P&gt;          int_output-flag = 'D'.&lt;/P&gt;&lt;P&gt;          append int_output.&lt;/P&gt;&lt;P&gt;          continue.&lt;/P&gt;&lt;P&gt;        endif.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;user for unlock in internal table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        int_ush02 = ush02.&lt;/P&gt;&lt;P&gt;        append int_ush02.&lt;/P&gt;&lt;P&gt;        int_output+1    = ush02.&lt;/P&gt;&lt;P&gt;        int_output-flag = space.&lt;/P&gt;&lt;P&gt;        append int_output.&lt;/P&gt;&lt;P&gt;    endcase.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  loop at int_ush02.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;lock / unlock&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    call function '/RTC/AS_LOCK_UNLOCK_USER'&lt;/P&gt;&lt;P&gt;         exporting&lt;/P&gt;&lt;P&gt;              mandt                 = sy-mandt&lt;/P&gt;&lt;P&gt;              user                  = int_ush02-bname&lt;/P&gt;&lt;P&gt;              mode                  = mode&lt;/P&gt;&lt;P&gt;              forced                = 'X'&lt;/P&gt;&lt;P&gt;         exceptions&lt;/P&gt;&lt;P&gt;              no_authorization      = 1&lt;/P&gt;&lt;P&gt;              wrong_mode            = 2&lt;/P&gt;&lt;P&gt;              mandt_not_found       = 3&lt;/P&gt;&lt;P&gt;              user_not_found        = 4&lt;/P&gt;&lt;P&gt;              lock_user_not_allowed = 5&lt;/P&gt;&lt;P&gt;              others                = 6.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;      perform create_change_entry using int_ush02-bname uflag.&lt;/P&gt;&lt;P&gt;    else.&lt;/P&gt;&lt;P&gt;      message e000(zwave) with&lt;/P&gt;&lt;P&gt;            'Lock/Unlock failed with reason ' sy-subrc.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;change history&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  if not int_ush02_update[] is initial.&lt;/P&gt;&lt;P&gt;    insert ush02 from table int_ush02_update.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;    else.&lt;/P&gt;&lt;P&gt;      message e000(zwave)&lt;/P&gt;&lt;P&gt;                with 'Table update USH02 for change data failed'.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  commit work.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  loop at int_output.&lt;/P&gt;&lt;P&gt;    write:/  int_output-bname,&lt;/P&gt;&lt;P&gt;             int_output-flag.&lt;/P&gt;&lt;P&gt;    case mode.&lt;/P&gt;&lt;P&gt;      when 'L'.&lt;/P&gt;&lt;P&gt;        case int_output-flag.&lt;/P&gt;&lt;P&gt;          when space.&lt;/P&gt;&lt;P&gt;            write: 'locked'.&lt;/P&gt;&lt;P&gt;          when 'S'.&lt;/P&gt;&lt;P&gt;            write: 'Lockstatus and Change history Lockstatus different'.&lt;/P&gt;&lt;P&gt;          when 'L'.&lt;/P&gt;&lt;P&gt;            write: 'User allready locked'.&lt;/P&gt;&lt;P&gt;        endcase.&lt;/P&gt;&lt;P&gt;      when 'U'.&lt;/P&gt;&lt;P&gt;        case int_output-flag.&lt;/P&gt;&lt;P&gt;          when space.&lt;/P&gt;&lt;P&gt;            write: 'unlocked'.&lt;/P&gt;&lt;P&gt;          when 'S'.&lt;/P&gt;&lt;P&gt;            write: 'Lockstatus and Change history Lockstatus different'.&lt;/P&gt;&lt;P&gt;          when 'N'.&lt;/P&gt;&lt;P&gt;            write: 'User locked by different administrator ',&lt;/P&gt;&lt;P&gt;                    ush02-modbe.&lt;/P&gt;&lt;P&gt;            write: 'To unlock use the field - User who locked',&lt;/P&gt;&lt;P&gt;                   'on the selection screen'.&lt;/P&gt;&lt;P&gt;          when 'D'.&lt;/P&gt;&lt;P&gt;            write: 'User locked on different day - locked'.&lt;/P&gt;&lt;P&gt;          when 'I'.&lt;/P&gt;&lt;P&gt;            write: 'Locked due unknown event'.&lt;/P&gt;&lt;P&gt;          when space.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;         Status of user&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;            if ush02-uflag = '0'.&lt;/P&gt;&lt;P&gt;              write: 'User not locked'.&lt;/P&gt;&lt;P&gt;            elseif ush02-uflag = '32'.&lt;/P&gt;&lt;P&gt;              write: 'Locked by central administrator of CUA'.&lt;/P&gt;&lt;P&gt;            elseif ush02-uflag = '64'.&lt;/P&gt;&lt;P&gt;              write: 'Locked by administrator'.&lt;/P&gt;&lt;P&gt;            elseif ush02-uflag = '128'.&lt;/P&gt;&lt;P&gt;              write: 'Locked due to incorrect messages'.&lt;/P&gt;&lt;P&gt;            endif.&lt;/P&gt;&lt;P&gt;        endcase.&lt;/P&gt;&lt;P&gt;    endcase.&lt;/P&gt;&lt;P&gt;  endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;end-of-selection.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  error_message&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     --&amp;gt;P_CLASS   text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;form error_message using  value(p_number)   value(p_class).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  data: titel(40) type c,&lt;/P&gt;&lt;P&gt;        txt1(40) type c,&lt;/P&gt;&lt;P&gt;        txt2(40) type c,&lt;/P&gt;&lt;P&gt;        txt3(40) type c,&lt;/P&gt;&lt;P&gt;        txt4(40) type c.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  case p_number.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    when '1'.&lt;/P&gt;&lt;P&gt;      titel = 'Attention - wrong value selected'.&lt;/P&gt;&lt;P&gt;      txt1  = '    The selected user group '.&lt;/P&gt;&lt;P&gt;      txt2  =  p_class.&lt;/P&gt;&lt;P&gt;      txt3  = '    cannot be blocked'.&lt;/P&gt;&lt;P&gt;      txt4  = ' '.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    when '2'.&lt;/P&gt;&lt;P&gt;      titel = 'Attention - value needed'.&lt;/P&gt;&lt;P&gt;      txt1  = '    The Input Field '.&lt;/P&gt;&lt;P&gt;      txt2  =  p_class.&lt;/P&gt;&lt;P&gt;      txt3  = '    has to be maitained'.&lt;/P&gt;&lt;P&gt;      txt4  = ' '.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    when '3'.&lt;/P&gt;&lt;P&gt;      titel = 'Attention - value needed'.&lt;/P&gt;&lt;P&gt;      txt1  =  p_class(12).&lt;/P&gt;&lt;P&gt;      txt2  =  p_class+14(15).&lt;/P&gt;&lt;P&gt;      txt3  =  p_class+29(31).&lt;/P&gt;&lt;P&gt;      txt4  = ' '.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  endcase.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  call function 'POPUP_TO_INFORM'&lt;/P&gt;&lt;P&gt;       exporting&lt;/P&gt;&lt;P&gt;            titel = titel&lt;/P&gt;&lt;P&gt;            txt1  = txt1&lt;/P&gt;&lt;P&gt;            txt2  = txt2&lt;/P&gt;&lt;P&gt;            txt3  = txt3&lt;/P&gt;&lt;P&gt;            txt4  = txt4.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.                    " error_message&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  check_last_user_change&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; --&amp;gt;  p1        text&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; &amp;lt;--  p2        text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;form check_last_user_change using    p1_user_name&lt;/P&gt;&lt;P&gt;                            changing p_ush02&lt;/P&gt;&lt;P&gt;                                     p_usr02.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  call function 'SUSR_USER_LASTCHANGE_GET'&lt;/P&gt;&lt;P&gt;       exporting&lt;/P&gt;&lt;P&gt;            user_name           = p1_user_name&lt;/P&gt;&lt;P&gt;       importing&lt;/P&gt;&lt;P&gt;            user_lastchange     = lastchange&lt;/P&gt;&lt;P&gt;       exceptions&lt;/P&gt;&lt;P&gt;            user_name_not_exist = 1&lt;/P&gt;&lt;P&gt;            others              = 2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;    exit.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;read last change&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  select single * from ush02&lt;/P&gt;&lt;P&gt;                      into p_ush02&lt;/P&gt;&lt;P&gt;                      where  bname = p1_user_name&lt;/P&gt;&lt;P&gt;                      and    modda = lastchange-modda&lt;/P&gt;&lt;P&gt;                      and    modti = lastchange-modti&lt;/P&gt;&lt;P&gt;                      and    modbe = lastchange-modbe.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;    exit.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;read current status&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  select single  * from  usr02&lt;/P&gt;&lt;P&gt;                   into p_usr02&lt;/P&gt;&lt;P&gt;                   where bname = p1_user_name.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;    exit.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.                    " check_last_user_change&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  check_last_user_change&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; --&amp;gt;  p1        text&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; &amp;lt;--  p2        text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;form create_change_entry using p2_user_name p_uflag.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;User flag&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   Status of user&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     0          User not locked&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    32 (Hex 20) Locked by central administrator of CUA&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    64 (Hex 40) Locked by administrator&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   128 (Hex 80) Locked due to incorrect messages&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   More than one lock can occur at the same time.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   In this case the field&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   contains the sum of the values&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  read table int_ush02 with key bname = p2_user_name.&lt;/P&gt;&lt;P&gt;  int_ush02_update = int_ush02.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;update the data with current date time user&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  int_ush02_update-modda = sy-datum.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  int_ush02_update-modti = sy-uzeit.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  int_ush02_update-modbe = sy-uname.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;fake here SU01 because Z transaction name is to long&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  int_ush02_update-tcode = 'SU01'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  int_ush02_update-repid = sy-repid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;lock / unlock status&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  int_ush02_update-uflag = p_uflag.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  append int_ush02_update.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;  else.&lt;/P&gt;&lt;P&gt;    message e000(zwave) with&lt;/P&gt;&lt;P&gt;               'Internal table insert for change data failed'.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Reward Points if it is helpful&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks&lt;/P&gt;&lt;P&gt;Seshu&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Message was edited by: &lt;/P&gt;&lt;P&gt;        Seshu Maramreddy&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 24 May 2007 01:28:08 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/password-reset-function/m-p/2252092#M487033</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-05-24T01:28:08Z</dc:date>
    </item>
    <item>
      <title>Re: Password Reset function</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/password-reset-function/m-p/2252093#M487034</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Text elements :&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;LOCK Lock&lt;/P&gt;&lt;P&gt;P_DEPT All Department User&lt;/P&gt;&lt;P&gt;P_RF All RF User&lt;/P&gt;&lt;P&gt;S_CLASS User group&lt;/P&gt;&lt;P&gt;S_LDATE Date when lock was done&lt;/P&gt;&lt;P&gt;S_LUSER User who locked&lt;/P&gt;&lt;P&gt;S_USER Special User&lt;/P&gt;&lt;P&gt;UNLOCK Unlock&lt;/P&gt;&lt;P&gt;________ ______________________________&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 24 May 2007 02:48:29 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/password-reset-function/m-p/2252093#M487034</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-05-24T02:48:29Z</dc:date>
    </item>
  </channel>
</rss>

