<?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: Comparing programs in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/comparing-programs/m-p/1432013#M206427</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Use split screen editor (Tcode SE39)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks &lt;/P&gt;&lt;P&gt;Seshadri G&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 09 Nov 2007 12:27:35 GMT</pubDate>
    <dc:creator>Former Member</dc:creator>
    <dc:date>2007-11-09T12:27:35Z</dc:date>
    <item>
      <title>Comparing programs</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/comparing-programs/m-p/1432003#M206417</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I want to compare a program to another program reg. the differences in the version. Is it possible?&lt;/P&gt;&lt;P&gt;(I don't mean a comparison of a program to a version in Quality or Production, I know about that, I mean if it is possible to compare two different programs).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Any help is appreciated.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 27 Jun 2006 19:56:27 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/comparing-programs/m-p/1432003#M206417</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2006-06-27T19:56:27Z</dc:date>
    </item>
    <item>
      <title>Re: Comparing programs</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/comparing-programs/m-p/1432004#M206418</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi Nuren,&lt;/P&gt;&lt;P&gt; Use T-code &amp;lt;b&amp;gt;SE39&amp;lt;/b&amp;gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 27 Jun 2006 19:57:39 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/comparing-programs/m-p/1432004#M206418</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2006-06-27T19:57:39Z</dc:date>
    </item>
    <item>
      <title>Re: Comparing programs</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/comparing-programs/m-p/1432005#M206419</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;From SE38, click utilities, more utilities, split screen editor.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Rich Heilman&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 27 Jun 2006 20:00:05 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/comparing-programs/m-p/1432005#M206419</guid>
      <dc:creator>RichHeilman</dc:creator>
      <dc:date>2006-06-27T20:00:05Z</dc:date>
    </item>
    <item>
      <title>Re: Comparing programs</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/comparing-programs/m-p/1432006#M206420</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Rich/santosh,&lt;/P&gt;&lt;P&gt;So it is comparing visually by scrolling?&lt;/P&gt;&lt;P&gt;Is it possible to compare it like the one we do for version management comparison (this gives a detailed list of where the changes are made, where the lines differeing etc)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 27 Jun 2006 20:04:31 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/comparing-programs/m-p/1432006#M206420</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2006-06-27T20:04:31Z</dc:date>
    </item>
    <item>
      <title>Re: Comparing programs</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/comparing-programs/m-p/1432007#M206421</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi Nuren,&lt;/P&gt;&lt;P&gt; I guess that way it is possible only by using Version Management option...i.e, UTILITIES-&amp;gt;VERSION-&amp;gt;VERSION MANAGEMENT&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 27 Jun 2006 20:05:33 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/comparing-programs/m-p/1432007#M206421</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2006-06-27T20:05:33Z</dc:date>
    </item>
    <item>
      <title>Re: Comparing programs</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/comparing-programs/m-p/1432008#M206422</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Yes, this is a visual comparison.  I don't think that there is way to compare(like version manangement) across two different programs.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Rich Heilman&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 27 Jun 2006 20:05:49 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/comparing-programs/m-p/1432008#M206422</guid>
      <dc:creator>RichHeilman</dc:creator>
      <dc:date>2006-06-27T20:05:49Z</dc:date>
    </item>
    <item>
      <title>Re: Comparing programs</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/comparing-programs/m-p/1432009#M206423</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Nuren,&lt;/P&gt;&lt;P&gt;Please close this thread by marking helpful answers&lt;/P&gt;&lt;P&gt;&lt;A class="jive_macro jive_macro_thread" href="https://community.sap.com/" __jive_macro_name="thread" modifiedtitle="true" __default_attr="169131"&gt;&lt;/A&gt;&lt;/P&gt;&lt;P&gt;in case if your problem is resloved.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 27 Jun 2006 20:10:30 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/comparing-programs/m-p/1432009#M206423</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2006-06-27T20:10:30Z</dc:date>
    </item>
    <item>
      <title>Re: Comparing programs</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/comparing-programs/m-p/1432010#M206424</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I concurr with Santosh, SE39 has a nice way of comparing two programs.  You can even choose whether you want the default, active, or inactive programs.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 27 Jun 2006 20:10:38 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/comparing-programs/m-p/1432010#M206424</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2006-06-27T20:10:38Z</dc:date>
    </item>
    <item>
      <title>Re: Comparing programs</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/comparing-programs/m-p/1432011#M206425</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I know this is not a fool proof way.  But maybe it will server your immediate purpose.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;

report  zrich_0005.

types: begin of source ,
        line(100) type c,
       end of source.

data: isource1 type table of source with header line.
data: isource2 type table of source with header line.

parameters: p_prg1 type trdir-name.
parameters: p_prg2 type trdir-name.

read report p_prg1 into isource1.
read report p_prg2 into isource2.

loop at isource1.
  read table isource2 index sy-tabix.
  check sy-subrc = 0.
  if isource1 &amp;lt;&amp;gt; isource2.

    write:/ 'Source code inconsistant!!!!'.
    write:/ isource1.
    write:/ isource2.
    skip 1.
  endif.

endloop.

&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Rich Heilman&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 27 Jun 2006 20:12:29 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/comparing-programs/m-p/1432011#M206425</guid>
      <dc:creator>RichHeilman</dc:creator>
      <dc:date>2006-06-27T20:12:29Z</dc:date>
    </item>
    <item>
      <title>Re: Comparing programs</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/comparing-programs/m-p/1432012#M206426</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Guys,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I had a requirement to compare all programs including SAP standard programs as part of our Upgrade project from 4.6c to ECC6.0&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I was browsing the web for my solution. I found some help in one of the forum (sorry I forgot the person's name) and finally developed a program using that help. It really come up well. So, I thought I will share this with all ABAP Guru's every where in the world.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Note: It took 16 hours approx. to compare 2.47 million programs in ECC6.0&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Please send me your suggestion to improve this further.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;REPORT  z_mass_compare_program.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Tables&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;TABLES : rpy_prog. " rfcdes.&lt;/P&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;SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.&lt;/P&gt;&lt;P&gt;SKIP.&lt;/P&gt;&lt;P&gt;SELECT-OPTIONS: s_prn1   FOR  rpy_prog-progname.&lt;/P&gt;&lt;P&gt;PARAMETERS :    p_rfcde1 TYPE rfcdes-rfcdest.&lt;/P&gt;&lt;P&gt;PARAMETERS :    p_rfcde2 TYPE rfcdes-rfcdest.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN END OF BLOCK b1.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN SKIP 1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: BEGIN OF BLOCK b2 WITH FRAME TITLE text-002,&lt;/P&gt;&lt;P&gt;BEGIN OF LINE.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN COMMENT 1(32) text-100 FOR FIELD p_check.&lt;/P&gt;&lt;P&gt;PARAMETER: p_check AS CHECKBOX.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN END OF LINE.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN END OF BLOCK b2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;DATA DECLARATION&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;TYPES : BEGIN OF gty_finaltab,&lt;/P&gt;&lt;P&gt;          progname     TYPE progname  ,&lt;/P&gt;&lt;P&gt;          version1     TYPE versno    ,&lt;/P&gt;&lt;P&gt;          version2     TYPE versno    ,&lt;/P&gt;&lt;P&gt;          changeon1    TYPE rdir_udate,&lt;/P&gt;&lt;P&gt;          changeon2    TYPE rdir_udate,&lt;/P&gt;&lt;P&gt;          changeby1    TYPE unam      ,&lt;/P&gt;&lt;P&gt;          changeby2    TYPE unam      ,&lt;/P&gt;&lt;P&gt;          count_abap1  TYPE sytabix   ,&lt;/P&gt;&lt;P&gt;          count_abap2  TYPE sytabix   ,&lt;/P&gt;&lt;P&gt;          error_abap   TYPE sytabix   ,&lt;/P&gt;&lt;P&gt;          error_text   TYPE sytabix   ,&lt;/P&gt;&lt;P&gt;          gen_text(60) TYPE c         ,&lt;/P&gt;&lt;P&gt;          selk         TYPE c         ,&lt;/P&gt;&lt;P&gt;          color        TYPE lvc_t_scol,  " color&lt;/P&gt;&lt;P&gt;       END OF gty_finaltab.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA : gt_source1     TYPE STANDARD TABLE OF abapsource.&lt;/P&gt;&lt;P&gt;DATA : gt_source11    TYPE STANDARD TABLE OF abaptxt255.&lt;/P&gt;&lt;P&gt;DATA : ls_source1     TYPE abaptxt255.&lt;/P&gt;&lt;P&gt;DATA : gt_source2     TYPE STANDARD TABLE OF abapsource.&lt;/P&gt;&lt;P&gt;DATA : gt_source22    TYPE STANDARD TABLE OF abaptxt255.&lt;/P&gt;&lt;P&gt;DATA : ls_source2     TYPE abaptxt255.&lt;/P&gt;&lt;P&gt;DATA : gt_textelem1   TYPE STANDARD TABLE OF textpool.&lt;/P&gt;&lt;P&gt;DATA : ls_textelem1   TYPE textpool.&lt;/P&gt;&lt;P&gt;DATA : gt_textelem2   TYPE STANDARD TABLE OF textpool.&lt;/P&gt;&lt;P&gt;DATA : ls_textelem2   TYPE textpool.&lt;/P&gt;&lt;P&gt;DATA : ls_progdata1   TYPE rpy_prog.&lt;/P&gt;&lt;P&gt;DATA : ls_progdata2   TYPE rpy_prog.&lt;/P&gt;&lt;P&gt;DATA : ld_error_abap  TYPE sytabix.&lt;/P&gt;&lt;P&gt;DATA : ld_error_text  TYPE sytabix.&lt;/P&gt;&lt;P&gt;DATA : ld_count_abap1 TYPE sytabix.&lt;/P&gt;&lt;P&gt;DATA : ld_count_abap2 TYPE sytabix.&lt;/P&gt;&lt;P&gt;DATA : ld_count1      TYPE sytabix.&lt;/P&gt;&lt;P&gt;DATA : ld_percent     TYPE i.&lt;/P&gt;&lt;P&gt;DATA : ld_text(50)    TYPE c.&lt;/P&gt;&lt;P&gt;DATA : ld_text_pro(4) TYPE c.&lt;/P&gt;&lt;P&gt;DATA : ld_i_save      TYPE c.&lt;/P&gt;&lt;P&gt;DATA : gt_finaltab    TYPE STANDARD TABLE OF gty_finaltab.&lt;/P&gt;&lt;P&gt;DATA : ls_finaltab    TYPE gty_finaltab.&lt;/P&gt;&lt;P&gt;DATA : ls_bdcdata     TYPE bdcdata.&lt;/P&gt;&lt;P&gt;DATA : gt_bdcdata     TYPE STANDARD TABLE OF bdcdata.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="3" type="ul"&gt;&lt;P&gt;ALV DATA ***&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;CONSTANTS : lc_pick(7) TYPE c VALUE 'PICK'.&lt;/P&gt;&lt;P&gt;TYPE-POOLS: slis.&lt;/P&gt;&lt;P&gt;DATA: gt_fieldcat TYPE slis_t_fieldcat_alv,&lt;/P&gt;&lt;P&gt;      ls_fieldcat TYPE slis_fieldcat_alv,&lt;/P&gt;&lt;P&gt;      id_layout   TYPE slis_layout_alv,&lt;/P&gt;&lt;P&gt;      repname     TYPE syrepid,&lt;/P&gt;&lt;P&gt;      gt_events   TYPE slis_t_event.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Cell color&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA: ls_cellcolor_tab TYPE lvc_s_scol,&lt;/P&gt;&lt;P&gt;      lt_cellcolor_tab TYPE lvc_t_scol,&lt;/P&gt;&lt;P&gt;      ls_color         TYPE lvc_s_colo.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;CONSTANTS : lc_fname TYPE char7 VALUE 'STATUS'.&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;START-OF-SELECTION&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;START-OF-SELECTION.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Check Whether You Want To Check SAP Standard Programs&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  IF p_check IS INITIAL.&lt;/P&gt;&lt;P&gt;    SORT s_prn1.&lt;/P&gt;&lt;P&gt;    DELETE ADJACENT DUPLICATES FROM s_prn1.&lt;/P&gt;&lt;P&gt;    DESCRIBE TABLE s_prn1 LINES ld_count1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Loop Around The Program Internal Table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    LOOP AT s_prn1.&lt;/P&gt;&lt;P&gt;      CLEAR: ld_error_abap , ld_error_text, ld_count_abap1,&lt;/P&gt;&lt;P&gt;             ld_count_abap2, ls_finaltab.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      PERFORM progressbar USING sy-tabix ld_count1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Initialise The Variables&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      CLEAR: gt_source1, gt_source11, gt_textelem1, ls_progdata1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Get Local Version Of The Program&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      CALL FUNCTION 'RPY_PROGRAM_READ'&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;         DESTINATION  p_rfcde1&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;           EXPORTING&lt;/P&gt;&lt;P&gt;             language            = sy-langu&lt;/P&gt;&lt;P&gt;             program_name        = s_prn1-low&lt;/P&gt;&lt;P&gt;             with_includelist    = ''&lt;/P&gt;&lt;P&gt;             only_source         = ' '&lt;/P&gt;&lt;P&gt;             only_texts          = ' '&lt;/P&gt;&lt;P&gt;             read_latest_version = 'X'&lt;/P&gt;&lt;P&gt;             with_lowercase      = ' '&lt;/P&gt;&lt;P&gt;          IMPORTING&lt;/P&gt;&lt;P&gt;            prog_inf             = ls_progdata1&lt;/P&gt;&lt;P&gt;          TABLES&lt;/P&gt;&lt;P&gt;                 SOURCE          = gt_source1&lt;/P&gt;&lt;P&gt;                 source_extended = gt_source11&lt;/P&gt;&lt;P&gt;                 textelements    = gt_textelem1&lt;/P&gt;&lt;P&gt;             EXCEPTIONS&lt;/P&gt;&lt;P&gt;                 cancelled             = 1&lt;/P&gt;&lt;P&gt;                 not_found             = 2&lt;/P&gt;&lt;P&gt;                 permission_error      = 3&lt;/P&gt;&lt;P&gt;                 communication_failure = 4&lt;/P&gt;&lt;P&gt;                 system failure        = 5.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      CASE sy-subrc.&lt;/P&gt;&lt;P&gt;        WHEN 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Delete Empty Lines&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          DELETE gt_source11 WHERE LINE IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Ignore Program Name In Text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          DELETE gt_textelem1 WHERE id = 'R'.&lt;/P&gt;&lt;P&gt;          DELETE gt_textelem1 WHERE id = 'H'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Number Of Lines In ABAP Program&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          DESCRIBE TABLE gt_source11[] LINES ld_count_abap1 .&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;Initialise The Variables&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      CLEAR: gt_source2, gt_source22, gt_textelem2, ls_progdata2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Second RFC Call For Program Details&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Get Remote Version&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      CALL FUNCTION 'RPY_PROGRAM_READ'&lt;/P&gt;&lt;P&gt;       DESTINATION  p_rfcde2&lt;/P&gt;&lt;P&gt;           EXPORTING&lt;/P&gt;&lt;P&gt;             language            = sy-langu&lt;/P&gt;&lt;P&gt;             program_name        = s_prn1-low&lt;/P&gt;&lt;P&gt;             with_includelist    = ''&lt;/P&gt;&lt;P&gt;             only_source         = ' '&lt;/P&gt;&lt;P&gt;             only_texts          = ' '&lt;/P&gt;&lt;P&gt;             read_latest_version = 'X'&lt;/P&gt;&lt;P&gt;             with_lowercase      = ' '&lt;/P&gt;&lt;P&gt;       IMPORTING&lt;/P&gt;&lt;P&gt;             prog_inf            = ls_progdata2&lt;/P&gt;&lt;P&gt;       TABLES&lt;/P&gt;&lt;P&gt;                 SOURCE          = gt_source2&lt;/P&gt;&lt;P&gt;                 source_extended = gt_source22&lt;/P&gt;&lt;P&gt;                 textelements    = gt_textelem2&lt;/P&gt;&lt;P&gt;       EXCEPTIONS&lt;/P&gt;&lt;P&gt;                 cancelled             = 1&lt;/P&gt;&lt;P&gt;                 not_found             = 2&lt;/P&gt;&lt;P&gt;                 permission_error      = 3&lt;/P&gt;&lt;P&gt;                 communication_failure = 4&lt;/P&gt;&lt;P&gt;                 system failure        = 5.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      CASE sy-subrc.&lt;/P&gt;&lt;P&gt;        WHEN 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Delete Empty Lines&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          DELETE gt_source22 WHERE LINE IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Ignore Program Name In Text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          DELETE gt_textelem2 WHERE id = 'R'.&lt;/P&gt;&lt;P&gt;          DELETE gt_textelem2 WHERE id = 'H'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Number Of Lines In ABAP Program&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          DESCRIBE TABLE gt_source22[] LINES ld_count_abap2 .&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;Remove All Spaces&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      LOOP AT gt_source11 INTO ls_source1.&lt;/P&gt;&lt;P&gt;        CONDENSE ls_source1-line NO-GAPS.&lt;/P&gt;&lt;P&gt;        MODIFY gt_source11 FROM ls_source1 TRANSPORTING line.&lt;/P&gt;&lt;P&gt;      ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      LOOP AT gt_source22  INTO ls_source2.&lt;/P&gt;&lt;P&gt;        CONDENSE ls_source2-line NO-GAPS .&lt;/P&gt;&lt;P&gt;        MODIFY gt_source22 FROM ls_source2 TRANSPORTING line.&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;Compare ABAP SOURCE&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      CLEAR ld_error_abap.&lt;/P&gt;&lt;P&gt;      LOOP AT gt_source11 INTO ls_source1.&lt;/P&gt;&lt;P&gt;        READ TABLE gt_source22 INTO ls_source2 INDEX sy-tabix.&lt;/P&gt;&lt;P&gt;        TRANSLATE ls_source1-line TO LOWER CASE.&lt;/P&gt;&lt;P&gt;        TRANSLATE ls_source2-line TO LOWER CASE.&lt;/P&gt;&lt;P&gt;        IF ls_source2-line NE ls_source1-line.&lt;/P&gt;&lt;P&gt;          ld_error_abap = ld_error_abap + 1.&lt;/P&gt;&lt;P&gt;        ENDIF.&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;Compare Texts&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      CLEAR ld_error_text.&lt;/P&gt;&lt;P&gt;      LOOP AT gt_textelem1 INTO ls_textelem1.&lt;/P&gt;&lt;P&gt;        READ TABLE gt_textelem2 INTO ls_textelem2 INDEX sy-tabix.&lt;/P&gt;&lt;P&gt;        TRANSLATE ls_textelem2-entry TO LOWER CASE.&lt;/P&gt;&lt;P&gt;        TRANSLATE ls_textelem1-entry TO LOWER CASE.&lt;/P&gt;&lt;P&gt;        IF ls_textelem2-id    NE ls_textelem1-id  OR&lt;/P&gt;&lt;P&gt;           ls_textelem2-key   NE ls_textelem1-key OR&lt;/P&gt;&lt;P&gt;           ls_textelem2-entry NE ls_textelem1-entry.&lt;/P&gt;&lt;P&gt;          ld_error_text = ld_error_text + 1.&lt;/P&gt;&lt;P&gt;        ENDIF.&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;Put to ALV output table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      ls_finaltab-progname    = s_prn1-low.&lt;/P&gt;&lt;P&gt;      ls_finaltab-version1    = ls_progdata1-version.&lt;/P&gt;&lt;P&gt;      ls_finaltab-version2    = ls_progdata2-version.&lt;/P&gt;&lt;P&gt;      ls_finaltab-changeon1   = ls_progdata1-mod_date.&lt;/P&gt;&lt;P&gt;      ls_finaltab-changeon2   = ls_progdata2-mod_date.&lt;/P&gt;&lt;P&gt;      ls_finaltab-changeby1   = ls_progdata1-mod_user.&lt;/P&gt;&lt;P&gt;      ls_finaltab-changeby2   = ls_progdata2-mod_user.&lt;/P&gt;&lt;P&gt;      ls_finaltab-count_abap1 = ld_count_abap1.&lt;/P&gt;&lt;P&gt;      ls_finaltab-count_abap2 = ld_count_abap2.&lt;/P&gt;&lt;P&gt;      ls_finaltab-error_abap  = ld_error_abap.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Adding the color.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      IF  ls_finaltab-error_abap IS INITIAL.&lt;/P&gt;&lt;P&gt;        ls_color-col = 5.  "green&lt;/P&gt;&lt;P&gt;      ELSE.&lt;/P&gt;&lt;P&gt;        ls_color-col = 6.  "red&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;      CLEAR ls_cellcolor_tab.&lt;/P&gt;&lt;P&gt;      CLEAR lt_cellcolor_tab.&lt;/P&gt;&lt;P&gt;      CLEAR ls_finaltab-color.&lt;/P&gt;&lt;P&gt;      ls_cellcolor_tab-fname = 'ERROR_ABAP'. " Field name to color&lt;/P&gt;&lt;P&gt;      ls_color-int = 1.&lt;/P&gt;&lt;P&gt;      ls_color-inv = 0.&lt;/P&gt;&lt;P&gt;      MOVE ls_color TO ls_cellcolor_tab-color.&lt;/P&gt;&lt;P&gt;      INSERT ls_cellcolor_tab INTO TABLE lt_cellcolor_tab.&lt;/P&gt;&lt;P&gt;      INSERT lines of lt_cellcolor_tab INTO TABLE ls_finaltab-color.&lt;/P&gt;&lt;P&gt;      ls_finaltab-error_text = ld_error_text.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Adding the color.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      IF  ls_finaltab-error_text IS INITIAL.&lt;/P&gt;&lt;P&gt;        ls_color-col = 5.  "green&lt;/P&gt;&lt;P&gt;      ELSE.&lt;/P&gt;&lt;P&gt;        ls_color-col = 6.  "red&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;      CLEAR ls_cellcolor_tab.&lt;/P&gt;&lt;P&gt;      CLEAR ls_finaltab-color.&lt;/P&gt;&lt;P&gt;      ls_cellcolor_tab-fname = 'ERROR_TEXT'." Field name to color&lt;/P&gt;&lt;P&gt;      ls_color-int = 1.&lt;/P&gt;&lt;P&gt;      ls_color-inv = 0.&lt;/P&gt;&lt;P&gt;      MOVE ls_color TO ls_cellcolor_tab-color.&lt;/P&gt;&lt;P&gt;      INSERT ls_cellcolor_tab INTO TABLE lt_cellcolor_tab.&lt;/P&gt;&lt;P&gt;      INSERT lines of lt_cellcolor_tab INTO TABLE ls_finaltab-color.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Move to internal table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      APPEND ls_finaltab TO gt_finaltab.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Compare SAP Programs&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    PERFORM compare_sap_programs.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;  CLEAR ls_finaltab.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Display Only If There Is Any Difference&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM display_output.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Build ALV Report&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM fieldcat.&lt;/P&gt;&lt;P&gt;  PERFORM f4000_events CHANGING gt_events.&lt;/P&gt;&lt;P&gt;  PERFORM layout_build USING id_layout.&lt;/P&gt;&lt;P&gt;  PERFORM grid_disp.&lt;/P&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM f4000_events_init                                         *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;P&gt;FORM f4000_events CHANGING i_events TYPE slis_t_event.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Local Variable&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  DATA: line_event TYPE slis_alv_event.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR line_event.&lt;/P&gt;&lt;P&gt;  line_event-name = 'USER_COMMAND'.&lt;/P&gt;&lt;P&gt;  line_event-form = 'F4300_USER_COMMAND'.&lt;/P&gt;&lt;P&gt;  APPEND line_event TO i_events.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " f3000_events_init&lt;/P&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM layout_build                                              *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;P&gt;FORM layout_build USING   p_layout TYPE slis_layout_alv.&lt;/P&gt;&lt;P&gt;  p_layout-box_fieldname       = 'SELK'.    " Checkbox&lt;/P&gt;&lt;P&gt;  p_layout-get_selinfos        = 'X'.&lt;/P&gt;&lt;P&gt;  p_layout-f2code              = 'PICK' .   " Double Click Function&lt;/P&gt;&lt;P&gt;  p_layout-key_hotspot         = 'X'.&lt;/P&gt;&lt;P&gt;  p_layout-info_fieldname      = 'COL'.&lt;/P&gt;&lt;P&gt;  p_layout-coltab_fieldname    = 'COLOR'.&lt;/P&gt;&lt;P&gt;  p_layout-zebra               = 'X'. " Stripes&lt;/P&gt;&lt;P&gt;  p_layout-colwidth_optimize   = 'X'. " Optimize&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.  " layout_build&lt;/P&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM GRIDDISP                                                  *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;P&gt;FORM grid_disp.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Assign Current Program Name&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  repname = sy-repid.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Main Call To Display The Output In ALV Grid&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      i_callback_program = repname&lt;/P&gt;&lt;P&gt;      is_layout          = id_layout&lt;/P&gt;&lt;P&gt;      it_fieldcat        = gt_fieldcat[]&lt;/P&gt;&lt;P&gt;      i_default          = 'X'&lt;/P&gt;&lt;P&gt;      i_save             = ld_i_save&lt;/P&gt;&lt;P&gt;      it_events          = gt_events[]&lt;/P&gt;&lt;P&gt;    TABLES&lt;/P&gt;&lt;P&gt;      t_outtab           = gt_finaltab&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      program_error      = 1&lt;/P&gt;&lt;P&gt;      OTHERS             = 2.&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 ID sy-msgid TYPE sy-msgty NUMBER sy-msgno&lt;/P&gt;&lt;P&gt;            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM.  " grid_disp&lt;/P&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     Form  fieldcat                                                  *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;P&gt;FORM fieldcat.&lt;/P&gt;&lt;P&gt;  DATA: pos   TYPE  i.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  pos = pos + 1.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-col_pos       = pos.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-tabname       = 'gt_fulltab'.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-fieldname     = 'PROGNAME'.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-seltext_m     = 'Program Name'.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-seltext_s     = 'Program Name'.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-seltext_l     = 'Program Name'.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-ddictxt       = 'L'.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-hotspot = 'X'.&lt;/P&gt;&lt;P&gt;  APPEND ls_fieldcat TO gt_fieldcat.&lt;/P&gt;&lt;P&gt;  CLEAR ls_fieldcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  pos = pos + 1.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-col_pos       = pos.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-tabname       = 'gt_fulltab'.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-fieldname     = 'VERSION1'.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-seltext_m     = 'Version 1'.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-seltext_s     = 'Version 1'.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-seltext_l     = 'Version 1'.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-ddictxt       = 'L'.&lt;/P&gt;&lt;P&gt;  APPEND ls_fieldcat TO gt_fieldcat.&lt;/P&gt;&lt;P&gt;  CLEAR ls_fieldcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  pos = pos + 1.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-col_pos       = pos.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-tabname       = 'gt_fulltab'.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-fieldname     = 'VERSION2'.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-seltext_m     = 'Version 2'.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-seltext_s     = 'Version 2'.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-seltext_l     = 'Version 2'.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-ddictxt       = 'L'.&lt;/P&gt;&lt;P&gt;  APPEND ls_fieldcat TO gt_fieldcat.&lt;/P&gt;&lt;P&gt;  CLEAR ls_fieldcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  pos = pos + 1.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-col_pos       = pos.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-tabname       = 'gt_fulltab'.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-fieldname     = 'CHANGEON1'.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-seltext_m     = 'Changed On 1'.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-seltext_s     = 'Changed On 1'.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-seltext_l     = 'Changed On 1'.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-ddictxt       = 'L'.&lt;/P&gt;&lt;P&gt;  APPEND ls_fieldcat TO gt_fieldcat.&lt;/P&gt;&lt;P&gt;  CLEAR ls_fieldcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  pos = pos + 1.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-col_pos       = pos.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-tabname       = 'gt_fulltab'.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-fieldname     = 'CHANGEON2'.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-seltext_m     = 'Changed On 2'.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-seltext_s     = 'Changed On 2'.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-seltext_l     = 'Changed On 2'.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-ddictxt       = 'L'.&lt;/P&gt;&lt;P&gt;  APPEND ls_fieldcat TO gt_fieldcat.&lt;/P&gt;&lt;P&gt;  CLEAR ls_fieldcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  pos = pos + 1.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-col_pos       = pos.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-tabname       = 'gt_fulltab'.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-fieldname     = 'CHANGEBY1'.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-seltext_m     = 'Changed By 1'.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-seltext_s     = 'Changed By 1'.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-seltext_l     = 'Changed By 1'.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-ddictxt       = 'L'.&lt;/P&gt;&lt;P&gt;  APPEND ls_fieldcat TO gt_fieldcat.&lt;/P&gt;&lt;P&gt;  CLEAR ls_fieldcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  pos = pos + 1.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-col_pos       = pos.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-tabname       = 'gt_fulltab'.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-fieldname     = 'CHANGEBY2'.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-seltext_m     = 'Changed By 2'.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-seltext_s     = 'Changed By 2'.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-seltext_l     = 'Changed By 2'.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-ddictxt       = 'L'.&lt;/P&gt;&lt;P&gt;  APPEND ls_fieldcat TO gt_fieldcat.&lt;/P&gt;&lt;P&gt;  CLEAR ls_fieldcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  pos = pos + 1.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-col_pos       = pos.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-tabname       = 'gt_fulltab'.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-fieldname     = 'COUNT_ABAP1'.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-seltext_m     = 'Count 1'.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-seltext_s     = 'Count 1'.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-seltext_l     = 'Count 1'.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-ddictxt       = 'L'.&lt;/P&gt;&lt;P&gt;  APPEND ls_fieldcat TO gt_fieldcat.&lt;/P&gt;&lt;P&gt;  CLEAR ls_fieldcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  pos = pos + 1.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-col_pos       = pos.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-tabname       = 'gt_fulltab'.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-fieldname     = 'COUNT_ABAP2'.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-seltext_m     = 'Count 2'.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-seltext_s     = 'Count 2'.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-seltext_l     = 'Count 2'.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-ddictxt       = 'L'.&lt;/P&gt;&lt;P&gt;  APPEND ls_fieldcat TO gt_fieldcat.&lt;/P&gt;&lt;P&gt;  CLEAR ls_fieldcat.&lt;/P&gt;&lt;P&gt;  CLEAR ls_fieldcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  pos = pos + 1.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-col_pos       = pos.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-tabname       = 'gt_fulltab'.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-fieldname     = 'ERROR_ABAP'.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-seltext_m     = 'ABAP Diff.'.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-seltext_s     = 'ABAP Diff.'.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-seltext_l     = 'ABAP Diff.'.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-ddictxt       = 'L'.&lt;/P&gt;&lt;P&gt;  APPEND ls_fieldcat TO gt_fieldcat.&lt;/P&gt;&lt;P&gt;  CLEAR ls_fieldcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  pos = pos + 1.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-col_pos       = pos.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-tabname       = 'gt_fulltab'.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-fieldname     = 'ERROR_TEXT'.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-seltext_m     = 'Text Diff.'.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-seltext_s     = 'Text Diff.'.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-seltext_l     = 'Text Diff.'.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-ddictxt       = 'L'.&lt;/P&gt;&lt;P&gt;  APPEND ls_fieldcat TO gt_fieldcat.&lt;/P&gt;&lt;P&gt;  CLEAR ls_fieldcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  pos = pos + 1.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-col_pos       = pos.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-tabname       = 'gt_fulltab'.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-fieldname     = 'GEN_TEXT'.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-seltext_m     = 'Status'.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-seltext_s     = 'Status'.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-seltext_l     = 'Status'.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-ddictxt       = 'L'.&lt;/P&gt;&lt;P&gt;  APPEND ls_fieldcat TO gt_fieldcat.&lt;/P&gt;&lt;P&gt;  CLEAR ls_fieldcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " fieldcat&lt;/P&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     Form  progressbar                                               *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;P&gt;FORM progressbar USING p_tabix p_count.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ld_percent = 100 * ( p_tabix - 1 ) / p_count.&lt;/P&gt;&lt;P&gt;  MOVE ld_percent TO ld_text_pro.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ld_text   = '% of programs processed'.&lt;/P&gt;&lt;P&gt;  CONCATENATE ld_text_pro ld_text&lt;/P&gt;&lt;P&gt;         INTO ld_text&lt;/P&gt;&lt;P&gt;    SEPARATED BY space.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      percentage = ld_percent&lt;/P&gt;&lt;P&gt;      text       = ld_text.&lt;/P&gt;&lt;P&gt;ENDFORM.                    " progressbar&lt;/P&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM f4300_user_command                                        *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;P&gt;FORM f4300_user_command USING ucomm LIKE sy-ucomm&lt;/P&gt;&lt;P&gt;                        ls_selfield TYPE slis_selfield.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Per default, keep position and refresh screen with DISPLAY&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  ls_selfield-col_stable = 'X'.&lt;/P&gt;&lt;P&gt;  ls_selfield-row_stable = 'X'.&lt;/P&gt;&lt;P&gt;  ls_selfield-refresh = 'X'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CASE ucomm.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Double-click **********************&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    WHEN lc_pick.  " Doubleclick anywhere on line + hotspot&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      READ TABLE gt_finaltab INDEX ls_selfield-tabindex&lt;/P&gt;&lt;P&gt;            INTO ls_finaltab.&lt;/P&gt;&lt;P&gt;      CLEAR gt_bdcdata.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_dynpro USING 'SAPLWBABAP'      '0100'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_field  USING 'RS38M-FUNC_EDIT' 'X'.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_field  USING 'rs38m-programm'  ls_finaltab-progname.&lt;/P&gt;&lt;P&gt;      PERFORM bdc_field  USING 'BDC_OKCODE'      '=SHOP'.&lt;/P&gt;&lt;P&gt;      CALL TRANSACTION 'SE38' USING gt_bdcdata MODE 'E'.&lt;/P&gt;&lt;P&gt;    WHEN OTHERS.&lt;/P&gt;&lt;P&gt;  ENDCASE.&lt;/P&gt;&lt;P&gt;  CLEAR ucomm.&lt;/P&gt;&lt;P&gt;ENDFORM.                    " f4300_user_command&lt;/P&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     Form  bdc_dynpro                                                *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;P&gt;FORM bdc_dynpro USING program dynpro.&lt;/P&gt;&lt;P&gt;  CLEAR ls_bdcdata.&lt;/P&gt;&lt;P&gt;  ls_bdcdata-program  = program.&lt;/P&gt;&lt;P&gt;  ls_bdcdata-dynpro   = dynpro.&lt;/P&gt;&lt;P&gt;  ls_bdcdata-dynbegin = 'X'.&lt;/P&gt;&lt;P&gt;  APPEND ls_bdcdata TO gt_bdcdata.&lt;/P&gt;&lt;P&gt;ENDFORM.                    " bdc_dynpro&lt;/P&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM BDC_FIELD                                                 *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;P&gt;FORM bdc_field USING fnam fval.&lt;/P&gt;&lt;P&gt;  CLEAR ls_bdcdata.&lt;/P&gt;&lt;P&gt;  ls_bdcdata-fnam = fnam.&lt;/P&gt;&lt;P&gt;  MOVE fval TO  ls_bdcdata-fval .&lt;/P&gt;&lt;P&gt;  APPEND ls_bdcdata TO gt_bdcdata.&lt;/P&gt;&lt;P&gt;ENDFORM.                    " bdc_field&lt;/P&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     Form  Compare_SAP_Programs                                      *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;P&gt;FORM compare_sap_programs .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  TYPES: BEGIN OF t_trdir,&lt;/P&gt;&lt;P&gt;            name TYPE reposrc-progname,&lt;/P&gt;&lt;P&gt;         END OF t_trdir.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Local Variables&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  DATA: i_trdir  TYPE STANDARD TABLE OF t_trdir,&lt;/P&gt;&lt;P&gt;        wa_trdir TYPE t_trdir.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECT name&lt;/P&gt;&lt;P&gt;    INTO TABLE i_trdir&lt;/P&gt;&lt;P&gt;    FROM trdir.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  WHERE name in s_prn1.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SORT i_trdir.&lt;/P&gt;&lt;P&gt;  DELETE ADJACENT DUPLICATES FROM i_trdir.&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE i_trdir LINES ld_count1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Loop Around The Program Internal Table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  LOOP AT i_trdir INTO wa_trdir.&lt;/P&gt;&lt;P&gt;    CLEAR: ld_error_abap , ld_error_text, ld_count_abap1,&lt;/P&gt;&lt;P&gt;           ld_count_abap2, ls_finaltab.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    PERFORM progressbar USING sy-tabix ld_count1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Initialise The Variables&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CLEAR: gt_source1, gt_source11, gt_textelem1, ls_progdata1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Get Local Version Of The Program&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CALL FUNCTION 'RPY_PROGRAM_READ'&lt;/P&gt;&lt;P&gt;         EXPORTING&lt;/P&gt;&lt;P&gt;           language            = sy-langu&lt;/P&gt;&lt;P&gt;           program_name        = wa_trdir-name&lt;/P&gt;&lt;P&gt;           with_includelist    = ''&lt;/P&gt;&lt;P&gt;           only_source         = ' '&lt;/P&gt;&lt;P&gt;           only_texts          = ' '&lt;/P&gt;&lt;P&gt;           read_latest_version = 'X'&lt;/P&gt;&lt;P&gt;           with_lowercase      = ' '&lt;/P&gt;&lt;P&gt;        IMPORTING&lt;/P&gt;&lt;P&gt;          prog_inf             = ls_progdata1&lt;/P&gt;&lt;P&gt;        TABLES&lt;/P&gt;&lt;P&gt;               SOURCE          = gt_source1&lt;/P&gt;&lt;P&gt;               source_extended = gt_source11&lt;/P&gt;&lt;P&gt;               textelements    = gt_textelem1&lt;/P&gt;&lt;P&gt;           EXCEPTIONS&lt;/P&gt;&lt;P&gt;               cancelled             = 1&lt;/P&gt;&lt;P&gt;               not_found             = 2&lt;/P&gt;&lt;P&gt;               permission_error      = 3&lt;/P&gt;&lt;P&gt;               communication_failure = 4&lt;/P&gt;&lt;P&gt;               system failure        = 5.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CASE sy-subrc.&lt;/P&gt;&lt;P&gt;      WHEN 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Delete Empty Lines&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        DELETE gt_source11 WHERE LINE IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Ignore Program Name In Text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        DELETE gt_textelem1 WHERE id = 'R'.&lt;/P&gt;&lt;P&gt;        DELETE gt_textelem1 WHERE id = 'H'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Number Of Lines In ABAP Program&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        DESCRIBE TABLE gt_source11[] LINES ld_count_abap1 .&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     WHEN OTHERS.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       CONTINUE.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&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;Initialise The Variables&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CLEAR: gt_source2, gt_source22, gt_textelem2, ls_progdata2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Second RFC Call For Program Details&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Get Remote Version&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CALL FUNCTION 'RPY_PROGRAM_READ'&lt;/P&gt;&lt;P&gt;     DESTINATION  p_rfcde2&lt;/P&gt;&lt;P&gt;         EXPORTING&lt;/P&gt;&lt;P&gt;           language            = sy-langu&lt;/P&gt;&lt;P&gt;           program_name        = wa_trdir-name&lt;/P&gt;&lt;P&gt;           with_includelist    = ''&lt;/P&gt;&lt;P&gt;           only_source         = ' '&lt;/P&gt;&lt;P&gt;           only_texts          = ' '&lt;/P&gt;&lt;P&gt;           read_latest_version = 'X'&lt;/P&gt;&lt;P&gt;           with_lowercase      = ' '&lt;/P&gt;&lt;P&gt;     IMPORTING&lt;/P&gt;&lt;P&gt;           prog_inf            = ls_progdata2&lt;/P&gt;&lt;P&gt;     TABLES&lt;/P&gt;&lt;P&gt;               SOURCE          = gt_source2&lt;/P&gt;&lt;P&gt;               source_extended = gt_source22&lt;/P&gt;&lt;P&gt;               textelements    = gt_textelem2&lt;/P&gt;&lt;P&gt;     EXCEPTIONS&lt;/P&gt;&lt;P&gt;               cancelled             = 1&lt;/P&gt;&lt;P&gt;               not_found             = 2&lt;/P&gt;&lt;P&gt;               permission_error      = 3&lt;/P&gt;&lt;P&gt;               communication_failure = 4&lt;/P&gt;&lt;P&gt;               system failure        = 5.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CASE sy-subrc.&lt;/P&gt;&lt;P&gt;      WHEN 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Delete Empty Lines&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        DELETE gt_source22 WHERE LINE IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Ignore Program Name In Text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        DELETE gt_textelem2 WHERE id = 'R'.&lt;/P&gt;&lt;P&gt;        DELETE gt_textelem2 WHERE id = 'H'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Number Of Lines In ABAP Program&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        DESCRIBE TABLE gt_source22[] LINES ld_count_abap2 .&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;Remove All Spaces&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    LOOP AT gt_source11 INTO ls_source1.&lt;/P&gt;&lt;P&gt;      CONDENSE ls_source1-line NO-GAPS.&lt;/P&gt;&lt;P&gt;      MODIFY gt_source11 FROM ls_source1 TRANSPORTING line.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    LOOP AT gt_source22  INTO ls_source2.&lt;/P&gt;&lt;P&gt;      CONDENSE ls_source2-line NO-GAPS .&lt;/P&gt;&lt;P&gt;      MODIFY gt_source22 FROM ls_source2 TRANSPORTING line.&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;Compare ABAP SOURCE&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CLEAR ld_error_abap.&lt;/P&gt;&lt;P&gt;    LOOP AT gt_source11 INTO ls_source1.&lt;/P&gt;&lt;P&gt;      READ TABLE gt_source22 INTO ls_source2 INDEX sy-tabix.&lt;/P&gt;&lt;P&gt;      TRANSLATE ls_source1-line TO LOWER CASE.&lt;/P&gt;&lt;P&gt;      TRANSLATE ls_source2-line TO LOWER CASE.&lt;/P&gt;&lt;P&gt;      IF ls_source2-line NE ls_source1-line.&lt;/P&gt;&lt;P&gt;        ld_error_abap = ld_error_abap + 1.&lt;/P&gt;&lt;P&gt;      ENDIF.&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;Compare Texts&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CLEAR ld_error_text.&lt;/P&gt;&lt;P&gt;    LOOP AT gt_textelem1 INTO ls_textelem1.&lt;/P&gt;&lt;P&gt;      READ TABLE gt_textelem2 INTO ls_textelem2 INDEX sy-tabix.&lt;/P&gt;&lt;P&gt;      TRANSLATE ls_textelem2-entry TO LOWER CASE.&lt;/P&gt;&lt;P&gt;      TRANSLATE ls_textelem1-entry TO LOWER CASE.&lt;/P&gt;&lt;P&gt;      IF ls_textelem2-id    NE ls_textelem1-id  OR&lt;/P&gt;&lt;P&gt;         ls_textelem2-key   NE ls_textelem1-key OR&lt;/P&gt;&lt;P&gt;         ls_textelem2-entry NE ls_textelem1-entry.&lt;/P&gt;&lt;P&gt;        ld_error_text = ld_error_text + 1.&lt;/P&gt;&lt;P&gt;      ENDIF.&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;Put to ALV output table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    ls_finaltab-progname    = wa_trdir-name.&lt;/P&gt;&lt;P&gt;    ls_finaltab-version1    = ls_progdata1-version.&lt;/P&gt;&lt;P&gt;    ls_finaltab-version2    = ls_progdata2-version.&lt;/P&gt;&lt;P&gt;    ls_finaltab-changeon1   = ls_progdata1-mod_date.&lt;/P&gt;&lt;P&gt;    ls_finaltab-changeon2   = ls_progdata2-mod_date.&lt;/P&gt;&lt;P&gt;    ls_finaltab-changeby1   = ls_progdata1-mod_user.&lt;/P&gt;&lt;P&gt;    ls_finaltab-changeby2   = ls_progdata2-mod_user.&lt;/P&gt;&lt;P&gt;    ls_finaltab-count_abap1 = ld_count_abap1.&lt;/P&gt;&lt;P&gt;    ls_finaltab-count_abap2 = ld_count_abap2.&lt;/P&gt;&lt;P&gt;    ls_finaltab-error_abap  = ld_error_abap.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Adding the color.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    IF  ls_finaltab-error_abap IS INITIAL.&lt;/P&gt;&lt;P&gt;      ls_color-col = 5.  "green&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;      ls_color-col = 6.  "red&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;    CLEAR ls_cellcolor_tab.&lt;/P&gt;&lt;P&gt;    CLEAR lt_cellcolor_tab.&lt;/P&gt;&lt;P&gt;    CLEAR ls_finaltab-color.&lt;/P&gt;&lt;P&gt;    ls_cellcolor_tab-fname = 'ERROR_ABAP'. " Field name to color&lt;/P&gt;&lt;P&gt;    ls_color-int = 1.&lt;/P&gt;&lt;P&gt;    ls_color-inv = 0.&lt;/P&gt;&lt;P&gt;    MOVE ls_color TO ls_cellcolor_tab-color.&lt;/P&gt;&lt;P&gt;    INSERT ls_cellcolor_tab INTO TABLE lt_cellcolor_tab.&lt;/P&gt;&lt;P&gt;    INSERT lines of lt_cellcolor_tab INTO TABLE ls_finaltab-color.&lt;/P&gt;&lt;P&gt;    ls_finaltab-error_text = ld_error_text.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Adding the color.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    IF  ls_finaltab-error_text IS INITIAL.&lt;/P&gt;&lt;P&gt;      ls_color-col = 5.  "green&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;      ls_color-col = 6.  "red&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;    CLEAR ls_cellcolor_tab.&lt;/P&gt;&lt;P&gt;    CLEAR ls_finaltab-color.&lt;/P&gt;&lt;P&gt;    ls_cellcolor_tab-fname = 'ERROR_TEXT'." Field name to color&lt;/P&gt;&lt;P&gt;    ls_color-int = 1.&lt;/P&gt;&lt;P&gt;    ls_color-inv = 0.&lt;/P&gt;&lt;P&gt;    MOVE ls_color TO ls_cellcolor_tab-color.&lt;/P&gt;&lt;P&gt;    INSERT ls_cellcolor_tab INTO TABLE lt_cellcolor_tab.&lt;/P&gt;&lt;P&gt;    INSERT lines of lt_cellcolor_tab INTO TABLE ls_finaltab-color.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Move to internal table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    APPEND ls_finaltab TO gt_finaltab.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;ENDFORM.                    " Compare_SAP_Programs&lt;/P&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; Form  display_output                                                *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;P&gt;FORM display_output .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Local Variables&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  DATA: l_abap TYPE i ,&lt;/P&gt;&lt;P&gt;        l_text TYPE i .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Loop Around Ther Internal Table gt_finaltab&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  LOOP AT gt_finaltab INTO ls_finaltab.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Assign The Values To Variables&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    l_abap = ls_finaltab-error_abap.&lt;/P&gt;&lt;P&gt;    l_text = ls_finaltab-error_text.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF l_abap &amp;gt; 0 OR&lt;/P&gt;&lt;P&gt;       l_text &amp;gt; 0.&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;      DELETE TABLE gt_finaltab FROM ls_finaltab.&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;ENDFORM.                    " display_output&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 09 Nov 2007 12:21:29 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/comparing-programs/m-p/1432012#M206426</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-11-09T12:21:29Z</dc:date>
    </item>
    <item>
      <title>Re: Comparing programs</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/comparing-programs/m-p/1432013#M206427</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Use split screen editor (Tcode SE39)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks &lt;/P&gt;&lt;P&gt;Seshadri G&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 09 Nov 2007 12:27:35 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/comparing-programs/m-p/1432013#M206427</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-11-09T12:27:35Z</dc:date>
    </item>
    <item>
      <title>Re: Comparing programs</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/comparing-programs/m-p/1432014#M206428</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Yes. You can use split screen editor or SE39 for single program. But when you compare 2.47 million programs.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 09 Nov 2007 12:39:48 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/comparing-programs/m-p/1432014#M206428</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-11-09T12:39:48Z</dc:date>
    </item>
  </channel>
</rss>

