<?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: Masking Keyfields in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/masking-keyfields/m-p/2667574#M615700</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Below is the sample program go thr that :&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;**********************************************************************************&lt;/P&gt;&lt;P&gt;REPORT zavaya_mask_vendor_addr MESSAGE-ID b1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;This program is to mask the values of fax_number of ADR3, STMP_ADDR of&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;ADR6 and SMTP_SRCH of ADR6 table. Values of all the above mentioned&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;fileds will be set blank for corresponding values of ADRNR field in&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;LFA1 table.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPES: BEGIN OF ty_addr,            "TYPE FOR LFA1 TABLE&lt;/P&gt;&lt;P&gt;       adrnr TYPE lfa1-adrnr,&lt;/P&gt;&lt;P&gt;       END OF ty_addr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPES: BEGIN OF ty_adr3,              "TYPE FOR ADR3 TABLE&lt;/P&gt;&lt;P&gt;        client     TYPE adr3-client,&lt;/P&gt;&lt;P&gt;        addrnumber TYPE adr3-addrnumber,&lt;/P&gt;&lt;P&gt;        persnumber TYPE adr3-persnumber,&lt;/P&gt;&lt;P&gt;        date_from  TYPE adr3-date_from,&lt;/P&gt;&lt;P&gt;        consnumber TYPE adr3-consnumber,&lt;/P&gt;&lt;P&gt;        fax_number TYPE adr3-fax_number,&lt;/P&gt;&lt;P&gt;       END OF ty_adr3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPES: BEGIN OF ty_adr6,            "TYPE FOR ADR6 TABLE&lt;/P&gt;&lt;P&gt;        client     TYPE adr6-client,&lt;/P&gt;&lt;P&gt;        addrnumber TYPE adr6-addrnumber,&lt;/P&gt;&lt;P&gt;        persnumber TYPE adr6-persnumber,&lt;/P&gt;&lt;P&gt;        date_from  TYPE adr6-date_from,&lt;/P&gt;&lt;P&gt;        consnumber TYPE adr6-consnumber,&lt;/P&gt;&lt;P&gt;        smtp_addr  TYPE adr6-smtp_addr,&lt;/P&gt;&lt;P&gt;        smtp_srch  TYPE adr6-smtp_srch,&lt;/P&gt;&lt;P&gt;       END OF ty_adr6.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: i_lfa1 TYPE STANDARD TABLE OF ty_addr INITIAL SIZE 0,&lt;/P&gt;&lt;P&gt;      i_adr3 TYPE STANDARD TABLE OF ty_adr3 INITIAL SIZE 0,&lt;/P&gt;&lt;P&gt;      wa_adr3 TYPE ty_adr3,&lt;/P&gt;&lt;P&gt;      i_adr6 TYPE STANDARD TABLE OF ty_adr6 INITIAL SIZE 0,&lt;/P&gt;&lt;P&gt;      wa_adr6 TYPE ty_adr6,&lt;/P&gt;&lt;P&gt;      wa_tddat TYPE tddat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: g_commit_rec_count LIKE sy-index,    "COUNTER FOR 200 RECORDS&lt;/P&gt;&lt;P&gt;      g_total_rec_upd    LIKE sy-index.    "COUNTER FOR WHOLE RECORDS&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;AT SELECTION-SCREEN.&lt;/P&gt;&lt;P&gt;  PERFORM check_not_production.&lt;/P&gt;&lt;P&gt;  PERFORM AUTH_CHECK using 'ADR3'.&lt;/P&gt;&lt;P&gt;  PERFORM AUTH_CHECK using 'ADR6'.&lt;/P&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;  SELECT adrnr FROM lfa1 INTO TABLE i_lfa1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SORT i_lfa1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DELETE ADJACENT DUPLICATES FROM i_lfa1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DELETE i_lfa1 WHERE adrnr EQ space.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF NOT i_lfa1 IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    PERFORM update_adr3.   "FOR UPDATION ON ADR3 TABLE&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    PERFORM update_adr6.   "FOR UPDATION ON ADR6 TABLE&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDIF.&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  AUTH_CHECK&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;FORM auth_check using p_tab type tddat-tabname.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECT SINGLE * FROM tddat INTO wa_tddat WHERE tabname = p_tab.&lt;/P&gt;&lt;P&gt;  IF sy-subrc = 0 AND wa_tddat-cclass NE space.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    AUTHORITY-CHECK OBJECT 'S_TABU_DIS'&lt;/P&gt;&lt;P&gt;             ID 'DICBERCLS' FIELD wa_tddat-cclass&lt;/P&gt;&lt;P&gt;             ID 'ACTVT' FIELD '02'.&lt;/P&gt;&lt;P&gt;    IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;      MESSAGE ID 'B1' TYPE 'E' NUMBER '125'&lt;/P&gt;&lt;P&gt;        WITH 'S_TABU_DIS' '03' '' ''.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                               " AUTH_CHECK&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_NOT_PRODUCTION&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;FORM check_not_production.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF sy-sysid+2(1) = 'P'.&lt;/P&gt;&lt;P&gt;    MESSAGE e999 WITH&lt;/P&gt;&lt;P&gt;      'This program may not be run in production'.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                               " CHECK_NOT_PRODUCTION&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  OBTAIN_SAP_TABLE_LOCK&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;This function obtains a lock on object RSTABLE for SPECIFIED TABLE&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;its purpose is to prevent job from being submitted twice&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;during same time frame. Does not lock table at oracle&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;level.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;FORM obtain_sap_table_lock USING p_tab TYPE  rstable-tabname.&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'ENQUEUE_E_TABLE'&lt;/P&gt;&lt;P&gt;       EXPORTING&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        mode_rstable   = 'E'&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;            tabname        = p_tab&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        VARKEY         =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        X_TABNAME      = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        X_VARKEY       = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        _SCOPE         = '2'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        _WAIT          = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        _COLLECT       = ' '&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;       EXCEPTIONS&lt;/P&gt;&lt;P&gt;            foreign_lock   = 1&lt;/P&gt;&lt;P&gt;            system_failure = 2&lt;/P&gt;&lt;P&gt;            OTHERS         = 3.&lt;/P&gt;&lt;P&gt;  IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;    MESSAGE e999 WITH&lt;/P&gt;&lt;P&gt;      'Cannot get SAP lock on the table ' p_tab.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                               " OBTAIN_SAP_TABLE_LOCK&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  RELEASE_SAP_TABLE_LOCK&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;FORM release_sap_table_lock USING p_tab TYPE  rstable-tabname.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'DEQUEUE_E_TABLE'&lt;/P&gt;&lt;P&gt;       EXPORTING&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        MODE_RSTABLE = 'E'&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;            tabname      = p_tab&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        VARKEY       =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        X_TABNAME    = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        X_VARKEY     = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        _SCOPE       = '3'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        _SYNCHRON    = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        _COLLECT     = ' '&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;       EXCEPTIONS&lt;/P&gt;&lt;P&gt;            OTHERS       = 1.&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;    MESSAGE e999 WITH&lt;/P&gt;&lt;P&gt;      'Cannot release lock of table ' p_tab ' - call programmer.'.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM.                               " RELEASE_SAP_TABLE_LOCK&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  UPDATE_ADR3&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;      THIS WILL UPDATE THE FAX_NUMBER FIELD IN ADR3 TABLE.&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 update_adr3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ULINE.&lt;/P&gt;&lt;P&gt;  WRITE: / 'REPORT FOR TABLE ADR3'.&lt;/P&gt;&lt;P&gt;  ULINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  g_total_rec_upd = 0.&lt;/P&gt;&lt;P&gt;  g_commit_rec_count = 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM obtain_sap_table_lock USING 'ADR3'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECT client addrnumber persnumber date_from consnumber fax_number&lt;/P&gt;&lt;P&gt;  FROM adr3&lt;/P&gt;&lt;P&gt;  INTO TABLE i_adr3&lt;/P&gt;&lt;P&gt;  FOR ALL ENTRIES IN i_lfa1&lt;/P&gt;&lt;P&gt;  WHERE addrnumber = i_lfa1-adrnr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DELETE i_adr3 WHERE fax_number EQ space.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SORT i_adr3 BY client addrnumber persnumber date_from consnumber.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT i_adr3 INTO wa_adr3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    ADD 1 TO g_total_rec_upd.&lt;/P&gt;&lt;P&gt;    ADD 1 TO g_commit_rec_count.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    UPDATE adr3 CLIENT SPECIFIED&lt;/P&gt;&lt;P&gt;    SET fax_number = ''&lt;/P&gt;&lt;P&gt;    WHERE client = wa_adr3-client&lt;/P&gt;&lt;P&gt;    AND   addrnumber = wa_adr3-addrnumber&lt;/P&gt;&lt;P&gt;    AND   persnumber = wa_adr3-persnumber&lt;/P&gt;&lt;P&gt;    AND   date_from  = wa_adr3-date_from&lt;/P&gt;&lt;P&gt;    AND   consnumber = wa_adr3-consnumber.&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;      WRITE: / 'Error - db update not successful - call programmer.'.&lt;/P&gt;&lt;P&gt;      WRITE: / 'Return code = ', sy-subrc.&lt;/P&gt;&lt;P&gt;      WRITE: / ' Client = ', wa_adr3-client.&lt;/P&gt;&lt;P&gt;      WRITE: ' Address number = ', wa_adr3-addrnumber.&lt;/P&gt;&lt;P&gt;      WRITE: ' Person number = ', wa_adr3-persnumber.&lt;/P&gt;&lt;P&gt;      WRITE: ' Date valid from = ', wa_adr3-date_from.&lt;/P&gt;&lt;P&gt;      WRITE: ' Sequence number = ', wa_adr3-consnumber.&lt;/P&gt;&lt;P&gt;      ROLLBACK WORK.&lt;/P&gt;&lt;P&gt;      MESSAGE e999 WITH&lt;/P&gt;&lt;P&gt;        'Error on db update - call programmer.'.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF g_commit_rec_count = 200.&lt;/P&gt;&lt;P&gt;      COMMIT WORK.&lt;/P&gt;&lt;P&gt;      WRITE: / 'commit work at record ', g_total_rec_upd,&lt;/P&gt;&lt;P&gt;               'return code = ', sy-subrc.&lt;/P&gt;&lt;P&gt;      g_commit_rec_count = 0.&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;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  COMMIT WORK.                         "release remaining records to db&lt;/P&gt;&lt;P&gt;  WRITE: / 'final commit work at record ', g_total_rec_upd,&lt;/P&gt;&lt;P&gt;                 'return code = ', sy-subrc.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM release_sap_table_lock USING 'ADR3'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  WRITE: / 'total number of records updated: ',&lt;/P&gt;&lt;P&gt;               g_total_rec_upd.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " UPDATE_ADR3&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  UPDATE_ADR6&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;     THIS IS TO UPDATE VALUES OF SMTP_ADDR NAD SMTP_SRCH FILEDS IN&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     ADR6 TABLE.&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 update_adr6.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ULINE.&lt;/P&gt;&lt;P&gt;  WRITE: / 'REPORT FOR TABLE ADR6'.&lt;/P&gt;&lt;P&gt;  ULINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  g_total_rec_upd = 0.&lt;/P&gt;&lt;P&gt;  g_commit_rec_count = 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM obtain_sap_table_lock USING 'ADR6'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECT client addrnumber persnumber date_from consnumber&lt;/P&gt;&lt;P&gt;         smtp_addr smtp_srch&lt;/P&gt;&lt;P&gt;  FROM adr6&lt;/P&gt;&lt;P&gt;  INTO TABLE i_adr6&lt;/P&gt;&lt;P&gt;  FOR ALL ENTRIES IN i_lfa1&lt;/P&gt;&lt;P&gt;  WHERE addrnumber = i_lfa1-adrnr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DELETE i_adr6 WHERE smtp_addr EQ space AND smtp_srch EQ space.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SORT i_adr6 BY client addrnumber persnumber date_from consnumber.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT i_adr6 INTO wa_adr6.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    ADD 1 TO g_total_rec_upd.&lt;/P&gt;&lt;P&gt;    ADD 1 TO g_commit_rec_count.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF wa_adr6-smtp_addr NE space.&lt;/P&gt;&lt;P&gt;      wa_adr6-smtp_addr = ''.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF wa_adr6-smtp_srch NE space.&lt;/P&gt;&lt;P&gt;      wa_adr6-smtp_srch = ''.&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;    UPDATE adr6 CLIENT SPECIFIED&lt;/P&gt;&lt;P&gt;    SET smtp_addr = wa_adr6-smtp_addr&lt;/P&gt;&lt;P&gt;        smtp_srch = wa_adr6-smtp_srch&lt;/P&gt;&lt;P&gt;    WHERE client = wa_adr6-client&lt;/P&gt;&lt;P&gt;    AND   addrnumber = wa_adr6-addrnumber&lt;/P&gt;&lt;P&gt;    AND   persnumber = wa_adr6-persnumber&lt;/P&gt;&lt;P&gt;    AND   date_from  = wa_adr6-date_from&lt;/P&gt;&lt;P&gt;    AND   consnumber = wa_adr6-consnumber.&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;      WRITE: / 'Error - db update not successful - call programmer.'.&lt;/P&gt;&lt;P&gt;      WRITE: / 'Return code = ', sy-subrc.&lt;/P&gt;&lt;P&gt;      WRITE: / ' Client = ', wa_adr6-client.&lt;/P&gt;&lt;P&gt;      WRITE: ' Address number = ', wa_adr6-addrnumber.&lt;/P&gt;&lt;P&gt;      WRITE: ' Person number = ', wa_adr6-persnumber.&lt;/P&gt;&lt;P&gt;      WRITE: ' Date valid from = ', wa_adr6-date_from.&lt;/P&gt;&lt;P&gt;      WRITE: ' Sequence number = ', wa_adr6-consnumber.&lt;/P&gt;&lt;P&gt;      ROLLBACK WORK.&lt;/P&gt;&lt;P&gt;      MESSAGE e999 WITH&lt;/P&gt;&lt;P&gt;        'Error on db update - call programmer.'.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF g_commit_rec_count = 200.&lt;/P&gt;&lt;P&gt;      COMMIT WORK.&lt;/P&gt;&lt;P&gt;      WRITE: / 'commit work at record ', g_total_rec_upd,&lt;/P&gt;&lt;P&gt;               'return code = ', sy-subrc.&lt;/P&gt;&lt;P&gt;      g_commit_rec_count = 0.&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;P&gt;  COMMIT WORK.                         "release remaining records to db&lt;/P&gt;&lt;P&gt;  WRITE: / 'final commit work at record ', g_total_rec_upd,&lt;/P&gt;&lt;P&gt;                 'return code = ', sy-subrc.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM release_sap_table_lock USING 'ADR6'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  WRITE: / 'total number of records updated: ',&lt;/P&gt;&lt;P&gt;               g_total_rec_upd.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " UPDATE_ADR6&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="75" type="ul"&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 22 Aug 2007 05:12:09 GMT</pubDate>
    <dc:creator>Former Member</dc:creator>
    <dc:date>2007-08-22T05:12:09Z</dc:date>
    <item>
      <title>Masking Keyfields</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/masking-keyfields/m-p/2667573#M615699</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 copying data from quality server to development . Here the original  employee details  of the client(that is some key fields ex: bank id ,address) should be masked using ABAP code .so how can we proceed.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks in advance.&lt;/P&gt;&lt;P&gt;Rgds,&lt;/P&gt;&lt;P&gt;devika.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 22 Aug 2007 04:57:51 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/masking-keyfields/m-p/2667573#M615699</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-08-22T04:57:51Z</dc:date>
    </item>
    <item>
      <title>Re: Masking Keyfields</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/masking-keyfields/m-p/2667574#M615700</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Below is the sample program go thr that :&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;**********************************************************************************&lt;/P&gt;&lt;P&gt;REPORT zavaya_mask_vendor_addr MESSAGE-ID b1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;This program is to mask the values of fax_number of ADR3, STMP_ADDR of&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;ADR6 and SMTP_SRCH of ADR6 table. Values of all the above mentioned&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;fileds will be set blank for corresponding values of ADRNR field in&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;LFA1 table.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPES: BEGIN OF ty_addr,            "TYPE FOR LFA1 TABLE&lt;/P&gt;&lt;P&gt;       adrnr TYPE lfa1-adrnr,&lt;/P&gt;&lt;P&gt;       END OF ty_addr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPES: BEGIN OF ty_adr3,              "TYPE FOR ADR3 TABLE&lt;/P&gt;&lt;P&gt;        client     TYPE adr3-client,&lt;/P&gt;&lt;P&gt;        addrnumber TYPE adr3-addrnumber,&lt;/P&gt;&lt;P&gt;        persnumber TYPE adr3-persnumber,&lt;/P&gt;&lt;P&gt;        date_from  TYPE adr3-date_from,&lt;/P&gt;&lt;P&gt;        consnumber TYPE adr3-consnumber,&lt;/P&gt;&lt;P&gt;        fax_number TYPE adr3-fax_number,&lt;/P&gt;&lt;P&gt;       END OF ty_adr3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPES: BEGIN OF ty_adr6,            "TYPE FOR ADR6 TABLE&lt;/P&gt;&lt;P&gt;        client     TYPE adr6-client,&lt;/P&gt;&lt;P&gt;        addrnumber TYPE adr6-addrnumber,&lt;/P&gt;&lt;P&gt;        persnumber TYPE adr6-persnumber,&lt;/P&gt;&lt;P&gt;        date_from  TYPE adr6-date_from,&lt;/P&gt;&lt;P&gt;        consnumber TYPE adr6-consnumber,&lt;/P&gt;&lt;P&gt;        smtp_addr  TYPE adr6-smtp_addr,&lt;/P&gt;&lt;P&gt;        smtp_srch  TYPE adr6-smtp_srch,&lt;/P&gt;&lt;P&gt;       END OF ty_adr6.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: i_lfa1 TYPE STANDARD TABLE OF ty_addr INITIAL SIZE 0,&lt;/P&gt;&lt;P&gt;      i_adr3 TYPE STANDARD TABLE OF ty_adr3 INITIAL SIZE 0,&lt;/P&gt;&lt;P&gt;      wa_adr3 TYPE ty_adr3,&lt;/P&gt;&lt;P&gt;      i_adr6 TYPE STANDARD TABLE OF ty_adr6 INITIAL SIZE 0,&lt;/P&gt;&lt;P&gt;      wa_adr6 TYPE ty_adr6,&lt;/P&gt;&lt;P&gt;      wa_tddat TYPE tddat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: g_commit_rec_count LIKE sy-index,    "COUNTER FOR 200 RECORDS&lt;/P&gt;&lt;P&gt;      g_total_rec_upd    LIKE sy-index.    "COUNTER FOR WHOLE RECORDS&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;AT SELECTION-SCREEN.&lt;/P&gt;&lt;P&gt;  PERFORM check_not_production.&lt;/P&gt;&lt;P&gt;  PERFORM AUTH_CHECK using 'ADR3'.&lt;/P&gt;&lt;P&gt;  PERFORM AUTH_CHECK using 'ADR6'.&lt;/P&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;  SELECT adrnr FROM lfa1 INTO TABLE i_lfa1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SORT i_lfa1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DELETE ADJACENT DUPLICATES FROM i_lfa1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DELETE i_lfa1 WHERE adrnr EQ space.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF NOT i_lfa1 IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    PERFORM update_adr3.   "FOR UPDATION ON ADR3 TABLE&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    PERFORM update_adr6.   "FOR UPDATION ON ADR6 TABLE&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDIF.&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  AUTH_CHECK&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;FORM auth_check using p_tab type tddat-tabname.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECT SINGLE * FROM tddat INTO wa_tddat WHERE tabname = p_tab.&lt;/P&gt;&lt;P&gt;  IF sy-subrc = 0 AND wa_tddat-cclass NE space.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    AUTHORITY-CHECK OBJECT 'S_TABU_DIS'&lt;/P&gt;&lt;P&gt;             ID 'DICBERCLS' FIELD wa_tddat-cclass&lt;/P&gt;&lt;P&gt;             ID 'ACTVT' FIELD '02'.&lt;/P&gt;&lt;P&gt;    IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;      MESSAGE ID 'B1' TYPE 'E' NUMBER '125'&lt;/P&gt;&lt;P&gt;        WITH 'S_TABU_DIS' '03' '' ''.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                               " AUTH_CHECK&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_NOT_PRODUCTION&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;FORM check_not_production.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF sy-sysid+2(1) = 'P'.&lt;/P&gt;&lt;P&gt;    MESSAGE e999 WITH&lt;/P&gt;&lt;P&gt;      'This program may not be run in production'.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                               " CHECK_NOT_PRODUCTION&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  OBTAIN_SAP_TABLE_LOCK&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;This function obtains a lock on object RSTABLE for SPECIFIED TABLE&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;its purpose is to prevent job from being submitted twice&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;during same time frame. Does not lock table at oracle&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;level.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;FORM obtain_sap_table_lock USING p_tab TYPE  rstable-tabname.&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'ENQUEUE_E_TABLE'&lt;/P&gt;&lt;P&gt;       EXPORTING&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        mode_rstable   = 'E'&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;            tabname        = p_tab&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        VARKEY         =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        X_TABNAME      = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        X_VARKEY       = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        _SCOPE         = '2'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        _WAIT          = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        _COLLECT       = ' '&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;       EXCEPTIONS&lt;/P&gt;&lt;P&gt;            foreign_lock   = 1&lt;/P&gt;&lt;P&gt;            system_failure = 2&lt;/P&gt;&lt;P&gt;            OTHERS         = 3.&lt;/P&gt;&lt;P&gt;  IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;    MESSAGE e999 WITH&lt;/P&gt;&lt;P&gt;      'Cannot get SAP lock on the table ' p_tab.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                               " OBTAIN_SAP_TABLE_LOCK&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  RELEASE_SAP_TABLE_LOCK&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;FORM release_sap_table_lock USING p_tab TYPE  rstable-tabname.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'DEQUEUE_E_TABLE'&lt;/P&gt;&lt;P&gt;       EXPORTING&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        MODE_RSTABLE = 'E'&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;            tabname      = p_tab&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        VARKEY       =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        X_TABNAME    = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        X_VARKEY     = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        _SCOPE       = '3'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        _SYNCHRON    = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        _COLLECT     = ' '&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;       EXCEPTIONS&lt;/P&gt;&lt;P&gt;            OTHERS       = 1.&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;    MESSAGE e999 WITH&lt;/P&gt;&lt;P&gt;      'Cannot release lock of table ' p_tab ' - call programmer.'.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM.                               " RELEASE_SAP_TABLE_LOCK&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  UPDATE_ADR3&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;      THIS WILL UPDATE THE FAX_NUMBER FIELD IN ADR3 TABLE.&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 update_adr3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ULINE.&lt;/P&gt;&lt;P&gt;  WRITE: / 'REPORT FOR TABLE ADR3'.&lt;/P&gt;&lt;P&gt;  ULINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  g_total_rec_upd = 0.&lt;/P&gt;&lt;P&gt;  g_commit_rec_count = 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM obtain_sap_table_lock USING 'ADR3'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECT client addrnumber persnumber date_from consnumber fax_number&lt;/P&gt;&lt;P&gt;  FROM adr3&lt;/P&gt;&lt;P&gt;  INTO TABLE i_adr3&lt;/P&gt;&lt;P&gt;  FOR ALL ENTRIES IN i_lfa1&lt;/P&gt;&lt;P&gt;  WHERE addrnumber = i_lfa1-adrnr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DELETE i_adr3 WHERE fax_number EQ space.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SORT i_adr3 BY client addrnumber persnumber date_from consnumber.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT i_adr3 INTO wa_adr3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    ADD 1 TO g_total_rec_upd.&lt;/P&gt;&lt;P&gt;    ADD 1 TO g_commit_rec_count.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    UPDATE adr3 CLIENT SPECIFIED&lt;/P&gt;&lt;P&gt;    SET fax_number = ''&lt;/P&gt;&lt;P&gt;    WHERE client = wa_adr3-client&lt;/P&gt;&lt;P&gt;    AND   addrnumber = wa_adr3-addrnumber&lt;/P&gt;&lt;P&gt;    AND   persnumber = wa_adr3-persnumber&lt;/P&gt;&lt;P&gt;    AND   date_from  = wa_adr3-date_from&lt;/P&gt;&lt;P&gt;    AND   consnumber = wa_adr3-consnumber.&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;      WRITE: / 'Error - db update not successful - call programmer.'.&lt;/P&gt;&lt;P&gt;      WRITE: / 'Return code = ', sy-subrc.&lt;/P&gt;&lt;P&gt;      WRITE: / ' Client = ', wa_adr3-client.&lt;/P&gt;&lt;P&gt;      WRITE: ' Address number = ', wa_adr3-addrnumber.&lt;/P&gt;&lt;P&gt;      WRITE: ' Person number = ', wa_adr3-persnumber.&lt;/P&gt;&lt;P&gt;      WRITE: ' Date valid from = ', wa_adr3-date_from.&lt;/P&gt;&lt;P&gt;      WRITE: ' Sequence number = ', wa_adr3-consnumber.&lt;/P&gt;&lt;P&gt;      ROLLBACK WORK.&lt;/P&gt;&lt;P&gt;      MESSAGE e999 WITH&lt;/P&gt;&lt;P&gt;        'Error on db update - call programmer.'.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF g_commit_rec_count = 200.&lt;/P&gt;&lt;P&gt;      COMMIT WORK.&lt;/P&gt;&lt;P&gt;      WRITE: / 'commit work at record ', g_total_rec_upd,&lt;/P&gt;&lt;P&gt;               'return code = ', sy-subrc.&lt;/P&gt;&lt;P&gt;      g_commit_rec_count = 0.&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;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  COMMIT WORK.                         "release remaining records to db&lt;/P&gt;&lt;P&gt;  WRITE: / 'final commit work at record ', g_total_rec_upd,&lt;/P&gt;&lt;P&gt;                 'return code = ', sy-subrc.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM release_sap_table_lock USING 'ADR3'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  WRITE: / 'total number of records updated: ',&lt;/P&gt;&lt;P&gt;               g_total_rec_upd.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " UPDATE_ADR3&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  UPDATE_ADR6&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;     THIS IS TO UPDATE VALUES OF SMTP_ADDR NAD SMTP_SRCH FILEDS IN&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     ADR6 TABLE.&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 update_adr6.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ULINE.&lt;/P&gt;&lt;P&gt;  WRITE: / 'REPORT FOR TABLE ADR6'.&lt;/P&gt;&lt;P&gt;  ULINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  g_total_rec_upd = 0.&lt;/P&gt;&lt;P&gt;  g_commit_rec_count = 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM obtain_sap_table_lock USING 'ADR6'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECT client addrnumber persnumber date_from consnumber&lt;/P&gt;&lt;P&gt;         smtp_addr smtp_srch&lt;/P&gt;&lt;P&gt;  FROM adr6&lt;/P&gt;&lt;P&gt;  INTO TABLE i_adr6&lt;/P&gt;&lt;P&gt;  FOR ALL ENTRIES IN i_lfa1&lt;/P&gt;&lt;P&gt;  WHERE addrnumber = i_lfa1-adrnr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DELETE i_adr6 WHERE smtp_addr EQ space AND smtp_srch EQ space.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SORT i_adr6 BY client addrnumber persnumber date_from consnumber.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT i_adr6 INTO wa_adr6.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    ADD 1 TO g_total_rec_upd.&lt;/P&gt;&lt;P&gt;    ADD 1 TO g_commit_rec_count.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF wa_adr6-smtp_addr NE space.&lt;/P&gt;&lt;P&gt;      wa_adr6-smtp_addr = ''.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF wa_adr6-smtp_srch NE space.&lt;/P&gt;&lt;P&gt;      wa_adr6-smtp_srch = ''.&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;    UPDATE adr6 CLIENT SPECIFIED&lt;/P&gt;&lt;P&gt;    SET smtp_addr = wa_adr6-smtp_addr&lt;/P&gt;&lt;P&gt;        smtp_srch = wa_adr6-smtp_srch&lt;/P&gt;&lt;P&gt;    WHERE client = wa_adr6-client&lt;/P&gt;&lt;P&gt;    AND   addrnumber = wa_adr6-addrnumber&lt;/P&gt;&lt;P&gt;    AND   persnumber = wa_adr6-persnumber&lt;/P&gt;&lt;P&gt;    AND   date_from  = wa_adr6-date_from&lt;/P&gt;&lt;P&gt;    AND   consnumber = wa_adr6-consnumber.&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;      WRITE: / 'Error - db update not successful - call programmer.'.&lt;/P&gt;&lt;P&gt;      WRITE: / 'Return code = ', sy-subrc.&lt;/P&gt;&lt;P&gt;      WRITE: / ' Client = ', wa_adr6-client.&lt;/P&gt;&lt;P&gt;      WRITE: ' Address number = ', wa_adr6-addrnumber.&lt;/P&gt;&lt;P&gt;      WRITE: ' Person number = ', wa_adr6-persnumber.&lt;/P&gt;&lt;P&gt;      WRITE: ' Date valid from = ', wa_adr6-date_from.&lt;/P&gt;&lt;P&gt;      WRITE: ' Sequence number = ', wa_adr6-consnumber.&lt;/P&gt;&lt;P&gt;      ROLLBACK WORK.&lt;/P&gt;&lt;P&gt;      MESSAGE e999 WITH&lt;/P&gt;&lt;P&gt;        'Error on db update - call programmer.'.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF g_commit_rec_count = 200.&lt;/P&gt;&lt;P&gt;      COMMIT WORK.&lt;/P&gt;&lt;P&gt;      WRITE: / 'commit work at record ', g_total_rec_upd,&lt;/P&gt;&lt;P&gt;               'return code = ', sy-subrc.&lt;/P&gt;&lt;P&gt;      g_commit_rec_count = 0.&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;P&gt;  COMMIT WORK.                         "release remaining records to db&lt;/P&gt;&lt;P&gt;  WRITE: / 'final commit work at record ', g_total_rec_upd,&lt;/P&gt;&lt;P&gt;                 'return code = ', sy-subrc.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM release_sap_table_lock USING 'ADR6'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  WRITE: / 'total number of records updated: ',&lt;/P&gt;&lt;P&gt;               g_total_rec_upd.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " UPDATE_ADR6&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="75" type="ul"&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 22 Aug 2007 05:12:09 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/masking-keyfields/m-p/2667574#M615700</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-08-22T05:12:09Z</dc:date>
    </item>
    <item>
      <title>Re: Masking Keyfields</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/masking-keyfields/m-p/2667575#M615701</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Try to use these function module, it will encrypt and decrpt the data&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;
    call function 'FIEB_PASSWORD_ENCRYPT' 
         exporting 
              im_decrypted_password = intext 
         importing 
              ex_encrypted_password = outtext. 
  
******** Decrypting ******************* 
    call function 'FIEB_PASSWORD_DECRYPT' 
         exporting 
              im_encrypted_password = intext 
         importing 
              ex_decrypted_password = outtext. 

&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;aRs&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Message was edited by: &lt;/P&gt;&lt;P&gt;        a®&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 22 Aug 2007 05:18:04 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/masking-keyfields/m-p/2667575#M615701</guid>
      <dc:creator>former_member194669</dc:creator>
      <dc:date>2007-08-22T05:18:04Z</dc:date>
    </item>
  </channel>
</rss>

