<?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: how to implement classes with alv's in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/how-to-implement-classes-with-alv-s/m-p/3586102#M863455</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;some links.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="https://community.sap.com/www.sapgenie.com" target="test_blank"&gt;www.sapgenie.com&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="https://community.sap.com/www.abap4u.com" target="test_blank"&gt;www.abap4u.com&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://help.sap.com/saphelp_nw2004s/helpdata/en/5e/88d440e14f8431e10000000a1550b0/frameset.htm" target="test_blank"&gt;http://help.sap.com/saphelp_nw2004s/helpdata/en/5e/88d440e14f8431e10000000a1550b0/frameset.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;download the PDF from following link.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCSRVALV/BCSRVALV.pdf" target="test_blank"&gt;http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCSRVALV/BCSRVALV.pdf&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The ALV object Grid methods allow the same functionality as ALV grid report function modules but are displayed within&lt;/P&gt;&lt;P&gt;a screen (dialog program). SAP has provided a suit of programs which demonstrate how to For examples see standard SAP &lt;/P&gt;&lt;P&gt;programs as detailed below:&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;BCALV_EDIT_01 This report illustrates the simplest case of using an editable/noneditable ALV Grid Control.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;BCALV_EDIT_02 This report illustrates how to set chosen cells of an ALV Grid Control editable.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;BCALV_EDIT_03 In this example the user may change values of fields SEATSOCC (occupied seats) and/or PLANETYPE. &lt;/P&gt;&lt;P&gt;The report checks the input value(s) semantically and provides protocol messages in case of error&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;BCALV_EDIT_04 This report illustrates how to add and remove lines to a table using the ALV Grid Control and how to &lt;/P&gt;&lt;P&gt;implement the saving of the new data.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;BCALV_EDIT_05 This example shows how to use checkboxes within an ALV Grid Control. You learn:&lt;/P&gt;&lt;P&gt;	(1) how to define a column for editable checkboxes for an attribute of your list&lt;/P&gt;&lt;P&gt;	(2) how to evaluate the checked checkboxes&lt;/P&gt;&lt;P&gt;	(3) how to switch between editable and non-editable checkboxes&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;BCALV_EDIT_06 This example shows how to define a dropdown listbox for all cells of one column in an editable ALV &lt;/P&gt;&lt;P&gt;Grid Control.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;BCALV_EDIT_07 This example shows how to define dropdown listboxes for particular cells of your output table.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;BCALV_EDIT_08 This report implements an ALV Grid Control with an application specific F4 help. The following aspects &lt;/P&gt;&lt;P&gt;are dealt with:&lt;/P&gt;&lt;P&gt;	(1) how to replace the standard f4 help&lt;/P&gt;&lt;P&gt;	(2) how to pass the selected value to the ALV Grid Control&lt;/P&gt;&lt;P&gt;	(3) how to build an f4 help, whose value range depend on a value of another cell.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Anversha&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 26 Mar 2008 09:11:37 GMT</pubDate>
    <dc:creator>anversha_s</dc:creator>
    <dc:date>2008-03-26T09:11:37Z</dc:date>
    <item>
      <title>how to implement classes with alv's</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/how-to-implement-classes-with-alv-s/m-p/3586100#M863453</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi&lt;/P&gt;&lt;P&gt;how to implement classes with alv's&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 26 Mar 2008 08:57:37 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/how-to-implement-classes-with-alv-s/m-p/3586100#M863453</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-03-26T08:57:37Z</dc:date>
    </item>
    <item>
      <title>Re: how to implement classes with alv's</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/how-to-implement-classes-with-alv-s/m-p/3586101#M863454</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;A class="jive_macro jive_macro_message" href="https://community.sap.com/" __jive_macro_name="message" modifiedtitle="true" __default_attr="4665298"&gt;&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A class="jive_macro jive_macro_message" href="https://community.sap.com/" __jive_macro_name="message" modifiedtitle="true" __default_attr="4796382"&gt;&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A class="jive_macro jive_macro_message" href="https://community.sap.com/" __jive_macro_name="message" modifiedtitle="true" __default_attr="4799163"&gt;&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="https://forums.sdn.sap.com/click.jspa?searchID=10083663&amp;amp;messageID=4678107" target="test_blank"&gt;https://forums.sdn.sap.com/click.jspa?searchID=10083663&amp;amp;messageID=4678107&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Reward points if it is useful...&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 26 Mar 2008 09:04:51 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/how-to-implement-classes-with-alv-s/m-p/3586101#M863454</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-03-26T09:04:51Z</dc:date>
    </item>
    <item>
      <title>Re: how to implement classes with alv's</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/how-to-implement-classes-with-alv-s/m-p/3586102#M863455</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;some links.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="https://community.sap.com/www.sapgenie.com" target="test_blank"&gt;www.sapgenie.com&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="https://community.sap.com/www.abap4u.com" target="test_blank"&gt;www.abap4u.com&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://help.sap.com/saphelp_nw2004s/helpdata/en/5e/88d440e14f8431e10000000a1550b0/frameset.htm" target="test_blank"&gt;http://help.sap.com/saphelp_nw2004s/helpdata/en/5e/88d440e14f8431e10000000a1550b0/frameset.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;download the PDF from following link.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCSRVALV/BCSRVALV.pdf" target="test_blank"&gt;http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCSRVALV/BCSRVALV.pdf&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The ALV object Grid methods allow the same functionality as ALV grid report function modules but are displayed within&lt;/P&gt;&lt;P&gt;a screen (dialog program). SAP has provided a suit of programs which demonstrate how to For examples see standard SAP &lt;/P&gt;&lt;P&gt;programs as detailed below:&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;BCALV_EDIT_01 This report illustrates the simplest case of using an editable/noneditable ALV Grid Control.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;BCALV_EDIT_02 This report illustrates how to set chosen cells of an ALV Grid Control editable.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;BCALV_EDIT_03 In this example the user may change values of fields SEATSOCC (occupied seats) and/or PLANETYPE. &lt;/P&gt;&lt;P&gt;The report checks the input value(s) semantically and provides protocol messages in case of error&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;BCALV_EDIT_04 This report illustrates how to add and remove lines to a table using the ALV Grid Control and how to &lt;/P&gt;&lt;P&gt;implement the saving of the new data.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;BCALV_EDIT_05 This example shows how to use checkboxes within an ALV Grid Control. You learn:&lt;/P&gt;&lt;P&gt;	(1) how to define a column for editable checkboxes for an attribute of your list&lt;/P&gt;&lt;P&gt;	(2) how to evaluate the checked checkboxes&lt;/P&gt;&lt;P&gt;	(3) how to switch between editable and non-editable checkboxes&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;BCALV_EDIT_06 This example shows how to define a dropdown listbox for all cells of one column in an editable ALV &lt;/P&gt;&lt;P&gt;Grid Control.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;BCALV_EDIT_07 This example shows how to define dropdown listboxes for particular cells of your output table.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;BCALV_EDIT_08 This report implements an ALV Grid Control with an application specific F4 help. The following aspects &lt;/P&gt;&lt;P&gt;are dealt with:&lt;/P&gt;&lt;P&gt;	(1) how to replace the standard f4 help&lt;/P&gt;&lt;P&gt;	(2) how to pass the selected value to the ALV Grid Control&lt;/P&gt;&lt;P&gt;	(3) how to build an f4 help, whose value range depend on a value of another cell.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Anversha&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 26 Mar 2008 09:11:37 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/how-to-implement-classes-with-alv-s/m-p/3586102#M863455</guid>
      <dc:creator>anversha_s</dc:creator>
      <dc:date>2008-03-26T09:11:37Z</dc:date>
    </item>
    <item>
      <title>Re: how to implement classes with alv's</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/how-to-implement-classes-with-alv-s/m-p/3586103#M863456</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hai.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;check this example codes.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*"Table declarations...................................................&lt;/P&gt;&lt;P&gt;TABLES:&lt;/P&gt;&lt;P&gt;EKKO, " Purchasing Document Header&lt;/P&gt;&lt;P&gt;CDHDR, " Change document header&lt;/P&gt;&lt;P&gt;SSCRFIELDS. " Fields on selection screens&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*"Selection screen elements............................................&lt;/P&gt;&lt;P&gt;SELECT-OPTIONS:&lt;/P&gt;&lt;P&gt;S_EBELN FOR EKKO-EBELN, " Purchasing Document Number&lt;/P&gt;&lt;P&gt;S_LIFNR FOR EKKO-LIFNR, " Vendor's account number&lt;/P&gt;&lt;P&gt;S_EKGRP FOR EKKO-EKGRP, " Purchasing group&lt;/P&gt;&lt;P&gt;S_BEDAT FOR EKKO-BEDAT, " Purchasing Document Date&lt;/P&gt;&lt;P&gt;S_UDATE FOR CDHDR-UDATE. " Creation date of the change&lt;/P&gt;&lt;P&gt;" document&lt;/P&gt;&lt;P&gt;*" Data declarations...................................................&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;"----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Field String to hold Purchase Document Number *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;"----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA:&lt;/P&gt;&lt;P&gt;BEGIN OF FS_EBELN,&lt;/P&gt;&lt;P&gt;EBELN(90) TYPE C, " Purchase Document Number&lt;/P&gt;&lt;P&gt;ERNAM TYPE EKKO-ERNAM, " Name of Person who Created&lt;/P&gt;&lt;P&gt;" the Object&lt;/P&gt;&lt;P&gt;LIFNR TYPE EKKO-LIFNR, " Vendor's account number&lt;/P&gt;&lt;P&gt;EKGRP TYPE EKKO-EKGRP, " Purchasing group&lt;/P&gt;&lt;P&gt;BEDAT TYPE EKKO-BEDAT, " Purchasing Document Date&lt;/P&gt;&lt;P&gt;END OF FS_EBELN,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;"----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Field String to hold Purchase Document Header *&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;BEGIN OF FS_EKKO,&lt;/P&gt;&lt;P&gt;EBELN TYPE EKKO-EBELN, " Purchasing Document Number&lt;/P&gt;&lt;P&gt;ERNAM TYPE EKKO-ERNAM, " Name of Person who Created the&lt;/P&gt;&lt;P&gt;" Object&lt;/P&gt;&lt;P&gt;LIFNR TYPE EKKO-LIFNR, " Vendor's account number&lt;/P&gt;&lt;P&gt;EKGRP TYPE EKKO-EKGRP, " Purchasing group&lt;/P&gt;&lt;P&gt;BEDAT TYPE EKKO-BEDAT, " Purchasing Document Date&lt;/P&gt;&lt;P&gt;END OF FS_EKKO,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;"----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Field String to hold Account Number and name of the Vendor *&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;BEGIN OF FS_LFA1,&lt;/P&gt;&lt;P&gt;LIFNR TYPE LFA1-LIFNR, " Account Number of Vendor&lt;/P&gt;&lt;P&gt;NAME1 TYPE LFA1-NAME1, " Name1&lt;/P&gt;&lt;P&gt;END OF FS_LFA1,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;"----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Field String to hold Change date and the name of the user *&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;BEGIN OF FS_CDHDR,&lt;/P&gt;&lt;P&gt;OBJECTCLAS TYPE CDHDR-OBJECTCLAS, " Object Class&lt;/P&gt;&lt;P&gt;OBJECTID TYPE CDHDR-OBJECTID, " Object value&lt;/P&gt;&lt;P&gt;CHANGENR TYPE CDHDR-CHANGENR, " Document change number&lt;/P&gt;&lt;P&gt;USERNAME TYPE CDHDR-USERNAME, " User name&lt;/P&gt;&lt;P&gt;UDATE TYPE CDHDR-UDATE, " Creation date of the change&lt;/P&gt;&lt;P&gt;" document&lt;/P&gt;&lt;P&gt;END OF FS_CDHDR,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;"----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Field String to hold Change document items *&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;BEGIN OF FS_CDPOS,&lt;/P&gt;&lt;P&gt;OBJECTCLAS TYPE CDPOS-OBJECTCLAS," Object class&lt;/P&gt;&lt;P&gt;OBJECTID(10) TYPE C, " Object Value&lt;/P&gt;&lt;P&gt;CHANGENR TYPE CDPOS-CHANGENR, " Document change number&lt;/P&gt;&lt;P&gt;TABNAME TYPE CDPOS-TABNAME, " Table Name&lt;/P&gt;&lt;P&gt;FNAME TYPE CDPOS-FNAME, " Field Name&lt;/P&gt;&lt;P&gt;VALUE_NEW TYPE CDPOS-VALUE_NEW, " New contents of changed field&lt;/P&gt;&lt;P&gt;VALUE_OLD TYPE CDPOS-VALUE_OLD, " Old contents of changed field&lt;/P&gt;&lt;P&gt;END OF FS_CDPOS,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;"----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Field String to hold Date Element Name *&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;BEGIN OF FS_DATAELE,&lt;/P&gt;&lt;P&gt;TABNAME TYPE DD03L-TABNAME, " Table Name&lt;/P&gt;&lt;P&gt;FIELDNAME TYPE DD03L-FIELDNAME, " Field Name&lt;/P&gt;&lt;P&gt;ROLLNAME TYPE DD03L-ROLLNAME, " Data element (semantic domain)&lt;/P&gt;&lt;P&gt;END OF FS_DATAELE,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;"----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Field String to hold Short Text of the Date Element *&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;BEGIN OF FS_TEXT,&lt;/P&gt;&lt;P&gt;ROLLNAME TYPE DD04T-ROLLNAME, " Data element (semantic domain)&lt;/P&gt;&lt;P&gt;DDTEXT TYPE DD04T-DDTEXT, " Short Text Describing R/3&lt;/P&gt;&lt;P&gt;" Repository Objects&lt;/P&gt;&lt;P&gt;END OF FS_TEXT,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;"----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Field String to hold data to be displayed on the ALV grid *&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;BEGIN OF FS_OUTTAB,&lt;/P&gt;&lt;P&gt;EBELN TYPE EKKO-EBELN, " Purchasing Document Number&lt;/P&gt;&lt;P&gt;ERNAM TYPE EKKO-ERNAM, " Name of Person who Created the&lt;/P&gt;&lt;P&gt;" Object&lt;/P&gt;&lt;P&gt;LIFNR TYPE EKKO-LIFNR, " Vendor's account number&lt;/P&gt;&lt;P&gt;EKGRP TYPE EKKO-EKGRP, " Purchasing group&lt;/P&gt;&lt;P&gt;BEDAT TYPE EKKO-BEDAT, " Purchasing Document Date&lt;/P&gt;&lt;P&gt;WERKS TYPE LFA1-WERKS, " Plant&lt;/P&gt;&lt;P&gt;NAME1 TYPE LFA1-NAME1, " Name1&lt;/P&gt;&lt;P&gt;USERNAME TYPE CDHDR-USERNAME, " User name&lt;/P&gt;&lt;P&gt;UDATE TYPE CDHDR-UDATE, " Creation date of the change&lt;/P&gt;&lt;P&gt;" document&lt;/P&gt;&lt;P&gt;DDTEXT TYPE DD04T-DDTEXT, " Short Text Describing R/3&lt;/P&gt;&lt;P&gt;" Repository Objects&lt;/P&gt;&lt;P&gt;VALUE_NEW TYPE CDPOS-VALUE_NEW, " New contents of changed field&lt;/P&gt;&lt;P&gt;VALUE_OLD TYPE CDPOS-VALUE_OLD, " Old contents of changed field&lt;/P&gt;&lt;P&gt;END OF FS_OUTTAB,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;"----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Internal table to hold Purchase Document Number *&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;T_EBELN LIKE STANDARD TABLE&lt;/P&gt;&lt;P&gt;OF FS_EBELN,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;"----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Internal table to hold Purchase Document Header *&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;T_EKKO LIKE STANDARD TABLE&lt;/P&gt;&lt;P&gt;OF FS_EKKO,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;"----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Temp Internal table to hold Purchase Document Header *&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;T_EKKO_TEMP LIKE STANDARD TABLE&lt;/P&gt;&lt;P&gt;OF FS_EKKO,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;"----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Internal table to hold Account number and Name of the Vendor *&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;T_LFA1 LIKE STANDARD TABLE&lt;/P&gt;&lt;P&gt;OF FS_LFA1,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;"----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Internal Table to hold Change date and the name of the user *&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;T_CDHDR LIKE STANDARD TABLE&lt;/P&gt;&lt;P&gt;OF FS_CDHDR,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;"----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Internal Table to hold Change document items *&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;T_CDPOS LIKE STANDARD TABLE&lt;/P&gt;&lt;P&gt;OF FS_CDPOS,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;"----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Temp. Internal Table to hold Change document items *&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;T_CDPOS_TEMP LIKE STANDARD TABLE&lt;/P&gt;&lt;P&gt;OF FS_CDPOS,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;"----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Internal Table to hold Data Element Name *&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;T_DATAELE LIKE STANDARD TABLE&lt;/P&gt;&lt;P&gt;OF FS_DATAELE,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;"----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Temp. Internal Table to hold Data Element Name *&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;T_DATAELE_TEMP LIKE STANDARD TABLE&lt;/P&gt;&lt;P&gt;OF FS_DATAELE,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;"----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Internal Table to hold Short Text of the Date Element *&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;T_TEXT LIKE STANDARD TABLE&lt;/P&gt;&lt;P&gt;OF FS_TEXT,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;"----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Internal Table to hold data to be displayed on the ALV grid *&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;T_OUTTAB LIKE STANDARD TABLE&lt;/P&gt;&lt;P&gt;OF FS_OUTTAB.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;"----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;C L A S S D E F I N I T I O N *&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;CLASS LCL_EVENT_HANDLER DEFINITION DEFERRED.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*" Data declarations...................................................&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;"----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Work variables *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;"----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA:&lt;/P&gt;&lt;P&gt;W_EBELN TYPE EKKO-EBELN, " Purchasing Document Number&lt;/P&gt;&lt;P&gt;W_LIFNR TYPE EKKO-LIFNR, " Vendor's account number&lt;/P&gt;&lt;P&gt;W_EKGRP TYPE EKKO-EKGRP, " Purchasing group&lt;/P&gt;&lt;P&gt;W_VALUE TYPE EKKO-EBELN, " Reflected Value&lt;/P&gt;&lt;P&gt;W_SPACE VALUE ' ', " Space&lt;/P&gt;&lt;P&gt;W_FLAG TYPE I, " Flag Variable&lt;/P&gt;&lt;P&gt;W_VARIANT TYPE DISVARIANT, " Variant&lt;/P&gt;&lt;P&gt;*--- ALV Grid&lt;/P&gt;&lt;P&gt;W_GRID TYPE REF TO CL_GUI_ALV_GRID,&lt;/P&gt;&lt;P&gt;*--- Event Handler&lt;/P&gt;&lt;P&gt;W_EVENT_CLICK TYPE REF TO LCL_EVENT_HANDLER,&lt;/P&gt;&lt;P&gt;*--- Field catalog table&lt;/P&gt;&lt;P&gt;T_FIELDCAT TYPE LVC_T_FCAT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;"----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;AT SELECTION-SCREEN EVENT *&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;&lt;/P&gt;&lt;P&gt;AT SELECTION-SCREEN ON S_EBELN.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Subroutine to validate Purchase Document Number.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;PERFORM VALIDATE_PD_NUM.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;AT SELECTION-SCREEN ON S_LIFNR.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Subroutine to validate Vendor Number.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;PERFORM VALIDATE_VEN_NUM.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;AT SELECTION-SCREEN ON S_EKGRP.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Subroutine to validate Purchase Group.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;PERFORM VALIDATE_PUR_GRP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;"----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;START-OF-SELECTION EVENT *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;"----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;START-OF-SELECTION.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Subroutine to select all Purchase orders.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;PERFORM SELECT_PO.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CHECK W_FLAG EQ 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Subroutine to select Object values.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;PERFORM SELECT_OBJ_ID.&lt;/P&gt;&lt;P&gt;CHECK W_FLAG EQ 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Subroutine to select Changed values.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;PERFORM SELECT_CHANGED_VALUE.&lt;/P&gt;&lt;P&gt;CHECK W_FLAG EQ 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Subroutine to Select Purchase Orders.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;PERFORM SELECT_PUR_DOC.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Subroutine to select Vendor Details.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;PERFORM SELECT_VENDOR.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Subroutine to select Text for the Changed values.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;PERFORM DESCRIPTION.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;"----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;END-OF-SELECTION EVENT *&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;END-OF-SELECTION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;IF NOT T_EKKO IS INITIAL.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Subroutine to populate the Output Table.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;PERFORM FILL_OUTTAB.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Subroutine to build Field Catalog.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;PERFORM PREPARE_FIELD_CATALOG CHANGING T_FIELDCAT.&lt;/P&gt;&lt;P&gt;CALL SCREEN 100.&lt;/P&gt;&lt;P&gt;ENDIF. " IF NOT T_EKKO...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;CLASS LCL_EVENT_HANDLER DEFINITION&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;Defining Class which handles events&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CLASS LCL_EVENT_HANDLER DEFINITION .&lt;/P&gt;&lt;P&gt;PUBLIC SECTION .&lt;/P&gt;&lt;P&gt;METHODS:&lt;/P&gt;&lt;P&gt;HANDLE_HOTSPOT_CLICK&lt;/P&gt;&lt;P&gt;FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID&lt;/P&gt;&lt;P&gt;IMPORTING E_ROW_ID E_COLUMN_ID.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDCLASS. " LCL_EVENT_HANDLER DEFINITION&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;CLASS LCL_EVENT_HANDLER IMPLEMENTATION&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;Implementing the Class which can handle events&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CLASS LCL_EVENT_HANDLER IMPLEMENTATION .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*---Handle Double Click&lt;/P&gt;&lt;P&gt;METHOD HANDLE_HOTSPOT_CLICK .&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Subroutine to get the HotSpot Cell information.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;PERFORM GET_CELL_INFO.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SET PARAMETER ID 'BES' FIELD W_VALUE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CALL TRANSACTION 'ME23N'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDMETHOD. " HANDLE_HOTSPOT_CLICK&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDCLASS. " LCL_EVENT_HANDLER&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; Module STATUS_0100 OUTPUT&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;PBO Event&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;MODULE STATUS_0100 OUTPUT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SET PF-STATUS 'OOPS'.&lt;/P&gt;&lt;P&gt;SET TITLEBAR 'TIT'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Subroutine to fill the Variant Structure&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;PERFORM FILL_VARIANT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;IF W_GRID IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CREATE OBJECT W_GRID&lt;/P&gt;&lt;P&gt;EXPORTING&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;I_SHELLSTYLE = 0&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;I_LIFETIME =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;I_PARENT = CL_GUI_CONTAINER=&amp;gt;SCREEN0&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;I_APPL_EVENTS =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;I_PARENTDBG =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;I_APPLOGPARENT =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;I_GRAPHICSPARENT =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;I_NAME =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;I_FCAT_COMPLETE = SPACE&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;EXCEPTIONS&lt;/P&gt;&lt;P&gt;ERROR_CNTL_CREATE = 1&lt;/P&gt;&lt;P&gt;ERROR_CNTL_INIT = 2&lt;/P&gt;&lt;P&gt;ERROR_CNTL_LINK = 3&lt;/P&gt;&lt;P&gt;ERROR_DP_CREATE = 4&lt;/P&gt;&lt;P&gt;OTHERS = 5.&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. " IF SY-SUBRC &amp;lt;&amp;gt; 0&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CALL METHOD W_GRID-&amp;gt;SET_TABLE_FOR_FIRST_DISPLAY&lt;/P&gt;&lt;P&gt;EXPORTING&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;I_BUFFER_ACTIVE =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;I_BYPASSING_BUFFER =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;I_CONSISTENCY_CHECK =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;I_STRUCTURE_NAME =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;IS_VARIANT = W_VARIANT&lt;/P&gt;&lt;P&gt;I_SAVE = 'A'&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;I_DEFAULT = 'X'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;IS_LAYOUT =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;IS_PRINT =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;IT_SPECIAL_GROUPS =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;IT_TOOLBAR_EXCLUDING =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;IT_HYPERLINK =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;IT_ALV_GRAPHICS =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;IT_EXCEPT_QINFO =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;IR_SALV_ADAPTER =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;CHANGING&lt;/P&gt;&lt;P&gt;IT_OUTTAB = T_OUTTAB&lt;/P&gt;&lt;P&gt;IT_FIELDCATALOG = T_FIELDCAT&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;IT_SORT =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;IT_FILTER =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;EXCEPTIONS&lt;/P&gt;&lt;P&gt;INVALID_PARAMETER_COMBINATION = 1&lt;/P&gt;&lt;P&gt;PROGRAM_ERROR = 2&lt;/P&gt;&lt;P&gt;TOO_MANY_LINES = 3&lt;/P&gt;&lt;P&gt;OTHERS = 4&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. " IF SY-SUBRC &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDIF. " IF W_GRID IS INITIAL&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CREATE OBJECT W_EVENT_CLICK.&lt;/P&gt;&lt;P&gt;SET HANDLER W_EVENT_CLICK-&amp;gt;HANDLE_HOTSPOT_CLICK FOR W_GRID.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDMODULE. " STATUS_0100 OUTPUT&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; Module USER_COMMAND_0100 INPUT&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;PAI Event&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;MODULE USER_COMMAND_0100 INPUT.&lt;/P&gt;&lt;P&gt;CASE SY-UCOMM.&lt;/P&gt;&lt;P&gt;WHEN 'BACK'.&lt;/P&gt;&lt;P&gt;LEAVE TO SCREEN 0.&lt;/P&gt;&lt;P&gt;WHEN 'EXIT'.&lt;/P&gt;&lt;P&gt;LEAVE PROGRAM.&lt;/P&gt;&lt;P&gt;WHEN 'CANCEL'.&lt;/P&gt;&lt;P&gt;LEAVE TO SCREEN 0.&lt;/P&gt;&lt;P&gt;ENDCASE.&lt;/P&gt;&lt;P&gt;ENDMODULE. " USER_COMMAND_0100 INPUT&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 PREPARE_FIELD_CATALOG&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;Subroutine to build the Field catalog&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;lt;--P_T_FIELDCAT Field Catalog 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;P&gt;FORM PREPARE_FIELD_CATALOG CHANGING PT_FIELDCAT TYPE LVC_T_FCAT .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA LS_FCAT TYPE LVC_S_FCAT.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Purchasing group...&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;LS_FCAT-FIELDNAME = 'EKGRP'.&lt;/P&gt;&lt;P&gt;LS_FCAT-REF_TABLE = 'EKKO'.&lt;/P&gt;&lt;P&gt;LS_FCAT-INTTYPE = 'C'.&lt;/P&gt;&lt;P&gt;LS_FCAT-OUTPUTLEN = '10'.&lt;/P&gt;&lt;P&gt;APPEND LS_FCAT TO PT_FIELDCAT.&lt;/P&gt;&lt;P&gt;CLEAR LS_FCAT.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Purchasing Document Number...&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;LS_FCAT-FIELDNAME = 'EBELN'.&lt;/P&gt;&lt;P&gt;LS_FCAT-REF_TABLE = 'EKKO' .&lt;/P&gt;&lt;P&gt;LS_FCAT-EMPHASIZE = 'C411'.&lt;/P&gt;&lt;P&gt;LS_FCAT-INTTYPE = 'C'.&lt;/P&gt;&lt;P&gt;LS_FCAT-OUTPUTLEN = '10'.&lt;/P&gt;&lt;P&gt;LS_FCAT-HOTSPOT = 'X'.&lt;/P&gt;&lt;P&gt;APPEND LS_FCAT TO PT_FIELDCAT .&lt;/P&gt;&lt;P&gt;CLEAR LS_FCAT .&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Name of Person who Created the Object...&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;LS_FCAT-FIELDNAME = 'ERNAM'.&lt;/P&gt;&lt;P&gt;LS_FCAT-REF_TABLE = 'EKKO'.&lt;/P&gt;&lt;P&gt;LS_FCAT-OUTPUTLEN = '15' .&lt;/P&gt;&lt;P&gt;APPEND LS_FCAT TO PT_FIELDCAT.&lt;/P&gt;&lt;P&gt;CLEAR LS_FCAT.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Purchasing Document Date...&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;LS_FCAT-FIELDNAME = 'BEDAT'.&lt;/P&gt;&lt;P&gt;LS_FCAT-REF_TABLE = 'EKKO'.&lt;/P&gt;&lt;P&gt;LS_FCAT-INTTYPE = 'C'.&lt;/P&gt;&lt;P&gt;LS_FCAT-OUTPUTLEN = '10'.&lt;/P&gt;&lt;P&gt;APPEND LS_FCAT TO PT_FIELDCAT.&lt;/P&gt;&lt;P&gt;CLEAR LS_FCAT.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Vendor's account number...&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;LS_FCAT-FIELDNAME = 'LIFNR'.&lt;/P&gt;&lt;P&gt;LS_FCAT-REF_TABLE = 'EKKO'.&lt;/P&gt;&lt;P&gt;LS_FCAT-INTTYPE = 'C'.&lt;/P&gt;&lt;P&gt;LS_FCAT-OUTPUTLEN = '10'.&lt;/P&gt;&lt;P&gt;APPEND LS_FCAT TO PT_FIELDCAT.&lt;/P&gt;&lt;P&gt;CLEAR LS_FCAT.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Account Number of Vendor or Creditor...&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;LS_FCAT-FIELDNAME = 'NAME1'.&lt;/P&gt;&lt;P&gt;LS_FCAT-REF_TABLE = 'LFA1'.&lt;/P&gt;&lt;P&gt;LS_FCAT-INTTYPE = 'C'.&lt;/P&gt;&lt;P&gt;LS_FCAT-OUTPUTLEN = '10'.&lt;/P&gt;&lt;P&gt;LS_FCAT-COLTEXT = 'Vendor Name'(001).&lt;/P&gt;&lt;P&gt;LS_FCAT-SELTEXT = 'Vendor Name'(001).&lt;/P&gt;&lt;P&gt;APPEND LS_FCAT TO PT_FIELDCAT.&lt;/P&gt;&lt;P&gt;CLEAR LS_FCAT.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Creation date of the change document...&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;LS_FCAT-FIELDNAME = 'UDATE'.&lt;/P&gt;&lt;P&gt;LS_FCAT-REF_TABLE = 'CDHDR'.&lt;/P&gt;&lt;P&gt;LS_FCAT-INTTYPE = 'C'.&lt;/P&gt;&lt;P&gt;LS_FCAT-OUTPUTLEN = '10'.&lt;/P&gt;&lt;P&gt;LS_FCAT-COLTEXT = 'Change Date'(002).&lt;/P&gt;&lt;P&gt;LS_FCAT-SELTEXT = 'Change Date'(002).&lt;/P&gt;&lt;P&gt;APPEND LS_FCAT TO PT_FIELDCAT.&lt;/P&gt;&lt;P&gt;CLEAR LS_FCAT.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;User name of the person responsible in change document...&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;LS_FCAT-FIELDNAME = 'USERNAME'.&lt;/P&gt;&lt;P&gt;LS_FCAT-REF_TABLE = 'CDHDR'.&lt;/P&gt;&lt;P&gt;LS_FCAT-INTTYPE = 'C'.&lt;/P&gt;&lt;P&gt;LS_FCAT-OUTPUTLEN = '10'.&lt;/P&gt;&lt;P&gt;LS_FCAT-COLTEXT = 'Modified by'(003).&lt;/P&gt;&lt;P&gt;LS_FCAT-SELTEXT = 'Modified by'(003).&lt;/P&gt;&lt;P&gt;APPEND LS_FCAT TO PT_FIELDCAT.&lt;/P&gt;&lt;P&gt;CLEAR LS_FCAT.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Short Text Describing R/3 Repository Objects...&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;LS_FCAT-FIELDNAME = 'DDTEXT'.&lt;/P&gt;&lt;P&gt;LS_FCAT-REF_TABLE = 'DD04T'.&lt;/P&gt;&lt;P&gt;LS_FCAT-INTTYPE = 'C'.&lt;/P&gt;&lt;P&gt;LS_FCAT-OUTPUTLEN = '15'.&lt;/P&gt;&lt;P&gt;APPEND LS_FCAT TO PT_FIELDCAT.&lt;/P&gt;&lt;P&gt;CLEAR LS_FCAT.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Old contents of changed field...&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;LS_FCAT-FIELDNAME = 'VALUE_OLD'.&lt;/P&gt;&lt;P&gt;LS_FCAT-REF_TABLE = 'CDPOS'.&lt;/P&gt;&lt;P&gt;LS_FCAT-INTTYPE = 'C'.&lt;/P&gt;&lt;P&gt;LS_FCAT-OUTPUTLEN = '12'.&lt;/P&gt;&lt;P&gt;APPEND LS_FCAT TO PT_FIELDCAT.&lt;/P&gt;&lt;P&gt;CLEAR LS_FCAT.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;New contents of changed field...&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;LS_FCAT-FIELDNAME = 'VALUE_NEW'.&lt;/P&gt;&lt;P&gt;LS_FCAT-REF_TABLE = 'CDPOS'.&lt;/P&gt;&lt;P&gt;LS_FCAT-INTTYPE = 'C'.&lt;/P&gt;&lt;P&gt;LS_FCAT-OUTPUTLEN = '12'.&lt;/P&gt;&lt;P&gt;APPEND LS_FCAT TO PT_FIELDCAT.&lt;/P&gt;&lt;P&gt;CLEAR LS_FCAT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM. " PREPARE_FIELD_CATALOG&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 SELECT_PO&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;Subroutine to select all the Purchase Orders&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;There are no interface parameters to be passed to this subroutine.&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 SELECT_PO .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECT EBELN " Purchasing Document Number&lt;/P&gt;&lt;P&gt;ERNAM " Name of Person who Created&lt;/P&gt;&lt;P&gt;" the Object&lt;/P&gt;&lt;P&gt;LIFNR " Vendor's account number&lt;/P&gt;&lt;P&gt;EKGRP " Purchasing group&lt;/P&gt;&lt;P&gt;BEDAT " Purchasing Document Date&lt;/P&gt;&lt;P&gt;FROM EKKO&lt;/P&gt;&lt;P&gt;PACKAGE SIZE 10000&lt;/P&gt;&lt;P&gt;APPENDING TABLE T_EBELN&lt;/P&gt;&lt;P&gt;WHERE EBELN IN S_EBELN&lt;/P&gt;&lt;P&gt;AND BEDAT IN S_BEDAT.&lt;/P&gt;&lt;P&gt;ENDSELECT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;IF SY-SUBRC NE 0.&lt;/P&gt;&lt;P&gt;W_FLAG = 1.&lt;/P&gt;&lt;P&gt;MESSAGE S401(M8).&lt;/P&gt;&lt;P&gt;ENDIF. " IF SY-SUBRC NE 0&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM. " SELECT_PO&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 SELECT_OBJ_ID&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;Subroutine to select Object ID&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;There are no interface parameters to be passed to this subroutine.&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 SELECT_OBJ_ID .&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;IF NOT T_EBELN IS INITIAL.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECT OBJECTCLAS " Object Class&lt;/P&gt;&lt;P&gt;OBJECTID " Object value&lt;/P&gt;&lt;P&gt;CHANGENR " Document change number&lt;/P&gt;&lt;P&gt;USERNAME " User name&lt;/P&gt;&lt;P&gt;UDATE " Creation date&lt;/P&gt;&lt;P&gt;FROM CDHDR&lt;/P&gt;&lt;P&gt;INTO TABLE T_CDHDR&lt;/P&gt;&lt;P&gt;FOR ALL ENTRIES IN T_EBELN&lt;/P&gt;&lt;P&gt;WHERE OBJECTID EQ T_EBELN-EBELN&lt;/P&gt;&lt;P&gt;AND UDATE IN S_UDATE&lt;/P&gt;&lt;P&gt;AND TCODE IN ('ME21N','ME22N','ME23N').&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;ENDSELECT.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;IF SY-SUBRC NE 0.&lt;/P&gt;&lt;P&gt;W_FLAG = 1.&lt;/P&gt;&lt;P&gt;MESSAGE S833(M8) WITH 'Header Not Found'(031).&lt;/P&gt;&lt;P&gt;ENDIF. " IF SY-SUBRC NE 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;ENDIF. " IF NOT T_EBELN IS INITIAL&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;ENDFORM. " SELECT_OBJ_ID&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 SELECT_CHANGED_VALUE&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;Subroutine to select Changed Values&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;There are no interface parameters to be passed to this subroutine.&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 SELECT_CHANGED_VALUE .&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;IF NOT T_CDHDR IS INITIAL.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECT OBJECTCLAS " Object class&lt;/P&gt;&lt;P&gt;OBJECTID " Object value&lt;/P&gt;&lt;P&gt;CHANGENR " Document change number&lt;/P&gt;&lt;P&gt;TABNAME " Table Name&lt;/P&gt;&lt;P&gt;FNAME " Field Name&lt;/P&gt;&lt;P&gt;VALUE_NEW " New contents of changed field&lt;/P&gt;&lt;P&gt;VALUE_OLD " Old contents of changed field&lt;/P&gt;&lt;P&gt;FROM CDPOS&lt;/P&gt;&lt;P&gt;PACKAGE SIZE 10000&lt;/P&gt;&lt;P&gt;APPENDING TABLE T_CDPOS&lt;/P&gt;&lt;P&gt;FOR ALL ENTRIES IN T_CDHDR&lt;/P&gt;&lt;P&gt;WHERE OBJECTCLAS EQ T_CDHDR-OBJECTCLAS&lt;/P&gt;&lt;P&gt;AND OBJECTID EQ T_CDHDR-OBJECTID&lt;/P&gt;&lt;P&gt;AND CHANGENR EQ T_CDHDR-CHANGENR.&lt;/P&gt;&lt;P&gt;ENDSELECT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;IF SY-SUBRC NE 0.&lt;/P&gt;&lt;P&gt;W_FLAG = 1.&lt;/P&gt;&lt;P&gt;MESSAGE S833(M8) WITH 'Item Not Found'(032).&lt;/P&gt;&lt;P&gt;ENDIF. " IF SY-SUBRC NE 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;ENDIF. " IF NOT T_CDHDR IS INITIAL&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;T_CDPOS_TEMP[] = T_CDPOS[].&lt;/P&gt;&lt;P&gt;ENDFORM. " SELECT_CHANGED_VALUE&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 SELECT_PUR_DOC&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;Subroutine to select Purchase Order Details&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;There are no interface parameters to be passed to this subroutine.&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 SELECT_PUR_DOC .&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;IF NOT T_CDPOS IS INITIAL.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SORT T_EBELN BY EBELN.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;LOOP AT T_CDPOS INTO FS_CDPOS.&lt;/P&gt;&lt;P&gt;READ TABLE T_EBELN INTO FS_EBELN WITH KEY EBELN =&lt;/P&gt;&lt;P&gt;FS_CDPOS-OBJECTID BINARY SEARCH.&lt;/P&gt;&lt;P&gt;IF SY-SUBRC NE 0.&lt;/P&gt;&lt;P&gt;DELETE TABLE T_EBELN FROM FS_EBELN.&lt;/P&gt;&lt;P&gt;ENDIF. " IF SY-SUBRC NE 0.&lt;/P&gt;&lt;P&gt;ENDLOOP. " LOOP AT T_CDPOS...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;LOOP AT T_EBELN INTO FS_EBELN.&lt;/P&gt;&lt;P&gt;MOVE FS_EBELN-EBELN TO FS_EKKO-EBELN.&lt;/P&gt;&lt;P&gt;MOVE FS_EBELN-ERNAM TO FS_EKKO-ERNAM.&lt;/P&gt;&lt;P&gt;MOVE FS_EBELN-LIFNR TO FS_EKKO-LIFNR.&lt;/P&gt;&lt;P&gt;MOVE FS_EBELN-EKGRP TO FS_EKKO-EKGRP.&lt;/P&gt;&lt;P&gt;MOVE FS_EBELN-BEDAT TO FS_EKKO-BEDAT.&lt;/P&gt;&lt;P&gt;APPEND FS_EKKO TO T_EKKO.&lt;/P&gt;&lt;P&gt;ENDLOOP. " LOOP AT T_EBELN...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;T_EKKO_TEMP[] = T_EKKO[].&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;ENDIF. " IF NOT T_CDPOS IS INITIAL&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;ENDFORM. " SELECT_PUR_DOC&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 SELECT_VENDOR&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;Subroutine to select Vendor details&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;There are no interface parameters to be passed to this subroutine.&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 SELECT_VENDOR .&lt;/P&gt;&lt;P&gt;IF NOT T_EKKO IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SORT T_EKKO_TEMP BY LIFNR.&lt;/P&gt;&lt;P&gt;DELETE ADJACENT DUPLICATES FROM T_EKKO_TEMP COMPARING LIFNR.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECT LIFNR " Account Number of Vendor or&lt;/P&gt;&lt;P&gt;" Creditor&lt;/P&gt;&lt;P&gt;NAME1 " Name 1&lt;/P&gt;&lt;P&gt;FROM LFA1&lt;/P&gt;&lt;P&gt;INTO TABLE T_LFA1&lt;/P&gt;&lt;P&gt;FOR ALL ENTRIES IN T_EKKO_TEMP&lt;/P&gt;&lt;P&gt;WHERE LIFNR EQ T_EKKO_TEMP-LIFNR.&lt;/P&gt;&lt;P&gt;IF SY-SUBRC NE 0.&lt;/P&gt;&lt;P&gt;MESSAGE S002(M8) WITH 'Master Details'(033).&lt;/P&gt;&lt;P&gt;ENDIF. " IF SY-SUBRC NE 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDIF. " IF NOT T_EKKO IS INITIAL&lt;/P&gt;&lt;P&gt;ENDFORM. " SELECT_VENDOR&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 DESCRIPTION&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;Subroutine to get the description&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;There are no interface parameters to be passed to this subroutine.&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 DESCRIPTION .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;IF NOT T_CDPOS IS INITIAL.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SORT T_CDPOS_TEMP BY TABNAME FNAME.&lt;/P&gt;&lt;P&gt;DELETE ADJACENT DUPLICATES FROM T_CDPOS_TEMP COMPARING TABNAME FNAME&lt;/P&gt;&lt;P&gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECT TABNAME " Table Name&lt;/P&gt;&lt;P&gt;FIELDNAME " Field Name&lt;/P&gt;&lt;P&gt;ROLLNAME " Data element&lt;/P&gt;&lt;P&gt;FROM DD03L&lt;/P&gt;&lt;P&gt;INTO TABLE T_DATAELE&lt;/P&gt;&lt;P&gt;FOR ALL ENTRIES IN T_CDPOS_TEMP&lt;/P&gt;&lt;P&gt;WHERE TABNAME EQ T_CDPOS_TEMP-TABNAME&lt;/P&gt;&lt;P&gt;AND FIELDNAME EQ T_CDPOS_TEMP-FNAME.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;IF NOT T_DATAELE IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;T_DATAELE_TEMP[] = T_DATAELE[].&lt;/P&gt;&lt;P&gt;SORT T_DATAELE_TEMP BY ROLLNAME.&lt;/P&gt;&lt;P&gt;DELETE ADJACENT DUPLICATES FROM T_DATAELE_TEMP COMPARING ROLLNAME.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECT ROLLNAME " Data element&lt;/P&gt;&lt;P&gt;DDTEXT " Short Text Describing R/3&lt;/P&gt;&lt;P&gt;" Repository Objects&lt;/P&gt;&lt;P&gt;FROM DD04T&lt;/P&gt;&lt;P&gt;INTO TABLE T_TEXT&lt;/P&gt;&lt;P&gt;FOR ALL ENTRIES IN T_DATAELE_TEMP&lt;/P&gt;&lt;P&gt;WHERE ROLLNAME EQ T_DATAELE_TEMP-ROLLNAME&lt;/P&gt;&lt;P&gt;AND DDLANGUAGE EQ SY-LANGU.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;IF SY-SUBRC NE 0.&lt;/P&gt;&lt;P&gt;EXIT.&lt;/P&gt;&lt;P&gt;ENDIF. " IF SY-SUBRC NE 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDIF. " IF NOT T_DATAELE IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;ENDIF. " IF NOT T_CDPOS IS INITIAL.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM. " DESCRIPTION&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 FILL_OUTTAB&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;Subroutine to populate the Outtab&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;There are no interface parameters to be passed to this subroutine.&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 FILL_OUTTAB .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SORT T_CDHDR BY OBJECTCLAS OBJECTID CHANGENR.&lt;/P&gt;&lt;P&gt;SORT T_EKKO BY EBELN.&lt;/P&gt;&lt;P&gt;SORT T_LFA1 BY LIFNR.&lt;/P&gt;&lt;P&gt;SORT T_DATAELE BY TABNAME FIELDNAME.&lt;/P&gt;&lt;P&gt;SORT T_TEXT BY ROLLNAME.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;LOOP AT T_CDPOS INTO FS_CDPOS.&lt;/P&gt;&lt;P&gt;READ TABLE T_CDHDR INTO FS_CDHDR WITH KEY&lt;/P&gt;&lt;P&gt;OBJECTCLAS = FS_CDPOS-OBJECTCLAS&lt;/P&gt;&lt;P&gt;OBJECTID = FS_CDPOS-OBJECTID&lt;/P&gt;&lt;P&gt;CHANGENR = FS_CDPOS-CHANGENR&lt;/P&gt;&lt;P&gt;BINARY SEARCH.&lt;/P&gt;&lt;P&gt;IF SY-SUBRC EQ 0.&lt;/P&gt;&lt;P&gt;MOVE FS_CDHDR-USERNAME TO FS_OUTTAB-USERNAME.&lt;/P&gt;&lt;P&gt;MOVE FS_CDHDR-UDATE TO FS_OUTTAB-UDATE.&lt;/P&gt;&lt;P&gt;READ TABLE T_EKKO INTO FS_EKKO WITH KEY&lt;/P&gt;&lt;P&gt;EBELN = FS_CDHDR-OBJECTID&lt;/P&gt;&lt;P&gt;BINARY SEARCH.&lt;/P&gt;&lt;P&gt;IF SY-SUBRC EQ 0.&lt;/P&gt;&lt;P&gt;MOVE FS_EKKO-EBELN TO FS_OUTTAB-EBELN.&lt;/P&gt;&lt;P&gt;MOVE FS_EKKO-ERNAM TO FS_OUTTAB-ERNAM.&lt;/P&gt;&lt;P&gt;MOVE FS_EKKO-LIFNR TO FS_OUTTAB-LIFNR.&lt;/P&gt;&lt;P&gt;MOVE FS_EKKO-EKGRP TO FS_OUTTAB-EKGRP.&lt;/P&gt;&lt;P&gt;MOVE FS_EKKO-BEDAT TO FS_OUTTAB-BEDAT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;READ TABLE T_LFA1 INTO FS_LFA1 WITH KEY&lt;/P&gt;&lt;P&gt;LIFNR = FS_EKKO-LIFNR&lt;/P&gt;&lt;P&gt;BINARY SEARCH.&lt;/P&gt;&lt;P&gt;IF SY-SUBRC EQ 0.&lt;/P&gt;&lt;P&gt;MOVE FS_LFA1-NAME1 TO FS_OUTTAB-NAME1.&lt;/P&gt;&lt;P&gt;ENDIF. " IF SY-SUBRC EQ 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDIF. " IF SY-SUBRC EQ 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDIF. " IF SY-SUBRC EQ 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MOVE FS_CDPOS-VALUE_NEW TO FS_OUTTAB-VALUE_NEW.&lt;/P&gt;&lt;P&gt;MOVE FS_CDPOS-VALUE_OLD TO FS_OUTTAB-VALUE_OLD.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;READ TABLE T_DATAELE INTO FS_DATAELE WITH KEY&lt;/P&gt;&lt;P&gt;TABNAME = FS_CDPOS-TABNAME&lt;/P&gt;&lt;P&gt;FIELDNAME = FS_CDPOS-FNAME&lt;/P&gt;&lt;P&gt;BINARY SEARCH.&lt;/P&gt;&lt;P&gt;IF SY-SUBRC EQ 0.&lt;/P&gt;&lt;P&gt;READ TABLE T_TEXT INTO FS_TEXT WITH KEY&lt;/P&gt;&lt;P&gt;ROLLNAME = FS_DATAELE-ROLLNAME&lt;/P&gt;&lt;P&gt;BINARY SEARCH.&lt;/P&gt;&lt;P&gt;IF SY-SUBRC EQ 0.&lt;/P&gt;&lt;P&gt;MOVE FS_TEXT-DDTEXT TO FS_OUTTAB-DDTEXT.&lt;/P&gt;&lt;P&gt;ENDIF. " IF SY-SUBRC EQ 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDIF. " IF SY-SUBRC EQ 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;APPEND FS_OUTTAB TO T_OUTTAB.&lt;/P&gt;&lt;P&gt;CLEAR FS_OUTTAB.&lt;/P&gt;&lt;P&gt;ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM. " FILL_OUTTAB&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 GET_CELL_INFO&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;Subroutine to get the Cell Information&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; W_VALUE Holds the value of Hotspot clicked&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 GET_CELL_INFO .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CALL METHOD W_GRID-&amp;gt;GET_CURRENT_CELL&lt;/P&gt;&lt;P&gt;IMPORTING&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;E_ROW =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;E_VALUE = W_VALUE&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;E_COL =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;ES_ROW_ID =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;ES_COL_ID =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;ES_ROW_NO =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;.&lt;/P&gt;&lt;P&gt;ENDFORM. " GET_CELL_INFO&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 VALIDATE_PD_NUM&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;Subroutine to validate Purchase Document Number&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;There are no interface parameters to be passed to this subroutine.&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 VALIDATE_PD_NUM .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;IF NOT S_EBELN[] IS INITIAL.&lt;/P&gt;&lt;P&gt;SELECT EBELN " Purchase Document Number&lt;/P&gt;&lt;P&gt;FROM EKKO&lt;/P&gt;&lt;P&gt;INTO W_EBELN&lt;/P&gt;&lt;P&gt;UP TO 1 ROWS&lt;/P&gt;&lt;P&gt;WHERE EBELN IN S_EBELN.&lt;/P&gt;&lt;P&gt;ENDSELECT.&lt;/P&gt;&lt;P&gt;IF SY-SUBRC NE 0.&lt;/P&gt;&lt;P&gt;CLEAR SSCRFIELDS-UCOMM.&lt;/P&gt;&lt;P&gt;MESSAGE E717(M8).&lt;/P&gt;&lt;P&gt;ENDIF. " IF SY-SUBRC NE 0&lt;/P&gt;&lt;P&gt;ENDIF. " IF NOT S_EBELN[]...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM. " VALIDATE_PD_NUM&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 VALIDATE_VEN_NUM&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;Subroutine to validate Vendor Number&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;There are no interface parameters to be passed to this subroutine.&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 VALIDATE_VEN_NUM .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;IF NOT S_LIFNR[] IS INITIAL.&lt;/P&gt;&lt;P&gt;SELECT LIFNR " Vendor Number&lt;/P&gt;&lt;P&gt;FROM LFA1&lt;/P&gt;&lt;P&gt;INTO W_LIFNR&lt;/P&gt;&lt;P&gt;UP TO 1 ROWS&lt;/P&gt;&lt;P&gt;WHERE LIFNR IN S_LIFNR.&lt;/P&gt;&lt;P&gt;ENDSELECT.&lt;/P&gt;&lt;P&gt;IF SY-SUBRC NE 0.&lt;/P&gt;&lt;P&gt;CLEAR SSCRFIELDS-UCOMM.&lt;/P&gt;&lt;P&gt;MESSAGE E002(M8) WITH W_SPACE.&lt;/P&gt;&lt;P&gt;ENDIF. " IF SY-SUBRC NE 0&lt;/P&gt;&lt;P&gt;ENDIF. " IF NOT S_LIFNR[]...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM. " VALIDATE_VEN_NUM&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 VALIDATE_PUR_GRP&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;Subroutine to validate the Purchase Group&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;There are no interface parameters to be passed to this subroutine.&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 VALIDATE_PUR_GRP .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;IF NOT S_EKGRP[] IS INITIAL.&lt;/P&gt;&lt;P&gt;SELECT EKGRP " Purchase Group&lt;/P&gt;&lt;P&gt;FROM T024&lt;/P&gt;&lt;P&gt;INTO W_EKGRP&lt;/P&gt;&lt;P&gt;UP TO 1 ROWS&lt;/P&gt;&lt;P&gt;WHERE EKGRP IN S_EKGRP.&lt;/P&gt;&lt;P&gt;ENDSELECT.&lt;/P&gt;&lt;P&gt;IF SY-SUBRC NE 0.&lt;/P&gt;&lt;P&gt;CLEAR SSCRFIELDS-UCOMM.&lt;/P&gt;&lt;P&gt;MESSAGE E622(M8) WITH W_SPACE.&lt;/P&gt;&lt;P&gt;ENDIF. " IF SY-SUBRC NE 0&lt;/P&gt;&lt;P&gt;ENDIF. " IF NOT S_EKFRP[]...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM. " VALIDATE_PUR_GRP&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 FILL_VARIANT&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;Subroutine to fill the Variant Structure&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;There are no interface parameters to be passed to this subroutine&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 FILL_VARIANT .&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Filling the Variant structure&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;W_VARIANT-REPORT = SY-REPID.&lt;/P&gt;&lt;P&gt;W_VARIANT-USERNAME = SY-UNAME.&lt;/P&gt;&lt;P&gt;ENDFORM. " FILL_VARIANT&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="------------------------------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;REPORT YMS_HIERSEQLISTDISPLAY .&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Program with FM REUSE_ALV_HIERSEQ_LIST_DISPLAY *&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;Author : Michel PIOUD *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Email : mpioud@yahoo.fr HomePage : &lt;A href="http://www.geocities.com/mpioud" target="test_blank"&gt;http://www.geocities.com/mpioud&lt;/A&gt; *&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;TYPE-POOLS: slis. " ALV Global types&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CONSTANTS :&lt;/P&gt;&lt;P&gt;c_x VALUE 'X',&lt;/P&gt;&lt;P&gt;c_gt_vbap TYPE SLIS_TABNAME VALUE 'GT_VBAP',&lt;/P&gt;&lt;P&gt;c_gt_vbak TYPE SLIS_TABNAME VALUE 'GT_VBAK'.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN :&lt;/P&gt;&lt;P&gt;SKIP, BEGIN OF LINE,COMMENT 5(27) v_1 FOR FIELD p_max. "#EC NEEDED&lt;/P&gt;&lt;P&gt;PARAMETERS p_max(02) TYPE n DEFAULT '10' OBLIGATORY.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN END OF LINE.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN :&lt;/P&gt;&lt;P&gt;SKIP, BEGIN OF LINE,COMMENT 5(27) v_2 FOR FIELD p_expand. "#EC NEEDED&lt;/P&gt;&lt;P&gt;PARAMETERS p_expand AS CHECKBOX DEFAULT c_x.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN END OF LINE.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPES :&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;1st Table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;BEGIN OF ty_vbak,&lt;/P&gt;&lt;P&gt;vbeln TYPE vbak-vbeln, " Sales document&lt;/P&gt;&lt;P&gt;kunnr TYPE vbak-kunnr, " Sold-to party&lt;/P&gt;&lt;P&gt;netwr TYPE vbak-netwr, " Net Value of the Sales Order&lt;/P&gt;&lt;P&gt;erdat TYPE vbak-erdat, " Creation date&lt;/P&gt;&lt;P&gt;waerk TYPE vbak-waerk, " SD document currency&lt;/P&gt;&lt;P&gt;expand TYPE xfeld,&lt;/P&gt;&lt;P&gt;END OF ty_vbak,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;2nd Table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;BEGIN OF ty_vbap,&lt;/P&gt;&lt;P&gt;vbeln TYPE vbap-vbeln, " Sales document&lt;/P&gt;&lt;P&gt;posnr TYPE vbap-posnr, " Sales document&lt;/P&gt;&lt;P&gt;matnr TYPE vbap-matnr, " Material number&lt;/P&gt;&lt;P&gt;netwr TYPE vbap-netwr, " Net Value of the Sales Order&lt;/P&gt;&lt;P&gt;waerk TYPE vbap-waerk, " SD document currency&lt;/P&gt;&lt;P&gt;END OF ty_vbap.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA :&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;1st Table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;gt_vbak TYPE TABLE OF ty_vbak,&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;2nd Table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;gt_vbap TYPE TABLE OF ty_vbap.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;INITIALIZATION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;v_1 = 'Maximum of records to read'.&lt;/P&gt;&lt;P&gt;v_2 = 'With ''EXPAND'' field'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;START-OF-SELECTION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Read Sales Document: Header Data&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;SELECT vbeln kunnr netwr waerk erdat&lt;/P&gt;&lt;P&gt;FROM vbak&lt;/P&gt;&lt;P&gt;UP TO p_max ROWS&lt;/P&gt;&lt;P&gt;INTO CORRESPONDING FIELDS OF TABLE gt_vbak.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;IF NOT gt_vbak[] IS INITIAL.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Read Sales Document: Item Data&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;SELECT vbeln posnr matnr netwr waerk&lt;/P&gt;&lt;P&gt;FROM vbap&lt;/P&gt;&lt;P&gt;INTO CORRESPONDING FIELDS OF TABLE gt_vbap&lt;/P&gt;&lt;P&gt;FOR ALL ENTRIES IN gt_vbak&lt;/P&gt;&lt;P&gt;WHERE vbeln = gt_vbak-vbeln.&lt;/P&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;PERFORM f_display.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Form F_DISPLAY&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 f_display.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Macro definition&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DEFINE m_fieldcat.&lt;/P&gt;&lt;P&gt;ls_fieldcat-tabname = &amp;amp;1.&lt;/P&gt;&lt;P&gt;ls_fieldcat-fieldname = &amp;amp;2.&lt;/P&gt;&lt;P&gt;ls_fieldcat-ref_tabname = &amp;amp;3.&lt;/P&gt;&lt;P&gt;ls_fieldcat-cfieldname = &amp;amp;4. " Field with currency unit&lt;/P&gt;&lt;P&gt;append ls_fieldcat to lt_fieldcat.&lt;/P&gt;&lt;P&gt;END-OF-DEFINITION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DEFINE m_sort.&lt;/P&gt;&lt;P&gt;ls_sort-tabname = &amp;amp;1.&lt;/P&gt;&lt;P&gt;ls_sort-fieldname = &amp;amp;2.&lt;/P&gt;&lt;P&gt;ls_sort-up = c_x.&lt;/P&gt;&lt;P&gt;append ls_sort to lt_sort.&lt;/P&gt;&lt;P&gt;END-OF-DEFINITION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA:&lt;/P&gt;&lt;P&gt;ls_layout TYPE slis_layout_alv,&lt;/P&gt;&lt;P&gt;ls_keyinfo TYPE slis_keyinfo_alv,&lt;/P&gt;&lt;P&gt;ls_sort TYPE slis_sortinfo_alv,&lt;/P&gt;&lt;P&gt;lt_sort TYPE slis_t_sortinfo_alv," Sort table&lt;/P&gt;&lt;P&gt;ls_fieldcat TYPE slis_fieldcat_alv,&lt;/P&gt;&lt;P&gt;lt_fieldcat TYPE slis_t_fieldcat_alv." Field catalog&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ls_layout-group_change_edit = c_x.&lt;/P&gt;&lt;P&gt;ls_layout-colwidth_optimize = c_x.&lt;/P&gt;&lt;P&gt;ls_layout-zebra = c_x.&lt;/P&gt;&lt;P&gt;ls_layout-detail_popup = c_x.&lt;/P&gt;&lt;P&gt;ls_layout-get_selinfos = c_x.&lt;/P&gt;&lt;P&gt;IF p_expand = c_x.&lt;/P&gt;&lt;P&gt;ls_layout-expand_fieldname = 'EXPAND'.&lt;/P&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Build field catalog and sort table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;m_fieldcat c_gt_vbak 'VBELN' 'VBAK' ''.&lt;/P&gt;&lt;P&gt;m_fieldcat c_gt_vbak 'KUNNR' 'VBAK' ''.&lt;/P&gt;&lt;P&gt;m_fieldcat c_gt_vbak 'NETWR' 'VBAK' 'WAERK'.&lt;/P&gt;&lt;P&gt;m_fieldcat c_gt_vbak 'WAERK' 'VBAK' ''.&lt;/P&gt;&lt;P&gt;m_fieldcat c_gt_vbak 'ERDAT' 'VBAK' ''.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;m_fieldcat c_gt_vbap 'POSNR' 'VBAP' ''.&lt;/P&gt;&lt;P&gt;m_fieldcat c_gt_vbap 'MATNR' 'VBAP' ''.&lt;/P&gt;&lt;P&gt;m_fieldcat c_gt_vbap 'NETWR' 'VBAP' 'WAERK'.&lt;/P&gt;&lt;P&gt;m_fieldcat c_gt_vbap 'WAERK' 'VBAP' ''.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;m_sort c_gt_vbak 'KUNNR'.&lt;/P&gt;&lt;P&gt;m_sort c_gt_vbap 'NETWR'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ls_keyinfo-header01 = 'VBELN'.&lt;/P&gt;&lt;P&gt;ls_keyinfo-item01 = 'VBELN'.&lt;/P&gt;&lt;P&gt;ls_keyinfo-item02 = 'POSNR'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Dipslay Hierarchical list&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'&lt;/P&gt;&lt;P&gt;EXPORTING&lt;/P&gt;&lt;P&gt;i_callback_program = sy-cprog&lt;/P&gt;&lt;P&gt;i_callback_user_command = 'USER_COMMAND'&lt;/P&gt;&lt;P&gt;is_layout = ls_layout&lt;/P&gt;&lt;P&gt;it_fieldcat = lt_fieldcat&lt;/P&gt;&lt;P&gt;it_sort = lt_sort&lt;/P&gt;&lt;P&gt;i_tabname_header = c_gt_vbak&lt;/P&gt;&lt;P&gt;i_tabname_item = c_gt_vbap&lt;/P&gt;&lt;P&gt;is_keyinfo = ls_keyinfo&lt;/P&gt;&lt;P&gt;TABLES&lt;/P&gt;&lt;P&gt;t_outtab_header = gt_vbak&lt;/P&gt;&lt;P&gt;t_outtab_item = gt_vbap&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;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;&lt;/P&gt;&lt;P&gt;ENDFORM. " F_LIST_DISPLAY&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Form USER_COMMAND *&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 user_command USING i_ucomm TYPE sy-ucomm&lt;/P&gt;&lt;P&gt;is_selfield TYPE slis_selfield. "#EC CALLED&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA ls_vbak TYPE ty_vbak.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CASE i_ucomm.&lt;/P&gt;&lt;P&gt;WHEN '&amp;amp;IC1'. " Pick&lt;/P&gt;&lt;P&gt;CASE is_selfield-tabname.&lt;/P&gt;&lt;P&gt;WHEN c_gt_vbap.&lt;/P&gt;&lt;P&gt;WHEN c_gt_vbak.&lt;/P&gt;&lt;P&gt;READ TABLE gt_vbak INDEX is_selfield-tabindex INTO ls_vbak.&lt;/P&gt;&lt;P&gt;IF sy-subrc EQ 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Sales order number&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;SET PARAMETER ID 'AUN' FIELD ls_vbak-vbeln.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Display Sales Order&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.&lt;/P&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;ENDCASE.&lt;/P&gt;&lt;P&gt;ENDCASE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM. " USER_COMMAND&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;LI level="18" type="ul"&gt;&lt;P&gt;END OF PROGRAM Z_ALV_HIERSEQ_LIST ******************&lt;/P&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;P&gt;regards.&lt;/P&gt;&lt;P&gt;sowjanya.b&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 27 Mar 2008 08:27:26 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/how-to-implement-classes-with-alv-s/m-p/3586103#M863456</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-03-27T08:27:26Z</dc:date>
    </item>
    <item>
      <title>Re: how to implement classes with alv's</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/how-to-implement-classes-with-alv-s/m-p/3586104#M863457</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;You would find a lot of material on the forums regarding ALV.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1. Please give me general info on ALV.&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sapfans.com/forums/viewtopic.php?t=58286" target="test_blank"&gt;http://www.sapfans.com/forums/viewtopic.php?t=58286&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sapfans.com/forums/viewtopic.php?t=76490" target="test_blank"&gt;http://www.sapfans.com/forums/viewtopic.php?t=76490&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sapfans.com/forums/viewtopic.php?t=20591" target="test_blank"&gt;http://www.sapfans.com/forums/viewtopic.php?t=20591&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sapfans.com/forums/viewtopic.php?t=66305" target="test_blank"&gt;http://www.sapfans.com/forums/viewtopic.php?t=66305&lt;/A&gt; - this one discusses which way should you use - ABAP Objects calls or simple function modules.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;2. How do I program double click in ALV?&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sapfans.com/forums/viewtopic.php?t=11601" target="test_blank"&gt;http://www.sapfans.com/forums/viewtopic.php?t=11601&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sapfans.com/forums/viewtopic.php?t=23010" target="test_blank"&gt;http://www.sapfans.com/forums/viewtopic.php?t=23010&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;3. How do I add subtotals (I have problem to add them)...&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sapfans.com/forums/viewtopic.php?t=20386" target="test_blank"&gt;http://www.sapfans.com/forums/viewtopic.php?t=20386&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sapfans.com/forums/viewtopic.php?t=85191" target="test_blank"&gt;http://www.sapfans.com/forums/viewtopic.php?t=85191&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sapfans.com/forums/viewtopic.php?t=88401" target="test_blank"&gt;http://www.sapfans.com/forums/viewtopic.php?t=88401&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sapfans.com/forums/viewtopic.php?t=17335" target="test_blank"&gt;http://www.sapfans.com/forums/viewtopic.php?t=17335&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;4. How to add list heading like top-of-page in ABAP lists?&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sapfans.com/forums/viewtopic.php?t=58775" target="test_blank"&gt;http://www.sapfans.com/forums/viewtopic.php?t=58775&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sapfans.com/forums/viewtopic.php?t=60550" target="test_blank"&gt;http://www.sapfans.com/forums/viewtopic.php?t=60550&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sapfans.com/forums/viewtopic.php?t=16629" target="test_blank"&gt;http://www.sapfans.com/forums/viewtopic.php?t=16629&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;5. How to print page number / total number of pages X/XX in ALV?&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sapfans.com/forums/viewtopic.php?t=29597" target="test_blank"&gt;http://www.sapfans.com/forums/viewtopic.php?t=29597&lt;/A&gt; (no direct solution)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;6. ALV printing problems. The favourite is: The first page shows the number of records selected but I don't need this.&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sapfans.com/forums/viewtopic.php?t=64320" target="test_blank"&gt;http://www.sapfans.com/forums/viewtopic.php?t=64320&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sapfans.com/forums/viewtopic.php?t=44477" target="test_blank"&gt;http://www.sapfans.com/forums/viewtopic.php?t=44477&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;7. How can I set the cell color in ALV?&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sapfans.com/forums/viewtopic.php?t=52107" target="test_blank"&gt;http://www.sapfans.com/forums/viewtopic.php?t=52107&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;8. How do I print a logo/graphics in ALV?&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sapfans.com/forums/viewtopic.php?t=81149" target="test_blank"&gt;http://www.sapfans.com/forums/viewtopic.php?t=81149&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sapfans.com/forums/viewtopic.php?t=35498" target="test_blank"&gt;http://www.sapfans.com/forums/viewtopic.php?t=35498&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sapfans.com/forums/viewtopic.php?t=5013" target="test_blank"&gt;http://www.sapfans.com/forums/viewtopic.php?t=5013&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;9. How do I create and use input-enabled fields in ALV?&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sapfans.com/forums/viewtopic.php?t=84933" target="test_blank"&gt;http://www.sapfans.com/forums/viewtopic.php?t=84933&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sapfans.com/forums/viewtopic.php?t=69878" target="test_blank"&gt;http://www.sapfans.com/forums/viewtopic.php?t=69878&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;10. How can I use ALV for reports that are going to be run in background?&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sapfans.com/forums/viewtopic.php?t=83243" target="test_blank"&gt;http://www.sapfans.com/forums/viewtopic.php?t=83243&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sapfans.com/forums/viewtopic.php?t=19224" target="test_blank"&gt;http://www.sapfans.com/forums/viewtopic.php?t=19224&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;11. How can I display an icon in ALV? (Common requirement is traffic light icon).&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sapfans.com/forums/viewtopic.php?t=79424" target="test_blank"&gt;http://www.sapfans.com/forums/viewtopic.php?t=79424&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sapfans.com/forums/viewtopic.php?t=24512" target="test_blank"&gt;http://www.sapfans.com/forums/viewtopic.php?t=24512&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;12. How can I display a checkbox in ALV?&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sapfans.com/forums/viewtopic.php?t=88376" target="test_blank"&gt;http://www.sapfans.com/forums/viewtopic.php?t=88376&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sapfans.com/forums/viewtopic.php?t=40968" target="test_blank"&gt;http://www.sapfans.com/forums/viewtopic.php?t=40968&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sapfans.com/forums/viewtopic.php?t=6919" target="test_blank"&gt;http://www.sapfans.com/forums/viewtopic.php?t=6919&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ALV Programming has undergone a major change over the last couple of years. First we had the function module approach - where the data to be displayed is passed to a function module like REUSE_ALV_LIST_DISPLAY. Then with the introduction of the OO concepts in 46C we had classes like CL_GUI_ALV_GRID and CL_GUI_ALV_TREE which changed ALV Programming quite a bit. Most (almost all ?) ABAPers today use these classes to program their ALV.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If you were asked to name one improvement to this approach based on classes, what would that be? I would say that it is still a bit painful to create a screen and put a custom control container and then place this ALV Grid in that , all by myself. Especially when I want to create some test programs to answer the questions in the ABAP Forum :-)! Wouldn't it be great if I could worry less about these and concentrate more on imporving the functionality of my ALV Grid?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This is precisely what you can do from Basis 640. You can now program an ALV in various modes (Fullscreen, Regular and List Mode), all using a single class (and without even having to create a screen ! ).&lt;/P&gt;&lt;P&gt;So without further ado, let me introduce you what's called the ALV Object Model. Now, what's that ?&lt;/P&gt;&lt;P&gt;&amp;#149;	ALV Object Model is an object-oriented encapsulation of the existing tools, presenting a simplified unified and object-oriented API to the application developer. &lt;/P&gt;&lt;P&gt;&amp;#149;	It makes migration of applications to the Web Dynpro easier. &lt;/P&gt;&lt;P&gt;&amp;#149;	ALV tools with the same data model can be used via the same API - &lt;/P&gt;&lt;P&gt;1.	List Based ALV, Fullscreen ALV, ALV Grid using simple tables can now be programmed using the same OM class CL_SALV_TABLE. &lt;/P&gt;&lt;P&gt;2.	Hierarchical ALV can be programmed using the OM class CL_SALV_HIERSEQ_TABLE. &lt;/P&gt;&lt;P&gt;3.	Tree ALV can be programmed using the OM class CL_SALV_TREE. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here's a small example program which illustrates the simplicity of this new approach - Here are the Data Declarations for this program- &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;
REPORT  ZALV_OBJECTMODEL_TEST.

DATA : dyntab    TYPE STANDARD TABLE OF dntab,
       wa_dyntab TYPE dntab,
       dref      TYPE REF TO data,

       i_fcat    TYPE  lvc_t_fcat,
       wa_fcat   TYPE lvc_s_fcat,
       tab_name TYPE ddobjname VALUE 'SPFLI',
       gr_table TYPE REF TO cl_salv_table.

FIELD-SYMBOLS : &amp;lt;newtab&amp;gt; TYPE table.
&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;We shall first create an internal table dynamically (this technique has already been discussed in some of the earlier weblogs) and populate it with the data from the table SPFLI.&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;

START-OF-SELECTION.
  CALL FUNCTION 'NAMETAB_GET'
    EXPORTING
      langu   = sy-langu
      tabname = tab_name
    TABLES
      nametab = dyntab. "dyntab now contains the field names

* FILLING THE CATALOG OF NEW DYNAMIC INTERNAL TABLE

  LOOP AT dyntab INTO wa_dyntab.
    wa_fcat-fieldname = wa_dyntab-fieldname.
    wa_fcat-ref_field = wa_dyntab-fieldname.
    wa_fcat-ref_table = wa_dyntab-tabname.
    APPEND wa_fcat TO i_fcat .
  ENDLOOP.

* CREATING A POINTER (FIELD SYMBOL) TO THE INTERNAL TABLE
  CALL METHOD cl_alv_table_create=&amp;gt;create_dynamic_table
    EXPORTING
      it_fieldcatalog = i_fcat
    IMPORTING
      ep_table        = dref.

  ASSIGN  dref-&amp;gt;* TO &amp;lt;newtab&amp;gt;.

* SELECT the data from the table SPFLI. If you want a different table, then just use 
*a different value than SPFLI in the data declarations part. Or better still, use a 
*PARAMETERS to take the name of the table name as input from the selection-screen.

  SELECT *
    FROM (tab_name)
    INTO TABLE &amp;lt;newtab&amp;gt;
   UP TO 25 ROWS.
&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Now all you have to do is to call a method of the class CL_SALV_TABLE to display your grid.&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;

* Instead of if_salv_c_bool_sap=&amp;gt;false, you can pass the  value *if_salv_c_bool_sap=&amp;gt;true to this method to see your ALV as a list. 
  TRY.
      CALL METHOD cl_salv_table=&amp;gt;factory
        EXPORTING
          list_display   = if_salv_c_bool_sap=&amp;gt;false
        IMPORTING
          r_salv_table   = gr_table
        CHANGING
          t_table        = &amp;lt;newtab&amp;gt;.

    CATCH cx_salv_msg.
  ENDTRY.
  gr_table-&amp;gt;display( ).
&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Instead of building the fieldcatalog using the function module NAMETAB_GET and creating the dynamic table using cl_alv_table_create, you can use the following approach using the RTTS (Run Time Type Services): &lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;

DATA:
dref TYPE REF TO data,
gr_table TYPE REF TO cl_salv_table, 

tab_name TYPE ddobjname VALUE 'SPFLI',
linetype TYPE REF TO cl_abap_structdescr,
tabletype TYPE REF TO cl_abap_tabledescr. 

FIELD-SYMBOLS:
&amp;lt;newtab&amp;gt; TYPE STANDARD TABLE. 

START-OF-SELECTION. 

linetype ?= cl_abap_typedescr=&amp;gt;describe_by_name( tab_name ). 

tabletype = cl_abap_tabledescr=&amp;gt;create(
p_line_type = linetype
p_table_kind = cl_abap_tabledescr=&amp;gt;tablekind_std ). 

CREATE DATA dref TYPE HANDLE tabletype. 

ASSIGN dref-&amp;gt;* TO &amp;lt;newtab&amp;gt;. 

SELECT * FROM spfli INTO TABLE &amp;lt;newtab&amp;gt;
UP TO 25 ROWS. 

END-OF-SELECTION. 

*... Create Instance
TRY.
CALL METHOD cl_salv_table=&amp;gt;factory
IMPORTING
r_salv_table = gr_table
CHANGING
t_table = &amp;lt;newtab&amp;gt;. 

CATCH cx_salv_msg.
ENDTRY. 

*Display table
gr_table-&amp;gt;display( ). 
&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here in the above code, you can also specify your own internal type (defined in your report) with fields of ABAP dictionary type like: \&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;
TYPES:
BEGIN OF my_own_type,
sample_field_1 TYPE spfli-carrid,
sample_field_2 TYPE spfli-connid,
END OF my_own_type. 
linetype ?= cl_abap_typedescr=&amp;gt;describe_by_name( 'MY_OWN_TYPE' ). 
&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The cl_salv_table=&amp;gt;factory method will automatically pickup the field descriptions from the ABAP Dictionary. &lt;/P&gt;&lt;P&gt;Of course, you can also define your headings using the other methods of the SALV classes.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For more information, check the below links for &lt;STRONG&gt;ALV Grid Control&lt;/STRONG&gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://help.sap.com/saphelp_webas630/helpdata/en/99/49b844d61911d2b469006094192fe3/frameset.htm" target="test_blank"&gt;http://help.sap.com/saphelp_webas630/helpdata/en/99/49b844d61911d2b469006094192fe3/frameset.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCSRVALV/BCSRVALV.pdf" target="test_blank"&gt;http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCSRVALV/BCSRVALV.pdf&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCCIDOCK/BCCIDOCK.pdf" target="test_blank"&gt;http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCCIDOCK/BCCIDOCK.pdf&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCCIGOF/BCCIGOF.pdf" target="test_blank"&gt;http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCCIGOF/BCCIGOF.pdf&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Go thru these programs they may help u to try on some hands on&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;ALV Demo program&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;BCALV_DEMO_HTML&lt;/P&gt;&lt;P&gt;BCALV_FULLSCREEN_DEMO ALV Demo: Fullscreen Mode&lt;/P&gt;&lt;P&gt;BCALV_FULLSCREEN_DEMO_CLASSIC ALV demo: Fullscreen mode&lt;/P&gt;&lt;P&gt;BCALV_GRID_DEMO Simple ALV Control Call Demo Program&lt;/P&gt;&lt;P&gt;BCALV_TREE_DEMO Demo for ALV tree control&lt;/P&gt;&lt;P&gt;BCALV_TREE_SIMPLE_DEMO&lt;/P&gt;&lt;P&gt;BC_ALV_DEMO_HTML_D0100&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Hope this helps. Rwd points if helpful.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Balaji&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 27 Mar 2008 08:38:36 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/how-to-implement-classes-with-alv-s/m-p/3586104#M863457</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-03-27T08:38:36Z</dc:date>
    </item>
    <item>
      <title>Re: how to implement classes with alv's</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/how-to-implement-classes-with-alv-s/m-p/3586105#M863458</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Jyotsna,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;check this example codes.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*"Table declarations...................................................&lt;/P&gt;&lt;P&gt;TABLES:&lt;/P&gt;&lt;P&gt;EKKO, " Purchasing Document Header&lt;/P&gt;&lt;P&gt;CDHDR, " Change document header&lt;/P&gt;&lt;P&gt;SSCRFIELDS. " Fields on selection screens&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*"Selection screen elements............................................&lt;/P&gt;&lt;P&gt;SELECT-OPTIONS:&lt;/P&gt;&lt;P&gt;S_EBELN FOR EKKO-EBELN, " Purchasing Document Number&lt;/P&gt;&lt;P&gt;S_LIFNR FOR EKKO-LIFNR, " Vendor's account number&lt;/P&gt;&lt;P&gt;S_EKGRP FOR EKKO-EKGRP, " Purchasing group&lt;/P&gt;&lt;P&gt;S_BEDAT FOR EKKO-BEDAT, " Purchasing Document Date&lt;/P&gt;&lt;P&gt;S_UDATE FOR CDHDR-UDATE. " Creation date of the change&lt;/P&gt;&lt;P&gt;" document&lt;/P&gt;&lt;P&gt;*" Data declarations...................................................&lt;/P&gt;&lt;P&gt;"----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Field String to hold Purchase Document Number * &lt;/P&gt;&lt;P&gt;"----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;DATA:&lt;/P&gt;&lt;P&gt;BEGIN OF FS_EBELN,&lt;/P&gt;&lt;P&gt;EBELN(90) TYPE C, " Purchase Document Number&lt;/P&gt;&lt;P&gt;ERNAM TYPE EKKO-ERNAM, " Name of Person who Created&lt;/P&gt;&lt;P&gt;" the Object&lt;/P&gt;&lt;P&gt;LIFNR TYPE EKKO-LIFNR, " Vendor's account number&lt;/P&gt;&lt;P&gt;EKGRP TYPE EKKO-EKGRP, " Purchasing group&lt;/P&gt;&lt;P&gt;BEDAT TYPE EKKO-BEDAT, " Purchasing Document Date&lt;/P&gt;&lt;P&gt;END OF FS_EBELN,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;"----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Field String to hold Purchase Document Header * &lt;/P&gt;&lt;P&gt;"----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;BEGIN OF FS_EKKO,&lt;/P&gt;&lt;P&gt;EBELN TYPE EKKO-EBELN, " Purchasing Document Number&lt;/P&gt;&lt;P&gt;ERNAM TYPE EKKO-ERNAM, " Name of Person who Created the&lt;/P&gt;&lt;P&gt;" Object&lt;/P&gt;&lt;P&gt;LIFNR TYPE EKKO-LIFNR, " Vendor's account number&lt;/P&gt;&lt;P&gt;EKGRP TYPE EKKO-EKGRP, " Purchasing group&lt;/P&gt;&lt;P&gt;BEDAT TYPE EKKO-BEDAT, " Purchasing Document Date&lt;/P&gt;&lt;P&gt;END OF FS_EKKO,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;"----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Field String to hold Account Number and name of the Vendor * &lt;/P&gt;&lt;P&gt;"----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;BEGIN OF FS_LFA1,&lt;/P&gt;&lt;P&gt;LIFNR TYPE LFA1-LIFNR, " Account Number of Vendor&lt;/P&gt;&lt;P&gt;NAME1 TYPE LFA1-NAME1, " Name1&lt;/P&gt;&lt;P&gt;END OF FS_LFA1,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;"----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Field String to hold Change date and the name of the user * &lt;/P&gt;&lt;P&gt;"----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;BEGIN OF FS_CDHDR,&lt;/P&gt;&lt;P&gt;OBJECTCLAS TYPE CDHDR-OBJECTCLAS, " Object Class&lt;/P&gt;&lt;P&gt;OBJECTID TYPE CDHDR-OBJECTID, " Object value&lt;/P&gt;&lt;P&gt;CHANGENR TYPE CDHDR-CHANGENR, " Document change number&lt;/P&gt;&lt;P&gt;USERNAME TYPE CDHDR-USERNAME, " User name&lt;/P&gt;&lt;P&gt;UDATE TYPE CDHDR-UDATE, " Creation date of the change&lt;/P&gt;&lt;P&gt;" document&lt;/P&gt;&lt;P&gt;END OF FS_CDHDR,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;"----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Field String to hold Change document items * &lt;/P&gt;&lt;P&gt;"----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;BEGIN OF FS_CDPOS,&lt;/P&gt;&lt;P&gt;OBJECTCLAS TYPE CDPOS-OBJECTCLAS," Object class&lt;/P&gt;&lt;P&gt;OBJECTID(10) TYPE C, " Object Value&lt;/P&gt;&lt;P&gt;CHANGENR TYPE CDPOS-CHANGENR, " Document change number&lt;/P&gt;&lt;P&gt;TABNAME TYPE CDPOS-TABNAME, " Table Name&lt;/P&gt;&lt;P&gt;FNAME TYPE CDPOS-FNAME, " Field Name&lt;/P&gt;&lt;P&gt;VALUE_NEW TYPE CDPOS-VALUE_NEW, " New contents of changed field&lt;/P&gt;&lt;P&gt;VALUE_OLD TYPE CDPOS-VALUE_OLD, " Old contents of changed field&lt;/P&gt;&lt;P&gt;END OF FS_CDPOS,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;"----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Field String to hold Date Element Name * &lt;/P&gt;&lt;P&gt;"----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;BEGIN OF FS_DATAELE,&lt;/P&gt;&lt;P&gt;TABNAME TYPE DD03L-TABNAME, " Table Name&lt;/P&gt;&lt;P&gt;FIELDNAME TYPE DD03L-FIELDNAME, " Field Name&lt;/P&gt;&lt;P&gt;ROLLNAME TYPE DD03L-ROLLNAME, " Data element (semantic domain)&lt;/P&gt;&lt;P&gt;END OF FS_DATAELE,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;"----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Field String to hold Short Text of the Date Element * &lt;/P&gt;&lt;P&gt;"----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;BEGIN OF FS_TEXT,&lt;/P&gt;&lt;P&gt;ROLLNAME TYPE DD04T-ROLLNAME, " Data element (semantic domain)&lt;/P&gt;&lt;P&gt;DDTEXT TYPE DD04T-DDTEXT, " Short Text Describing R/3&lt;/P&gt;&lt;P&gt;" Repository Objects&lt;/P&gt;&lt;P&gt;END OF FS_TEXT,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;"----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Field String to hold data to be displayed on the ALV grid * &lt;/P&gt;&lt;P&gt;"----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;BEGIN OF FS_OUTTAB,&lt;/P&gt;&lt;P&gt;EBELN TYPE EKKO-EBELN, " Purchasing Document Number&lt;/P&gt;&lt;P&gt;ERNAM TYPE EKKO-ERNAM, " Name of Person who Created the&lt;/P&gt;&lt;P&gt;" Object&lt;/P&gt;&lt;P&gt;LIFNR TYPE EKKO-LIFNR, " Vendor's account number&lt;/P&gt;&lt;P&gt;EKGRP TYPE EKKO-EKGRP, " Purchasing group&lt;/P&gt;&lt;P&gt;BEDAT TYPE EKKO-BEDAT, " Purchasing Document Date&lt;/P&gt;&lt;P&gt;WERKS TYPE LFA1-WERKS, " Plant&lt;/P&gt;&lt;P&gt;NAME1 TYPE LFA1-NAME1, " Name1&lt;/P&gt;&lt;P&gt;USERNAME TYPE CDHDR-USERNAME, " User name&lt;/P&gt;&lt;P&gt;UDATE TYPE CDHDR-UDATE, " Creation date of the change&lt;/P&gt;&lt;P&gt;" document&lt;/P&gt;&lt;P&gt;DDTEXT TYPE DD04T-DDTEXT, " Short Text Describing R/3&lt;/P&gt;&lt;P&gt;" Repository Objects&lt;/P&gt;&lt;P&gt;VALUE_NEW TYPE CDPOS-VALUE_NEW, " New contents of changed field&lt;/P&gt;&lt;P&gt;VALUE_OLD TYPE CDPOS-VALUE_OLD, " Old contents of changed field&lt;/P&gt;&lt;P&gt;END OF FS_OUTTAB,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;"----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Internal table to hold Purchase Document Number * &lt;/P&gt;&lt;P&gt;"----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;T_EBELN LIKE STANDARD TABLE&lt;/P&gt;&lt;P&gt;OF FS_EBELN,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;"----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Internal table to hold Purchase Document Header * &lt;/P&gt;&lt;P&gt;"----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;T_EKKO LIKE STANDARD TABLE&lt;/P&gt;&lt;P&gt;OF FS_EKKO,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;"----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Temp Internal table to hold Purchase Document Header * &lt;/P&gt;&lt;P&gt;"----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;T_EKKO_TEMP LIKE STANDARD TABLE&lt;/P&gt;&lt;P&gt;OF FS_EKKO,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;"----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Internal table to hold Account number and Name of the Vendor * &lt;/P&gt;&lt;P&gt;"----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;T_LFA1 LIKE STANDARD TABLE&lt;/P&gt;&lt;P&gt;OF FS_LFA1,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;"----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Internal Table to hold Change date and the name of the user * &lt;/P&gt;&lt;P&gt;"----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;T_CDHDR LIKE STANDARD TABLE&lt;/P&gt;&lt;P&gt;OF FS_CDHDR,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;"----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Internal Table to hold Change document items * &lt;/P&gt;&lt;P&gt;"----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;T_CDPOS LIKE STANDARD TABLE&lt;/P&gt;&lt;P&gt;OF FS_CDPOS,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;"----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Temp. Internal Table to hold Change document items * &lt;/P&gt;&lt;P&gt;"----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;T_CDPOS_TEMP LIKE STANDARD TABLE&lt;/P&gt;&lt;P&gt;OF FS_CDPOS,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;"----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Internal Table to hold Data Element Name * &lt;/P&gt;&lt;P&gt;"----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;T_DATAELE LIKE STANDARD TABLE&lt;/P&gt;&lt;P&gt;OF FS_DATAELE,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;"----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Temp. Internal Table to hold Data Element Name * &lt;/P&gt;&lt;P&gt;"----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;T_DATAELE_TEMP LIKE STANDARD TABLE&lt;/P&gt;&lt;P&gt;OF FS_DATAELE,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;"----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Internal Table to hold Short Text of the Date Element * &lt;/P&gt;&lt;P&gt;"----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;T_TEXT LIKE STANDARD TABLE&lt;/P&gt;&lt;P&gt;OF FS_TEXT,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;"----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Internal Table to hold data to be displayed on the ALV grid * &lt;/P&gt;&lt;P&gt;"----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;T_OUTTAB LIKE STANDARD TABLE&lt;/P&gt;&lt;P&gt;OF FS_OUTTAB.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;"----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;C L A S S D E F I N I T I O N * &lt;/P&gt;&lt;P&gt;"----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;CLASS LCL_EVENT_HANDLER DEFINITION DEFERRED.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*" Data declarations...................................................&lt;/P&gt;&lt;P&gt;"----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Work variables * &lt;/P&gt;&lt;P&gt;"----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;DATA:&lt;/P&gt;&lt;P&gt;W_EBELN TYPE EKKO-EBELN, " Purchasing Document Number&lt;/P&gt;&lt;P&gt;W_LIFNR TYPE EKKO-LIFNR, " Vendor's account number&lt;/P&gt;&lt;P&gt;W_EKGRP TYPE EKKO-EKGRP, " Purchasing group&lt;/P&gt;&lt;P&gt;W_VALUE TYPE EKKO-EBELN, " Reflected Value&lt;/P&gt;&lt;P&gt;W_SPACE VALUE ' ', " Space&lt;/P&gt;&lt;P&gt;W_FLAG TYPE I, " Flag Variable&lt;/P&gt;&lt;P&gt;W_VARIANT TYPE DISVARIANT, " Variant&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ALV Grid &lt;/P&gt;&lt;P&gt;W_GRID TYPE REF TO CL_GUI_ALV_GRID,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Event Handler &lt;/P&gt;&lt;P&gt;W_EVENT_CLICK TYPE REF TO LCL_EVENT_HANDLER,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Field catalog table &lt;/P&gt;&lt;P&gt;T_FIELDCAT TYPE LVC_T_FCAT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;"----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;AT SELECTION-SCREEN EVENT * &lt;/P&gt;&lt;P&gt;"----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;AT SELECTION-SCREEN ON S_EBELN.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Subroutine to validate Purchase Document Number. &lt;/P&gt;&lt;P&gt;PERFORM VALIDATE_PD_NUM.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;AT SELECTION-SCREEN ON S_LIFNR.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Subroutine to validate Vendor Number. &lt;/P&gt;&lt;P&gt;PERFORM VALIDATE_VEN_NUM.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;AT SELECTION-SCREEN ON S_EKGRP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Subroutine to validate Purchase Group. &lt;/P&gt;&lt;P&gt;PERFORM VALIDATE_PUR_GRP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;"----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;START-OF-SELECTION EVENT * &lt;/P&gt;&lt;P&gt;"----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;START-OF-SELECTION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Subroutine to select all Purchase orders. &lt;/P&gt;&lt;P&gt;PERFORM SELECT_PO.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CHECK W_FLAG EQ 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Subroutine to select Object values. &lt;/P&gt;&lt;P&gt;PERFORM SELECT_OBJ_ID.&lt;/P&gt;&lt;P&gt;CHECK W_FLAG EQ 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Subroutine to select Changed values. &lt;/P&gt;&lt;P&gt;PERFORM SELECT_CHANGED_VALUE.&lt;/P&gt;&lt;P&gt;CHECK W_FLAG EQ 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Subroutine to Select Purchase Orders. &lt;/P&gt;&lt;P&gt;PERFORM SELECT_PUR_DOC.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Subroutine to select Vendor Details. &lt;/P&gt;&lt;P&gt;PERFORM SELECT_VENDOR.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Subroutine to select Text for the Changed values. &lt;/P&gt;&lt;P&gt;PERFORM DESCRIPTION.&lt;/P&gt;&lt;P&gt;"----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;END-OF-SELECTION EVENT * &lt;/P&gt;&lt;P&gt;"----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;END-OF-SELECTION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;IF NOT T_EKKO IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Subroutine to populate the Output Table. &lt;/P&gt;&lt;P&gt;PERFORM FILL_OUTTAB.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Subroutine to build Field Catalog. &lt;/P&gt;&lt;P&gt;PERFORM PREPARE_FIELD_CATALOG CHANGING T_FIELDCAT.&lt;/P&gt;&lt;P&gt;CALL SCREEN 100.&lt;/P&gt;&lt;P&gt;ENDIF. " IF NOT T_EKKO...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CLASS LCL_EVENT_HANDLER DEFINITION &lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Defining Class which handles events &lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------" /&gt;&lt;P&gt;CLASS LCL_EVENT_HANDLER DEFINITION .&lt;/P&gt;&lt;P&gt;PUBLIC SECTION .&lt;/P&gt;&lt;P&gt;METHODS:&lt;/P&gt;&lt;P&gt;HANDLE_HOTSPOT_CLICK&lt;/P&gt;&lt;P&gt;FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID&lt;/P&gt;&lt;P&gt;IMPORTING E_ROW_ID E_COLUMN_ID.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDCLASS. " LCL_EVENT_HANDLER DEFINITION&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CLASS LCL_EVENT_HANDLER IMPLEMENTATION &lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Implementing the Class which can handle events &lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------" /&gt;&lt;P&gt;CLASS LCL_EVENT_HANDLER IMPLEMENTATION .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*---Handle Double Click&lt;/P&gt;&lt;P&gt;METHOD HANDLE_HOTSPOT_CLICK .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Subroutine to get the HotSpot Cell information. &lt;/P&gt;&lt;P&gt;PERFORM GET_CELL_INFO.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SET PARAMETER ID 'BES' FIELD W_VALUE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CALL TRANSACTION 'ME23N'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDMETHOD. " HANDLE_HOTSPOT_CLICK&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDCLASS. " LCL_EVENT_HANDLER&lt;/P&gt;&lt;P&gt;&amp;amp;----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&amp;amp; Module STATUS_0100 OUTPUT&lt;/P&gt;&lt;P&gt;&amp;amp;----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;PBO Event &lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------------" /&gt;&lt;P&gt;MODULE STATUS_0100 OUTPUT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SET PF-STATUS 'OOPS'.&lt;/P&gt;&lt;P&gt;SET TITLEBAR 'TIT'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Subroutine to fill the Variant Structure &lt;/P&gt;&lt;P&gt;PERFORM FILL_VARIANT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;IF W_GRID IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CREATE OBJECT W_GRID&lt;/P&gt;&lt;P&gt;EXPORTING&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I_SHELLSTYLE = 0 &lt;/P&gt;&lt;P&gt;I_LIFETIME = &lt;/P&gt;&lt;P&gt;I_PARENT = CL_GUI_CONTAINER=&amp;gt;SCREEN0&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I_APPL_EVENTS = &lt;/P&gt;&lt;P&gt;I_PARENTDBG = &lt;/P&gt;&lt;P&gt;I_APPLOGPARENT = &lt;/P&gt;&lt;P&gt;I_GRAPHICSPARENT = &lt;/P&gt;&lt;P&gt;I_NAME = &lt;/P&gt;&lt;P&gt;I_FCAT_COMPLETE = SPACE &lt;/P&gt;&lt;P&gt;EXCEPTIONS&lt;/P&gt;&lt;P&gt;ERROR_CNTL_CREATE = 1&lt;/P&gt;&lt;P&gt;ERROR_CNTL_INIT = 2&lt;/P&gt;&lt;P&gt;ERROR_CNTL_LINK = 3&lt;/P&gt;&lt;P&gt;ERROR_DP_CREATE = 4&lt;/P&gt;&lt;P&gt;OTHERS = 5.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;IF SY-SUBRC 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. " IF SY-SUBRC 0&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CALL METHOD W_GRID-&amp;gt;SET_TABLE_FOR_FIRST_DISPLAY&lt;/P&gt;&lt;P&gt;EXPORTING&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I_BUFFER_ACTIVE = &lt;/P&gt;&lt;P&gt;I_BYPASSING_BUFFER = &lt;/P&gt;&lt;P&gt;I_CONSISTENCY_CHECK = &lt;/P&gt;&lt;P&gt;I_STRUCTURE_NAME = &lt;/P&gt;&lt;P&gt;IS_VARIANT = W_VARIANT&lt;/P&gt;&lt;P&gt;I_SAVE = 'A'&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I_DEFAULT = 'X' &lt;/P&gt;&lt;P&gt;IS_LAYOUT = &lt;/P&gt;&lt;P&gt;IS_PRINT = &lt;/P&gt;&lt;P&gt;IT_SPECIAL_GROUPS = &lt;/P&gt;&lt;P&gt;IT_TOOLBAR_EXCLUDING = &lt;/P&gt;&lt;P&gt;IT_HYPERLINK = &lt;/P&gt;&lt;P&gt;IT_ALV_GRAPHICS = &lt;/P&gt;&lt;P&gt;IT_EXCEPT_QINFO = &lt;/P&gt;&lt;P&gt;IR_SALV_ADAPTER = &lt;/P&gt;&lt;P&gt;CHANGING&lt;/P&gt;&lt;P&gt;IT_OUTTAB = T_OUTTAB&lt;/P&gt;&lt;P&gt;IT_FIELDCATALOG = T_FIELDCAT&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;IT_SORT = &lt;/P&gt;&lt;P&gt;IT_FILTER = &lt;/P&gt;&lt;P&gt;EXCEPTIONS&lt;/P&gt;&lt;P&gt;INVALID_PARAMETER_COMBINATION = 1&lt;/P&gt;&lt;P&gt;PROGRAM_ERROR = 2&lt;/P&gt;&lt;P&gt;TOO_MANY_LINES = 3&lt;/P&gt;&lt;P&gt;OTHERS = 4&lt;/P&gt;&lt;P&gt;.&lt;/P&gt;&lt;P&gt;IF SY-SUBRC 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. " IF SY-SUBRC 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDIF. " IF W_GRID IS INITIAL&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CREATE OBJECT W_EVENT_CLICK.&lt;/P&gt;&lt;P&gt;SET HANDLER W_EVENT_CLICK-&amp;gt;HANDLE_HOTSPOT_CLICK FOR W_GRID.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDMODULE. " STATUS_0100 OUTPUT&lt;/P&gt;&lt;P&gt;&amp;amp;----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&amp;amp; Module USER_COMMAND_0100 INPUT&lt;/P&gt;&lt;P&gt;&amp;amp;----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;PAI Event &lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------------" /&gt;&lt;P&gt;MODULE USER_COMMAND_0100 INPUT.&lt;/P&gt;&lt;P&gt;CASE SY-UCOMM.&lt;/P&gt;&lt;P&gt;WHEN 'BACK'.&lt;/P&gt;&lt;P&gt;LEAVE TO SCREEN 0.&lt;/P&gt;&lt;P&gt;WHEN 'EXIT'.&lt;/P&gt;&lt;P&gt;LEAVE PROGRAM.&lt;/P&gt;&lt;P&gt;WHEN 'CANCEL'.&lt;/P&gt;&lt;P&gt;LEAVE TO SCREEN 0.&lt;/P&gt;&lt;P&gt;ENDCASE.&lt;/P&gt;&lt;P&gt;ENDMODULE. " USER_COMMAND_0100 INPUT&lt;/P&gt;&lt;P&gt;&amp;amp;----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&amp;amp; Form PREPARE_FIELD_CATALOG&lt;/P&gt;&lt;P&gt;&amp;amp;----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Subroutine to build the Field catalog &lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;lt;--P_T_FIELDCAT Field Catalog Table &lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------------" /&gt;&lt;P&gt;FORM PREPARE_FIELD_CATALOG CHANGING PT_FIELDCAT TYPE LVC_T_FCAT .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA LS_FCAT TYPE LVC_S_FCAT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Purchasing group... &lt;/P&gt;&lt;P&gt;LS_FCAT-FIELDNAME = 'EKGRP'.&lt;/P&gt;&lt;P&gt;LS_FCAT-REF_TABLE = 'EKKO'.&lt;/P&gt;&lt;P&gt;LS_FCAT-INTTYPE = 'C'.&lt;/P&gt;&lt;P&gt;LS_FCAT-OUTPUTLEN = '10'.&lt;/P&gt;&lt;P&gt;APPEND LS_FCAT TO PT_FIELDCAT.&lt;/P&gt;&lt;P&gt;CLEAR LS_FCAT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Purchasing Document Number... &lt;/P&gt;&lt;P&gt;LS_FCAT-FIELDNAME = 'EBELN'.&lt;/P&gt;&lt;P&gt;LS_FCAT-REF_TABLE = 'EKKO' .&lt;/P&gt;&lt;P&gt;LS_FCAT-EMPHASIZE = 'C411'.&lt;/P&gt;&lt;P&gt;LS_FCAT-INTTYPE = 'C'.&lt;/P&gt;&lt;P&gt;LS_FCAT-OUTPUTLEN = '10'.&lt;/P&gt;&lt;P&gt;LS_FCAT-HOTSPOT = 'X'.&lt;/P&gt;&lt;P&gt;APPEND LS_FCAT TO PT_FIELDCAT .&lt;/P&gt;&lt;P&gt;CLEAR LS_FCAT .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Name of Person who Created the Object... &lt;/P&gt;&lt;P&gt;LS_FCAT-FIELDNAME = 'ERNAM'.&lt;/P&gt;&lt;P&gt;LS_FCAT-REF_TABLE = 'EKKO'.&lt;/P&gt;&lt;P&gt;LS_FCAT-OUTPUTLEN = '15' .&lt;/P&gt;&lt;P&gt;APPEND LS_FCAT TO PT_FIELDCAT.&lt;/P&gt;&lt;P&gt;CLEAR LS_FCAT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Purchasing Document Date... &lt;/P&gt;&lt;P&gt;LS_FCAT-FIELDNAME = 'BEDAT'.&lt;/P&gt;&lt;P&gt;LS_FCAT-REF_TABLE = 'EKKO'.&lt;/P&gt;&lt;P&gt;LS_FCAT-INTTYPE = 'C'.&lt;/P&gt;&lt;P&gt;LS_FCAT-OUTPUTLEN = '10'.&lt;/P&gt;&lt;P&gt;APPEND LS_FCAT TO PT_FIELDCAT.&lt;/P&gt;&lt;P&gt;CLEAR LS_FCAT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Vendor's account number... &lt;/P&gt;&lt;P&gt;LS_FCAT-FIELDNAME = 'LIFNR'.&lt;/P&gt;&lt;P&gt;LS_FCAT-REF_TABLE = 'EKKO'.&lt;/P&gt;&lt;P&gt;LS_FCAT-INTTYPE = 'C'.&lt;/P&gt;&lt;P&gt;LS_FCAT-OUTPUTLEN = '10'.&lt;/P&gt;&lt;P&gt;APPEND LS_FCAT TO PT_FIELDCAT.&lt;/P&gt;&lt;P&gt;CLEAR LS_FCAT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Account Number of Vendor or Creditor... &lt;/P&gt;&lt;P&gt;LS_FCAT-FIELDNAME = 'NAME1'.&lt;/P&gt;&lt;P&gt;LS_FCAT-REF_TABLE = 'LFA1'.&lt;/P&gt;&lt;P&gt;LS_FCAT-INTTYPE = 'C'.&lt;/P&gt;&lt;P&gt;LS_FCAT-OUTPUTLEN = '10'.&lt;/P&gt;&lt;P&gt;LS_FCAT-COLTEXT = 'Vendor Name'(001).&lt;/P&gt;&lt;P&gt;LS_FCAT-SELTEXT = 'Vendor Name'(001).&lt;/P&gt;&lt;P&gt;APPEND LS_FCAT TO PT_FIELDCAT.&lt;/P&gt;&lt;P&gt;CLEAR LS_FCAT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Creation date of the change document... &lt;/P&gt;&lt;P&gt;LS_FCAT-FIELDNAME = 'UDATE'.&lt;/P&gt;&lt;P&gt;LS_FCAT-REF_TABLE = 'CDHDR'.&lt;/P&gt;&lt;P&gt;LS_FCAT-INTTYPE = 'C'.&lt;/P&gt;&lt;P&gt;LS_FCAT-OUTPUTLEN = '10'.&lt;/P&gt;&lt;P&gt;LS_FCAT-COLTEXT = 'Change Date'(002).&lt;/P&gt;&lt;P&gt;LS_FCAT-SELTEXT = 'Change Date'(002).&lt;/P&gt;&lt;P&gt;APPEND LS_FCAT TO PT_FIELDCAT.&lt;/P&gt;&lt;P&gt;CLEAR LS_FCAT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;User name of the person responsible in change document... &lt;/P&gt;&lt;P&gt;LS_FCAT-FIELDNAME = 'USERNAME'.&lt;/P&gt;&lt;P&gt;LS_FCAT-REF_TABLE = 'CDHDR'.&lt;/P&gt;&lt;P&gt;LS_FCAT-INTTYPE = 'C'.&lt;/P&gt;&lt;P&gt;LS_FCAT-OUTPUTLEN = '10'.&lt;/P&gt;&lt;P&gt;LS_FCAT-COLTEXT = 'Modified by'(003).&lt;/P&gt;&lt;P&gt;LS_FCAT-SELTEXT = 'Modified by'(003).&lt;/P&gt;&lt;P&gt;APPEND LS_FCAT TO PT_FIELDCAT.&lt;/P&gt;&lt;P&gt;CLEAR LS_FCAT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Short Text Describing R/3 Repository Objects... &lt;/P&gt;&lt;P&gt;LS_FCAT-FIELDNAME = 'DDTEXT'.&lt;/P&gt;&lt;P&gt;LS_FCAT-REF_TABLE = 'DD04T'.&lt;/P&gt;&lt;P&gt;LS_FCAT-INTTYPE = 'C'.&lt;/P&gt;&lt;P&gt;LS_FCAT-OUTPUTLEN = '15'.&lt;/P&gt;&lt;P&gt;APPEND LS_FCAT TO PT_FIELDCAT.&lt;/P&gt;&lt;P&gt;CLEAR LS_FCAT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Old contents of changed field... &lt;/P&gt;&lt;P&gt;LS_FCAT-FIELDNAME = 'VALUE_OLD'.&lt;/P&gt;&lt;P&gt;LS_FCAT-REF_TABLE = 'CDPOS'.&lt;/P&gt;&lt;P&gt;LS_FCAT-INTTYPE = 'C'.&lt;/P&gt;&lt;P&gt;LS_FCAT-OUTPUTLEN = '12'.&lt;/P&gt;&lt;P&gt;APPEND LS_FCAT TO PT_FIELDCAT.&lt;/P&gt;&lt;P&gt;CLEAR LS_FCAT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;New contents of changed field... &lt;/P&gt;&lt;P&gt;LS_FCAT-FIELDNAME = 'VALUE_NEW'.&lt;/P&gt;&lt;P&gt;LS_FCAT-REF_TABLE = 'CDPOS'.&lt;/P&gt;&lt;P&gt;LS_FCAT-INTTYPE = 'C'.&lt;/P&gt;&lt;P&gt;LS_FCAT-OUTPUTLEN = '12'.&lt;/P&gt;&lt;P&gt;APPEND LS_FCAT TO PT_FIELDCAT.&lt;/P&gt;&lt;P&gt;CLEAR LS_FCAT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM. " PREPARE_FIELD_CATALOG&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;amp;----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&amp;amp; Form SELECT_PO&lt;/P&gt;&lt;P&gt;&amp;amp;----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Subroutine to select all the Purchase Orders &lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;There are no interface parameters to be passed to this subroutine. &lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------------" /&gt;&lt;P&gt;FORM SELECT_PO .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECT EBELN " Purchasing Document Number&lt;/P&gt;&lt;P&gt;ERNAM " Name of Person who Created&lt;/P&gt;&lt;P&gt;" the Object&lt;/P&gt;&lt;P&gt;LIFNR " Vendor's account number&lt;/P&gt;&lt;P&gt;EKGRP " Purchasing group&lt;/P&gt;&lt;P&gt;BEDAT " Purchasing Document Date&lt;/P&gt;&lt;P&gt;FROM EKKO&lt;/P&gt;&lt;P&gt;PACKAGE SIZE 10000&lt;/P&gt;&lt;P&gt;APPENDING TABLE T_EBELN&lt;/P&gt;&lt;P&gt;WHERE EBELN IN S_EBELN&lt;/P&gt;&lt;P&gt;AND BEDAT IN S_BEDAT.&lt;/P&gt;&lt;P&gt;ENDSELECT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;IF SY-SUBRC NE 0.&lt;/P&gt;&lt;P&gt;W_FLAG = 1.&lt;/P&gt;&lt;P&gt;MESSAGE S401(M8).&lt;/P&gt;&lt;P&gt;ENDIF. " IF SY-SUBRC NE 0&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM. " SELECT_PO&lt;/P&gt;&lt;P&gt;&amp;amp;----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&amp;amp; Form SELECT_OBJ_ID&lt;/P&gt;&lt;P&gt;&amp;amp;----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Subroutine to select Object ID &lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;There are no interface parameters to be passed to this subroutine. &lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------------" /&gt;&lt;P&gt;FORM SELECT_OBJ_ID .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;IF NOT T_EBELN IS INITIAL. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECT OBJECTCLAS " Object Class&lt;/P&gt;&lt;P&gt;OBJECTID " Object value&lt;/P&gt;&lt;P&gt;CHANGENR " Document change number&lt;/P&gt;&lt;P&gt;USERNAME " User name&lt;/P&gt;&lt;P&gt;UDATE " Creation date&lt;/P&gt;&lt;P&gt;FROM CDHDR&lt;/P&gt;&lt;P&gt;INTO TABLE T_CDHDR&lt;/P&gt;&lt;P&gt;FOR ALL ENTRIES IN T_EBELN&lt;/P&gt;&lt;P&gt;WHERE OBJECTID EQ T_EBELN-EBELN&lt;/P&gt;&lt;P&gt;AND UDATE IN S_UDATE&lt;/P&gt;&lt;P&gt;AND TCODE IN ('ME21N','ME22N','ME23N').&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDSELECT. &lt;/P&gt;&lt;P&gt;IF SY-SUBRC NE 0.&lt;/P&gt;&lt;P&gt;W_FLAG = 1.&lt;/P&gt;&lt;P&gt;MESSAGE S833(M8) WITH 'Header Not Found'(031).&lt;/P&gt;&lt;P&gt;ENDIF. " IF SY-SUBRC NE 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDIF. " IF NOT T_EBELN IS INITIAL &lt;/P&gt;&lt;P&gt;ENDFORM. " SELECT_OBJ_ID&lt;/P&gt;&lt;P&gt;&amp;amp;----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&amp;amp; Form SELECT_CHANGED_VALUE&lt;/P&gt;&lt;P&gt;&amp;amp;----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Subroutine to select Changed Values &lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;There are no interface parameters to be passed to this subroutine. &lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------------" /&gt;&lt;P&gt;FORM SELECT_CHANGED_VALUE .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;IF NOT T_CDHDR IS INITIAL. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECT OBJECTCLAS " Object class&lt;/P&gt;&lt;P&gt;OBJECTID " Object value&lt;/P&gt;&lt;P&gt;CHANGENR " Document change number&lt;/P&gt;&lt;P&gt;TABNAME " Table Name&lt;/P&gt;&lt;P&gt;FNAME " Field Name&lt;/P&gt;&lt;P&gt;VALUE_NEW " New contents of changed field&lt;/P&gt;&lt;P&gt;VALUE_OLD " Old contents of changed field&lt;/P&gt;&lt;P&gt;FROM CDPOS&lt;/P&gt;&lt;P&gt;PACKAGE SIZE 10000&lt;/P&gt;&lt;P&gt;APPENDING TABLE T_CDPOS&lt;/P&gt;&lt;P&gt;FOR ALL ENTRIES IN T_CDHDR&lt;/P&gt;&lt;P&gt;WHERE OBJECTCLAS EQ T_CDHDR-OBJECTCLAS&lt;/P&gt;&lt;P&gt;AND OBJECTID EQ T_CDHDR-OBJECTID&lt;/P&gt;&lt;P&gt;AND CHANGENR EQ T_CDHDR-CHANGENR.&lt;/P&gt;&lt;P&gt;ENDSELECT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;IF SY-SUBRC NE 0.&lt;/P&gt;&lt;P&gt;W_FLAG = 1.&lt;/P&gt;&lt;P&gt;MESSAGE S833(M8) WITH 'Item Not Found'(032).&lt;/P&gt;&lt;P&gt;ENDIF. " IF SY-SUBRC NE 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDIF. " IF NOT T_CDHDR IS INITIAL &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;T_CDPOS_TEMP] = T_CDPOS[.&lt;/P&gt;&lt;P&gt;ENDFORM. " SELECT_CHANGED_VALUE&lt;/P&gt;&lt;P&gt;&amp;amp;----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&amp;amp; Form SELECT_PUR_DOC&lt;/P&gt;&lt;P&gt;&amp;amp;----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Subroutine to select Purchase Order Details &lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;There are no interface parameters to be passed to this subroutine. &lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------------" /&gt;&lt;P&gt;FORM SELECT_PUR_DOC .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;IF NOT T_CDPOS IS INITIAL. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SORT T_EBELN BY EBELN.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;LOOP AT T_CDPOS INTO FS_CDPOS.&lt;/P&gt;&lt;P&gt;READ TABLE T_EBELN INTO FS_EBELN WITH KEY EBELN =&lt;/P&gt;&lt;P&gt;FS_CDPOS-OBJECTID BINARY SEARCH.&lt;/P&gt;&lt;P&gt;IF SY-SUBRC NE 0.&lt;/P&gt;&lt;P&gt;DELETE TABLE T_EBELN FROM FS_EBELN.&lt;/P&gt;&lt;P&gt;ENDIF. " IF SY-SUBRC NE 0.&lt;/P&gt;&lt;P&gt;ENDLOOP. " LOOP AT T_CDPOS...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;LOOP AT T_EBELN INTO FS_EBELN.&lt;/P&gt;&lt;P&gt;MOVE FS_EBELN-EBELN TO FS_EKKO-EBELN.&lt;/P&gt;&lt;P&gt;MOVE FS_EBELN-ERNAM TO FS_EKKO-ERNAM.&lt;/P&gt;&lt;P&gt;MOVE FS_EBELN-LIFNR TO FS_EKKO-LIFNR.&lt;/P&gt;&lt;P&gt;MOVE FS_EBELN-EKGRP TO FS_EKKO-EKGRP.&lt;/P&gt;&lt;P&gt;MOVE FS_EBELN-BEDAT TO FS_EKKO-BEDAT.&lt;/P&gt;&lt;P&gt;APPEND FS_EKKO TO T_EKKO.&lt;/P&gt;&lt;P&gt;ENDLOOP. " LOOP AT T_EBELN...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;T_EKKO_TEMP] = T_EKKO[.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDIF. " IF NOT T_CDPOS IS INITIAL &lt;/P&gt;&lt;P&gt;ENDFORM. " SELECT_PUR_DOC&lt;/P&gt;&lt;P&gt;&amp;amp;----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&amp;amp; Form SELECT_VENDOR&lt;/P&gt;&lt;P&gt;&amp;amp;----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Subroutine to select Vendor details &lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;There are no interface parameters to be passed to this subroutine. &lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------------" /&gt;&lt;P&gt;FORM SELECT_VENDOR .&lt;/P&gt;&lt;P&gt;IF NOT T_EKKO IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SORT T_EKKO_TEMP BY LIFNR.&lt;/P&gt;&lt;P&gt;DELETE ADJACENT DUPLICATES FROM T_EKKO_TEMP COMPARING LIFNR.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECT LIFNR " Account Number of Vendor or&lt;/P&gt;&lt;P&gt;" Creditor&lt;/P&gt;&lt;P&gt;NAME1 " Name 1&lt;/P&gt;&lt;P&gt;FROM LFA1&lt;/P&gt;&lt;P&gt;INTO TABLE T_LFA1&lt;/P&gt;&lt;P&gt;FOR ALL ENTRIES IN T_EKKO_TEMP&lt;/P&gt;&lt;P&gt;WHERE LIFNR EQ T_EKKO_TEMP-LIFNR.&lt;/P&gt;&lt;P&gt;IF SY-SUBRC NE 0.&lt;/P&gt;&lt;P&gt;MESSAGE S002(M8) WITH 'Master Details'(033).&lt;/P&gt;&lt;P&gt;ENDIF. " IF SY-SUBRC NE 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDIF. " IF NOT T_EKKO IS INITIAL&lt;/P&gt;&lt;P&gt;ENDFORM. " SELECT_VENDOR&lt;/P&gt;&lt;P&gt;&amp;amp;----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&amp;amp; Form DESCRIPTION&lt;/P&gt;&lt;P&gt;&amp;amp;----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Subroutine to get the description &lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;There are no interface parameters to be passed to this subroutine. &lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------------" /&gt;&lt;P&gt;FORM DESCRIPTION .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;IF NOT T_CDPOS IS INITIAL. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SORT T_CDPOS_TEMP BY TABNAME FNAME.&lt;/P&gt;&lt;P&gt;DELETE ADJACENT DUPLICATES FROM T_CDPOS_TEMP COMPARING TABNAME FNAME&lt;/P&gt;&lt;P&gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECT TABNAME " Table Name&lt;/P&gt;&lt;P&gt;FIELDNAME " Field Name&lt;/P&gt;&lt;P&gt;ROLLNAME " Data element&lt;/P&gt;&lt;P&gt;FROM DD03L&lt;/P&gt;&lt;P&gt;INTO TABLE T_DATAELE&lt;/P&gt;&lt;P&gt;FOR ALL ENTRIES IN T_CDPOS_TEMP&lt;/P&gt;&lt;P&gt;WHERE TABNAME EQ T_CDPOS_TEMP-TABNAME&lt;/P&gt;&lt;P&gt;AND FIELDNAME EQ T_CDPOS_TEMP-FNAME.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;IF NOT T_DATAELE IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;T_DATAELE_TEMP] = T_DATAELE[.&lt;/P&gt;&lt;P&gt;SORT T_DATAELE_TEMP BY ROLLNAME.&lt;/P&gt;&lt;P&gt;DELETE ADJACENT DUPLICATES FROM T_DATAELE_TEMP COMPARING ROLLNAME.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECT ROLLNAME " Data element&lt;/P&gt;&lt;P&gt;DDTEXT " Short Text Describing R/3&lt;/P&gt;&lt;P&gt;" Repository Objects&lt;/P&gt;&lt;P&gt;FROM DD04T&lt;/P&gt;&lt;P&gt;INTO TABLE T_TEXT&lt;/P&gt;&lt;P&gt;FOR ALL ENTRIES IN T_DATAELE_TEMP&lt;/P&gt;&lt;P&gt;WHERE ROLLNAME EQ T_DATAELE_TEMP-ROLLNAME&lt;/P&gt;&lt;P&gt;AND DDLANGUAGE EQ SY-LANGU.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;IF SY-SUBRC NE 0.&lt;/P&gt;&lt;P&gt;EXIT.&lt;/P&gt;&lt;P&gt;ENDIF. " IF SY-SUBRC NE 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDIF. " IF NOT T_DATAELE IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDIF. " IF NOT T_CDPOS IS INITIAL. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM. " DESCRIPTION&lt;/P&gt;&lt;P&gt;&amp;amp;----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&amp;amp; Form FILL_OUTTAB&lt;/P&gt;&lt;P&gt;&amp;amp;----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Subroutine to populate the Outtab &lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;There are no interface parameters to be passed to this subroutine. &lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------------" /&gt;&lt;P&gt;FORM FILL_OUTTAB .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SORT T_CDHDR BY OBJECTCLAS OBJECTID CHANGENR.&lt;/P&gt;&lt;P&gt;SORT T_EKKO BY EBELN.&lt;/P&gt;&lt;P&gt;SORT T_LFA1 BY LIFNR.&lt;/P&gt;&lt;P&gt;SORT T_DATAELE BY TABNAME FIELDNAME.&lt;/P&gt;&lt;P&gt;SORT T_TEXT BY ROLLNAME.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;LOOP AT T_CDPOS INTO FS_CDPOS.&lt;/P&gt;&lt;P&gt;READ TABLE T_CDHDR INTO FS_CDHDR WITH KEY&lt;/P&gt;&lt;P&gt;OBJECTCLAS = FS_CDPOS-OBJECTCLAS&lt;/P&gt;&lt;P&gt;OBJECTID = FS_CDPOS-OBJECTID&lt;/P&gt;&lt;P&gt;CHANGENR = FS_CDPOS-CHANGENR&lt;/P&gt;&lt;P&gt;BINARY SEARCH.&lt;/P&gt;&lt;P&gt;IF SY-SUBRC EQ 0.&lt;/P&gt;&lt;P&gt;MOVE FS_CDHDR-USERNAME TO FS_OUTTAB-USERNAME.&lt;/P&gt;&lt;P&gt;MOVE FS_CDHDR-UDATE TO FS_OUTTAB-UDATE.&lt;/P&gt;&lt;P&gt;READ TABLE T_EKKO INTO FS_EKKO WITH KEY&lt;/P&gt;&lt;P&gt;EBELN = FS_CDHDR-OBJECTID&lt;/P&gt;&lt;P&gt;BINARY SEARCH.&lt;/P&gt;&lt;P&gt;IF SY-SUBRC EQ 0.&lt;/P&gt;&lt;P&gt;MOVE FS_EKKO-EBELN TO FS_OUTTAB-EBELN.&lt;/P&gt;&lt;P&gt;MOVE FS_EKKO-ERNAM TO FS_OUTTAB-ERNAM.&lt;/P&gt;&lt;P&gt;MOVE FS_EKKO-LIFNR TO FS_OUTTAB-LIFNR.&lt;/P&gt;&lt;P&gt;MOVE FS_EKKO-EKGRP TO FS_OUTTAB-EKGRP.&lt;/P&gt;&lt;P&gt;MOVE FS_EKKO-BEDAT TO FS_OUTTAB-BEDAT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;READ TABLE T_LFA1 INTO FS_LFA1 WITH KEY&lt;/P&gt;&lt;P&gt;LIFNR = FS_EKKO-LIFNR&lt;/P&gt;&lt;P&gt;BINARY SEARCH.&lt;/P&gt;&lt;P&gt;IF SY-SUBRC EQ 0.&lt;/P&gt;&lt;P&gt;MOVE FS_LFA1-NAME1 TO FS_OUTTAB-NAME1.&lt;/P&gt;&lt;P&gt;ENDIF. " IF SY-SUBRC EQ 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDIF. " IF SY-SUBRC EQ 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDIF. " IF SY-SUBRC EQ 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MOVE FS_CDPOS-VALUE_NEW TO FS_OUTTAB-VALUE_NEW.&lt;/P&gt;&lt;P&gt;MOVE FS_CDPOS-VALUE_OLD TO FS_OUTTAB-VALUE_OLD.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;READ TABLE T_DATAELE INTO FS_DATAELE WITH KEY&lt;/P&gt;&lt;P&gt;TABNAME = FS_CDPOS-TABNAME&lt;/P&gt;&lt;P&gt;FIELDNAME = FS_CDPOS-FNAME&lt;/P&gt;&lt;P&gt;BINARY SEARCH.&lt;/P&gt;&lt;P&gt;IF SY-SUBRC EQ 0.&lt;/P&gt;&lt;P&gt;READ TABLE T_TEXT INTO FS_TEXT WITH KEY&lt;/P&gt;&lt;P&gt;ROLLNAME = FS_DATAELE-ROLLNAME&lt;/P&gt;&lt;P&gt;BINARY SEARCH.&lt;/P&gt;&lt;P&gt;IF SY-SUBRC EQ 0.&lt;/P&gt;&lt;P&gt;MOVE FS_TEXT-DDTEXT TO FS_OUTTAB-DDTEXT.&lt;/P&gt;&lt;P&gt;ENDIF. " IF SY-SUBRC EQ 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDIF. " IF SY-SUBRC EQ 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;APPEND FS_OUTTAB TO T_OUTTAB.&lt;/P&gt;&lt;P&gt;CLEAR FS_OUTTAB.&lt;/P&gt;&lt;P&gt;ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM. " FILL_OUTTAB&lt;/P&gt;&lt;P&gt;&amp;amp;----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&amp;amp; Form GET_CELL_INFO&lt;/P&gt;&lt;P&gt;&amp;amp;----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Subroutine to get the Cell Information &lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;--&amp;gt; W_VALUE Holds the value of Hotspot clicked &lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------------" /&gt;&lt;P&gt;FORM GET_CELL_INFO .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CALL METHOD W_GRID-&amp;gt;GET_CURRENT_CELL&lt;/P&gt;&lt;P&gt;IMPORTING&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;E_ROW = &lt;/P&gt;&lt;P&gt;E_VALUE = W_VALUE&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;E_COL = &lt;/P&gt;&lt;P&gt;ES_ROW_ID = &lt;/P&gt;&lt;P&gt;ES_COL_ID = &lt;/P&gt;&lt;P&gt;ES_ROW_NO = &lt;/P&gt;&lt;P&gt;.&lt;/P&gt;&lt;P&gt;ENDFORM. " GET_CELL_INFO&lt;/P&gt;&lt;P&gt;&amp;amp;----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&amp;amp; Form VALIDATE_PD_NUM&lt;/P&gt;&lt;P&gt;&amp;amp;----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Subroutine to validate Purchase Document Number &lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;There are no interface parameters to be passed to this subroutine. &lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------------" /&gt;&lt;P&gt;FORM VALIDATE_PD_NUM .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;IF NOT S_EBELN[] IS INITIAL.&lt;/P&gt;&lt;P&gt;SELECT EBELN " Purchase Document Number&lt;/P&gt;&lt;P&gt;FROM EKKO&lt;/P&gt;&lt;P&gt;INTO W_EBELN&lt;/P&gt;&lt;P&gt;UP TO 1 ROWS&lt;/P&gt;&lt;P&gt;WHERE EBELN IN S_EBELN.&lt;/P&gt;&lt;P&gt;ENDSELECT.&lt;/P&gt;&lt;P&gt;IF SY-SUBRC NE 0.&lt;/P&gt;&lt;P&gt;CLEAR SSCRFIELDS-UCOMM.&lt;/P&gt;&lt;P&gt;MESSAGE E717(M8).&lt;/P&gt;&lt;P&gt;ENDIF. " IF SY-SUBRC NE 0&lt;/P&gt;&lt;P&gt;ENDIF. " IF NOT S_EBELN[]...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM. " VALIDATE_PD_NUM&lt;/P&gt;&lt;P&gt;&amp;amp;----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&amp;amp; Form VALIDATE_VEN_NUM&lt;/P&gt;&lt;P&gt;&amp;amp;----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Subroutine to validate Vendor Number &lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;There are no interface parameters to be passed to this subroutine. &lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------------" /&gt;&lt;P&gt;FORM VALIDATE_VEN_NUM .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;IF NOT S_LIFNR[] IS INITIAL.&lt;/P&gt;&lt;P&gt;SELECT LIFNR " Vendor Number&lt;/P&gt;&lt;P&gt;FROM LFA1&lt;/P&gt;&lt;P&gt;INTO W_LIFNR&lt;/P&gt;&lt;P&gt;UP TO 1 ROWS&lt;/P&gt;&lt;P&gt;WHERE LIFNR IN S_LIFNR.&lt;/P&gt;&lt;P&gt;ENDSELECT.&lt;/P&gt;&lt;P&gt;IF SY-SUBRC NE 0.&lt;/P&gt;&lt;P&gt;CLEAR SSCRFIELDS-UCOMM.&lt;/P&gt;&lt;P&gt;MESSAGE E002(M8) WITH W_SPACE.&lt;/P&gt;&lt;P&gt;ENDIF. " IF SY-SUBRC NE 0&lt;/P&gt;&lt;P&gt;ENDIF. " IF NOT S_LIFNR[]...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM. " VALIDATE_VEN_NUM&lt;/P&gt;&lt;P&gt;&amp;amp;----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&amp;amp; Form VALIDATE_PUR_GRP&lt;/P&gt;&lt;P&gt;&amp;amp;----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Subroutine to validate the Purchase Group &lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;There are no interface parameters to be passed to this subroutine. &lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------------" /&gt;&lt;P&gt;FORM VALIDATE_PUR_GRP .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;IF NOT S_EKGRP[] IS INITIAL.&lt;/P&gt;&lt;P&gt;SELECT EKGRP " Purchase Group&lt;/P&gt;&lt;P&gt;FROM T024&lt;/P&gt;&lt;P&gt;INTO W_EKGRP&lt;/P&gt;&lt;P&gt;UP TO 1 ROWS&lt;/P&gt;&lt;P&gt;WHERE EKGRP IN S_EKGRP.&lt;/P&gt;&lt;P&gt;ENDSELECT.&lt;/P&gt;&lt;P&gt;IF SY-SUBRC NE 0.&lt;/P&gt;&lt;P&gt;CLEAR SSCRFIELDS-UCOMM.&lt;/P&gt;&lt;P&gt;MESSAGE E622(M8) WITH W_SPACE.&lt;/P&gt;&lt;P&gt;ENDIF. " IF SY-SUBRC NE 0&lt;/P&gt;&lt;P&gt;ENDIF. " IF NOT S_EKFRP[]...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM. " VALIDATE_PUR_GRP&lt;/P&gt;&lt;P&gt;&amp;amp;----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&amp;amp; Form FILL_VARIANT&lt;/P&gt;&lt;P&gt;&amp;amp;----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Subroutine to fill the Variant Structure &lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;There are no interface parameters to be passed to this subroutine &lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------------" /&gt;&lt;P&gt;FORM FILL_VARIANT .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Filling the Variant structure &lt;/P&gt;&lt;P&gt;W_VARIANT-REPORT = SY-REPID.&lt;/P&gt;&lt;P&gt;W_VARIANT-USERNAME = SY-UNAME.&lt;/P&gt;&lt;P&gt;ENDFORM. " FILL_VARIANT&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="-------------------------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;REPORT YMS_HIERSEQLISTDISPLAY .&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Program with FM REUSE_ALV_HIERSEQ_LIST_DISPLAY * &lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Author : Michel PIOUD * &lt;/P&gt;&lt;P&gt;Email : mpioudyahoo.fr HomePage : &lt;A href="http://www.geocities.com/mpioud" target="test_blank"&gt;http://www.geocities.com/mpioud&lt;/A&gt; * &lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------" /&gt;&lt;P&gt;TYPE-POOLS: slis. " ALV Global types&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------" /&gt;&lt;P&gt;CONSTANTS :&lt;/P&gt;&lt;P&gt;c_x VALUE 'X',&lt;/P&gt;&lt;P&gt;c_gt_vbap TYPE SLIS_TABNAME VALUE 'GT_VBAP',&lt;/P&gt;&lt;P&gt;c_gt_vbak TYPE SLIS_TABNAME VALUE 'GT_VBAK'.&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------" /&gt;&lt;P&gt;SELECTION-SCREEN :&lt;/P&gt;&lt;P&gt;SKIP, BEGIN OF LINE,COMMENT 5(27) v_1 FOR FIELD p_max. "#EC NEEDED&lt;/P&gt;&lt;P&gt;PARAMETERS p_max(02) TYPE n DEFAULT '10' OBLIGATORY.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN END OF LINE.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN :&lt;/P&gt;&lt;P&gt;SKIP, BEGIN OF LINE,COMMENT 5(27) v_2 FOR FIELD p_expand. "#EC NEEDED&lt;/P&gt;&lt;P&gt;PARAMETERS p_expand AS CHECKBOX DEFAULT c_x.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN END OF LINE.&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------" /&gt;&lt;P&gt;TYPES :&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1st Table &lt;/P&gt;&lt;P&gt;BEGIN OF ty_vbak,&lt;/P&gt;&lt;P&gt;vbeln TYPE vbak-vbeln, " Sales document&lt;/P&gt;&lt;P&gt;kunnr TYPE vbak-kunnr, " Sold-to party&lt;/P&gt;&lt;P&gt;netwr TYPE vbak-netwr, " Net Value of the Sales Order&lt;/P&gt;&lt;P&gt;erdat TYPE vbak-erdat, " Creation date&lt;/P&gt;&lt;P&gt;waerk TYPE vbak-waerk, " SD document currency&lt;/P&gt;&lt;P&gt;expand TYPE xfeld,&lt;/P&gt;&lt;P&gt;END OF ty_vbak,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;2nd Table &lt;/P&gt;&lt;P&gt;BEGIN OF ty_vbap,&lt;/P&gt;&lt;P&gt;vbeln TYPE vbap-vbeln, " Sales document&lt;/P&gt;&lt;P&gt;posnr TYPE vbap-posnr, " Sales document&lt;/P&gt;&lt;P&gt;matnr TYPE vbap-matnr, " Material number&lt;/P&gt;&lt;P&gt;netwr TYPE vbap-netwr, " Net Value of the Sales Order&lt;/P&gt;&lt;P&gt;waerk TYPE vbap-waerk, " SD document currency&lt;/P&gt;&lt;P&gt;END OF ty_vbap.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------" /&gt;&lt;P&gt;DATA :&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1st Table &lt;/P&gt;&lt;P&gt;gt_vbak TYPE TABLE OF ty_vbak,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;2nd Table &lt;/P&gt;&lt;P&gt;gt_vbap TYPE TABLE OF ty_vbap.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------" /&gt;&lt;P&gt;INITIALIZATION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;v_1 = 'Maximum of records to read'.&lt;/P&gt;&lt;P&gt;v_2 = 'With ''EXPAND'' field'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------" /&gt;&lt;P&gt;START-OF-SELECTION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Read Sales Document: Header Data &lt;/P&gt;&lt;P&gt;SELECT vbeln kunnr netwr waerk erdat&lt;/P&gt;&lt;P&gt;FROM vbak&lt;/P&gt;&lt;P&gt;UP TO p_max ROWS&lt;/P&gt;&lt;P&gt;INTO CORRESPONDING FIELDS OF TABLE gt_vbak.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;IF NOT gt_vbak[] IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Read Sales Document: Item Data &lt;/P&gt;&lt;P&gt;SELECT vbeln posnr matnr netwr waerk&lt;/P&gt;&lt;P&gt;FROM vbap&lt;/P&gt;&lt;P&gt;INTO CORRESPONDING FIELDS OF TABLE gt_vbap&lt;/P&gt;&lt;P&gt;FOR ALL ENTRIES IN gt_vbak&lt;/P&gt;&lt;P&gt;WHERE vbeln = gt_vbak-vbeln.&lt;/P&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;PERFORM f_display.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Form F_DISPLAY &lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------" /&gt;&lt;P&gt;FORM f_display.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Macro definition &lt;/P&gt;&lt;P&gt;DEFINE m_fieldcat.&lt;/P&gt;&lt;P&gt;ls_fieldcat-tabname = &amp;amp;1.&lt;/P&gt;&lt;P&gt;ls_fieldcat-fieldname = &amp;amp;2.&lt;/P&gt;&lt;P&gt;ls_fieldcat-ref_tabname = &amp;amp;3.&lt;/P&gt;&lt;P&gt;ls_fieldcat-cfieldname = &amp;amp;4. " Field with currency unit&lt;/P&gt;&lt;P&gt;append ls_fieldcat to lt_fieldcat.&lt;/P&gt;&lt;P&gt;END-OF-DEFINITION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DEFINE m_sort.&lt;/P&gt;&lt;P&gt;ls_sort-tabname = &amp;amp;1.&lt;/P&gt;&lt;P&gt;ls_sort-fieldname = &amp;amp;2.&lt;/P&gt;&lt;P&gt;ls_sort-up = c_x.&lt;/P&gt;&lt;P&gt;append ls_sort to lt_sort.&lt;/P&gt;&lt;P&gt;END-OF-DEFINITION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA:&lt;/P&gt;&lt;P&gt;ls_layout TYPE slis_layout_alv,&lt;/P&gt;&lt;P&gt;ls_keyinfo TYPE slis_keyinfo_alv,&lt;/P&gt;&lt;P&gt;ls_sort TYPE slis_sortinfo_alv,&lt;/P&gt;&lt;P&gt;lt_sort TYPE slis_t_sortinfo_alv," Sort table&lt;/P&gt;&lt;P&gt;ls_fieldcat TYPE slis_fieldcat_alv,&lt;/P&gt;&lt;P&gt;lt_fieldcat TYPE slis_t_fieldcat_alv." Field catalog&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ls_layout-group_change_edit = c_x.&lt;/P&gt;&lt;P&gt;ls_layout-colwidth_optimize = c_x.&lt;/P&gt;&lt;P&gt;ls_layout-zebra = c_x.&lt;/P&gt;&lt;P&gt;ls_layout-detail_popup = c_x.&lt;/P&gt;&lt;P&gt;ls_layout-get_selinfos = c_x.&lt;/P&gt;&lt;P&gt;IF p_expand = c_x.&lt;/P&gt;&lt;P&gt;ls_layout-expand_fieldname = 'EXPAND'.&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;Build field catalog and sort table &lt;/P&gt;&lt;P&gt;m_fieldcat c_gt_vbak 'VBELN' 'VBAK' ''.&lt;/P&gt;&lt;P&gt;m_fieldcat c_gt_vbak 'KUNNR' 'VBAK' ''.&lt;/P&gt;&lt;P&gt;m_fieldcat c_gt_vbak 'NETWR' 'VBAK' 'WAERK'.&lt;/P&gt;&lt;P&gt;m_fieldcat c_gt_vbak 'WAERK' 'VBAK' ''.&lt;/P&gt;&lt;P&gt;m_fieldcat c_gt_vbak 'ERDAT' 'VBAK' ''.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;m_fieldcat c_gt_vbap 'POSNR' 'VBAP' ''.&lt;/P&gt;&lt;P&gt;m_fieldcat c_gt_vbap 'MATNR' 'VBAP' ''.&lt;/P&gt;&lt;P&gt;m_fieldcat c_gt_vbap 'NETWR' 'VBAP' 'WAERK'.&lt;/P&gt;&lt;P&gt;m_fieldcat c_gt_vbap 'WAERK' 'VBAP' ''.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;m_sort c_gt_vbak 'KUNNR'.&lt;/P&gt;&lt;P&gt;m_sort c_gt_vbap 'NETWR'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ls_keyinfo-header01 = 'VBELN'.&lt;/P&gt;&lt;P&gt;ls_keyinfo-item01 = 'VBELN'.&lt;/P&gt;&lt;P&gt;ls_keyinfo-item02 = 'POSNR'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Dipslay Hierarchical list &lt;/P&gt;&lt;P&gt;CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'&lt;/P&gt;&lt;P&gt;EXPORTING&lt;/P&gt;&lt;P&gt;i_callback_program = sy-cprog&lt;/P&gt;&lt;P&gt;i_callback_user_command = 'USER_COMMAND'&lt;/P&gt;&lt;P&gt;is_layout = ls_layout&lt;/P&gt;&lt;P&gt;it_fieldcat = lt_fieldcat&lt;/P&gt;&lt;P&gt;it_sort = lt_sort&lt;/P&gt;&lt;P&gt;i_tabname_header = c_gt_vbak&lt;/P&gt;&lt;P&gt;i_tabname_item = c_gt_vbap&lt;/P&gt;&lt;P&gt;is_keyinfo = ls_keyinfo&lt;/P&gt;&lt;P&gt;TABLES&lt;/P&gt;&lt;P&gt;t_outtab_header = gt_vbak&lt;/P&gt;&lt;P&gt;t_outtab_item = gt_vbap&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;IF sy-subrc 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;&lt;/P&gt;&lt;P&gt;ENDFORM. " F_LIST_DISPLAY&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Form USER_COMMAND * &lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------" /&gt;&lt;P&gt;FORM user_command USING i_ucomm TYPE sy-ucomm&lt;/P&gt;&lt;P&gt;is_selfield TYPE slis_selfield. "#EC CALLED&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA ls_vbak TYPE ty_vbak.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CASE i_ucomm.&lt;/P&gt;&lt;P&gt;WHEN '&amp;amp;IC1'. " Pick&lt;/P&gt;&lt;P&gt;CASE is_selfield-tabname.&lt;/P&gt;&lt;P&gt;WHEN c_gt_vbap.&lt;/P&gt;&lt;P&gt;WHEN c_gt_vbak.&lt;/P&gt;&lt;P&gt;READ TABLE gt_vbak INDEX is_selfield-tabindex INTO ls_vbak.&lt;/P&gt;&lt;P&gt;IF sy-subrc EQ 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Sales order number &lt;/P&gt;&lt;P&gt;SET PARAMETER ID 'AUN' FIELD ls_vbak-vbeln.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Display Sales Order &lt;/P&gt;&lt;P&gt;CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.&lt;/P&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;ENDCASE.&lt;/P&gt;&lt;P&gt;ENDCASE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM. " USER_COMMAND&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Kindly Reward Points If You Found The Reply Helpful&lt;/STRONG&gt;,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Cheers,&lt;/P&gt;&lt;P&gt;Chaitanya.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 02 Apr 2008 07:27:51 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/how-to-implement-classes-with-alv-s/m-p/3586105#M863458</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-04-02T07:27:51Z</dc:date>
    </item>
  </channel>
</rss>

