<?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: ALV - Sort - Subtotal in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/alv-sort-subtotal/m-p/2521706#M570850</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;REPORT ZALV.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPE-POOLS: SLIS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: G_REPID LIKE SY-REPID,&lt;/P&gt;&lt;P&gt;GS_PRINT            TYPE SLIS_PRINT_ALV,&lt;/P&gt;&lt;P&gt;GT_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER,&lt;/P&gt;&lt;P&gt;GT_EVENTS           TYPE SLIS_T_EVENT,&lt;/P&gt;&lt;P&gt;GT_SORT             TYPE SLIS_T_SORTINFO_ALV,&lt;/P&gt;&lt;P&gt;GS_LAYOUT           TYPE SLIS_LAYOUT_ALV,&lt;/P&gt;&lt;P&gt;GT_FIELDCAT         TYPE SLIS_T_FIELDCAT_ALV,&lt;/P&gt;&lt;P&gt;FIELDCAT_LN LIKE LINE OF GT_FIELDCAT,&lt;/P&gt;&lt;P&gt;COL_POS TYPE I.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF ITAB,&lt;/P&gt;&lt;P&gt;  FIELD1(5) TYPE C,&lt;/P&gt;&lt;P&gt;  FIELD2(5) TYPE C,&lt;/P&gt;&lt;P&gt;  FIELD3(5) TYPE P DECIMALS 2,&lt;/P&gt;&lt;P&gt;END OF ITAB.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF ITAB1 OCCURS 0.&lt;/P&gt;&lt;P&gt;  INCLUDE STRUCTURE ITAB.&lt;/P&gt;&lt;P&gt;DATA: END OF ITAB1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF ITAB_FIELDCAT OCCURS 0.&lt;/P&gt;&lt;P&gt;  INCLUDE STRUCTURE ITAB.&lt;/P&gt;&lt;P&gt;DATA: END OF ITAB_FIELDCAT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Print Parameters&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;PARAMETERS:&lt;/P&gt;&lt;P&gt;            P_PRINT  AS CHECKBOX DEFAULT ' ', "PRINT IMMEDIATE&lt;/P&gt;&lt;P&gt;            P_NOSINF AS CHECKBOX DEFAULT 'X', "NO SELECTION INFO&lt;/P&gt;&lt;P&gt;            P_NOCOVE AS CHECKBOX DEFAULT ' ', "NO COVER PAGE&lt;/P&gt;&lt;P&gt;            P_NONEWP AS CHECKBOX DEFAULT ' ', "NO NEW PAGE&lt;/P&gt;&lt;P&gt;            P_NOLINF AS CHECKBOX DEFAULT 'X', "NO PRINT LIST INFO&lt;/P&gt;&lt;P&gt;            P_RESERV TYPE I.                  "NO OF FOOTER LINE&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;INITIALIZATION.&lt;/P&gt;&lt;P&gt;G_REPID = SY-REPID.&lt;/P&gt;&lt;P&gt;PERFORM PRINT_BUILD    USING GS_PRINT.      "Print PARAMETERS&lt;/P&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;TEST DATA&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;MOVE 'TEST1' TO ITAB1-FIELD1.&lt;/P&gt;&lt;P&gt;MOVE 'TEST1' TO ITAB1-FIELD2.&lt;/P&gt;&lt;P&gt;MOVE '10.00' TO ITAB1-FIELD3.&lt;/P&gt;&lt;P&gt;APPEND ITAB1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MOVE 'TEST2' TO ITAB1-FIELD1.&lt;/P&gt;&lt;P&gt;MOVE 'TEST2' TO ITAB1-FIELD2.&lt;/P&gt;&lt;P&gt;MOVE '20.00' TO ITAB1-FIELD3.&lt;/P&gt;&lt;P&gt;APPEND ITAB1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DO 50 TIMES.&lt;/P&gt;&lt;P&gt;  APPEND ITAB1.&lt;/P&gt;&lt;P&gt;ENDDO.&lt;/P&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;PERFORM BUILD.&lt;/P&gt;&lt;P&gt;PERFORM EVENTTAB_BUILD CHANGING GT_EVENTS.&lt;/P&gt;&lt;P&gt;PERFORM COMMENT_BUILD  CHANGING GT_LIST_TOP_OF_PAGE.&lt;/P&gt;&lt;P&gt;PERFORM CALL_ALV.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM BUILD.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;DATA FIELD CATALOG&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Explain Field Description to ALV&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA: FIELDCAT_IN TYPE SLIS_FIELDCAT_ALV.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CLEAR FIELDCAT_IN.&lt;/P&gt;&lt;P&gt;FIELDCAT_LN-FIELDNAME = 'FIELD1'.&lt;/P&gt;&lt;P&gt;FIELDCAT_LN-TABNAME   = 'ITAB1'.&lt;/P&gt;&lt;P&gt;*FIELDCAT_LN-NO_OUT    = 'X'.  "FIELD NOT DISPLAY, CHOOSE FROM LAYOUT&lt;/P&gt;&lt;P&gt;FIELDCAT_LN-KEY       = ' '.   "SUBTOTAL KEY&lt;/P&gt;&lt;P&gt;FIELDCAT_LN-NO_OUT    = ' '.&lt;/P&gt;&lt;P&gt;FIELDCAT_LN-SELTEXT_L = 'HEAD1'.&lt;/P&gt;&lt;P&gt;APPEND FIELDCAT_LN TO GT_FIELDCAT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CLEAR FIELDCAT_IN.&lt;/P&gt;&lt;P&gt;FIELDCAT_LN-FIELDNAME = 'FIELD2'.&lt;/P&gt;&lt;P&gt;FIELDCAT_LN-TABNAME   = 'ITAB1'.&lt;/P&gt;&lt;P&gt;FIELDCAT_LN-NO_OUT    = 'X'.&lt;/P&gt;&lt;P&gt;FIELDCAT_LN-SELTEXT_L = 'HEAD2'.&lt;/P&gt;&lt;P&gt;APPEND FIELDCAT_LN TO GT_FIELDCAT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CLEAR FIELDCAT_IN.&lt;/P&gt;&lt;P&gt;FIELDCAT_LN-FIELDNAME     = 'FIELD3'.&lt;/P&gt;&lt;P&gt;FIELDCAT_LN-TABNAME       = 'ITAB1'.&lt;/P&gt;&lt;P&gt;FIELDCAT_LN-REF_FIELDNAME = 'MENGE'. "&amp;lt;- REF FIELD IN THE DICTIONNARY&lt;/P&gt;&lt;P&gt;FIELDCAT_LN-REF_TABNAME   = 'MSEG'.  "&amp;lt;- REF TABLE IN THE DICTIONNARY&lt;/P&gt;&lt;P&gt;FIELDCAT_LN-NO_OUT        = ' '.&lt;/P&gt;&lt;P&gt;FIELDCAT_LN-DO_SUM        = 'X'.   "SUM UPON DISPLAY&lt;/P&gt;&lt;P&gt;APPEND FIELDCAT_LN TO GT_FIELDCAT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;DATA SORTING AND SUBTOTAL&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA: GS_SORT TYPE SLIS_SORTINFO_ALV.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CLEAR GS_SORT.&lt;/P&gt;&lt;P&gt;GS_SORT-FIELDNAME = 'FIELD1'.&lt;/P&gt;&lt;P&gt;GS_SORT-SPOS      = 1.&lt;/P&gt;&lt;P&gt;GS_SORT-UP        = 'X'.&lt;/P&gt;&lt;P&gt;GS_SORT-SUBTOT    = 'X'.&lt;/P&gt;&lt;P&gt;APPEND GS_SORT TO GT_SORT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CLEAR GS_SORT.&lt;/P&gt;&lt;P&gt;GS_SORT-FIELDNAME = 'FIELD2'.&lt;/P&gt;&lt;P&gt;GS_SORT-SPOS      = 2.&lt;/P&gt;&lt;P&gt;GS_SORT-UP        = 'X'.&lt;/P&gt;&lt;P&gt;*GS_SORT-SUBTOT    = 'X'.&lt;/P&gt;&lt;P&gt;APPEND GS_SORT TO GT_SORT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM CALL_ALV.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;ABAP List Viewer&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;CALL FUNCTION 'REUSE_ALV_LIST_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_INTERFACE_CHECK = ' '&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_BUFFER_ACTIVE = ' '&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;I_CALLBACK_PROGRAM = G_REPID&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;I_CALLBACK_PF_STATUS_SET = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;I_CALLBACK_USER_COMMAND = ' '&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;I_STRUCTURE_NAME = 'ITAB1'&lt;/P&gt;&lt;P&gt;IS_LAYOUT =  GS_LAYOUT&lt;/P&gt;&lt;P&gt;IT_FIELDCAT = GT_FIELDCAT[]&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;IT_EXCLUDING =&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;/UL&gt;&lt;P&gt;  IT_SORT = GT_SORT[]&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;IT_FILTER =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;IS_SEL_HIDE =&lt;/P&gt;&lt;/LI&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;I_SAVE = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;IS_VARIANT =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  IT_EVENTS = GT_EVENTS[]&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;IT_EVENT_EXIT =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  IS_PRINT = GS_PRINT&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;IS_REPREP_ID =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;I_SCREEN_START_COLUMN = 0&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;I_SCREEN_START_LINE = 0&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;I_SCREEN_END_COLUMN = 0&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;I_SCREEN_END_LINE = 0&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;IMPORTING&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;E_EXIT_CAUSED_BY_CALLER =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;ES_EXIT_CAUSED_BY_USER =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;TABLES&lt;/P&gt;&lt;P&gt;T_OUTTAB = ITAB1&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;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;HEADER FORM&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;FORM EVENTTAB_BUILD CHANGING LT_EVENTS TYPE SLIS_T_EVENT.&lt;/P&gt;&lt;P&gt;CONSTANTS:&lt;/P&gt;&lt;P&gt;GC_FORMNAME_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE'.&lt;/P&gt;&lt;P&gt;*GC_FORMNAME_END_OF_PAGE TYPE SLIS_FORMNAME VALUE 'END_OF_PAGE'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: LS_EVENT TYPE SLIS_ALV_EVENT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'REUSE_ALV_EVENTS_GET'&lt;/P&gt;&lt;P&gt;       EXPORTING&lt;/P&gt;&lt;P&gt;            I_LIST_TYPE = 0&lt;/P&gt;&lt;P&gt;       IMPORTING&lt;/P&gt;&lt;P&gt;            ET_EVENTS   = LT_EVENTS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  READ TABLE LT_EVENTS WITH KEY NAME =  SLIS_EV_TOP_OF_PAGE&lt;/P&gt;&lt;P&gt;                           INTO LS_EVENT.&lt;/P&gt;&lt;P&gt;  IF SY-SUBRC = 0.&lt;/P&gt;&lt;P&gt;    MOVE GC_FORMNAME_TOP_OF_PAGE TO LS_EVENT-FORM.&lt;/P&gt;&lt;P&gt;    APPEND LS_EVENT TO LT_EVENTS.&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;define END_OF_PAGE event&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;READ TABLE LT_EVENTS WITH KEY NAME =  SLIS_EV_END_OF_PAGE&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                         INTO LS_EVENT.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;IF SY-SUBRC = 0.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  MOVE GC_FORMNAME_END_OF_PAGE TO LS_EVENT-FORM.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  APPEND LS_EVENT TO LT_EVENTS.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM COMMENT_BUILD CHANGING GT_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER.&lt;/P&gt;&lt;P&gt;  DATA: GS_LINE TYPE SLIS_LISTHEADER.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR GS_LINE.&lt;/P&gt;&lt;P&gt;  GS_LINE-TYP  = 'H'.&lt;/P&gt;&lt;P&gt;  GS_LINE-INFO = 'HEADER 1'.&lt;/P&gt;&lt;P&gt;  APPEND GS_LINE TO GT_TOP_OF_PAGE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR GS_LINE.&lt;/P&gt;&lt;P&gt;  GS_LINE-TYP  = 'S'.&lt;/P&gt;&lt;P&gt;  GS_LINE-KEY  = 'STATUS 1'.&lt;/P&gt;&lt;P&gt;  GS_LINE-INFO = 'INFO 1'.&lt;/P&gt;&lt;P&gt;  APPEND GS_LINE TO GT_TOP_OF_PAGE.&lt;/P&gt;&lt;P&gt;  GS_LINE-KEY  = 'STATUS 2'.&lt;/P&gt;&lt;P&gt;  GS_LINE-INFO = 'INFO 2'.&lt;/P&gt;&lt;P&gt;  APPEND GS_LINE TO GT_TOP_OF_PAGE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;CLEAR GS_LINE.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;GS_LINE-TYP  = 'A'.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;GS_LINE-INFO = 'ACTION'.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;APPEND GS_LINE TO  GT_TOP_OF_PAGE.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM TOP_OF_PAGE.&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'&lt;/P&gt;&lt;P&gt;       EXPORTING&lt;/P&gt;&lt;P&gt;            IT_LIST_COMMENTARY = GT_LIST_TOP_OF_PAGE.&lt;/P&gt;&lt;P&gt;  WRITE: SY-DATUM, 'Page No', SY-PAGNO LEFT-JUSTIFIED.&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM END_OF_PAGE.&lt;/P&gt;&lt;P&gt;  WRITE at (sy-linsz) sy-pagno CENTERED.&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;PRINT SETTINGS&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;FORM PRINT_BUILD USING LS_PRINT TYPE SLIS_PRINT_ALV.&lt;/P&gt;&lt;P&gt;  LS_PRINT-PRINT              = P_PRINT.  "PRINT IMMEDIATE&lt;/P&gt;&lt;P&gt;  LS_PRINT-NO_PRINT_SELINFOS  = P_NOSINF. "NO SELECTION INFO&lt;/P&gt;&lt;P&gt;  LS_PRINT-NO_COVERPAGE       = P_NOCOVE. "NO COVER PAGE&lt;/P&gt;&lt;P&gt;  LS_PRINT-NO_NEW_PAGE        = P_NONEWP.&lt;/P&gt;&lt;P&gt;  LS_PRINT-NO_PRINT_LISTINFOS = P_NOLINF. "NO PRINT LIST INFO&lt;/P&gt;&lt;P&gt;  LS_PRINT-RESERVE_LINES      = P_RESERV.&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*END OF ZALV PROGRAM &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Check this program...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Pavan&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 23 Jul 2007 06:22:12 GMT</pubDate>
    <dc:creator>Former Member</dc:creator>
    <dc:date>2007-07-23T06:22:12Z</dc:date>
    <item>
      <title>ALV - Sort - Subtotal</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/alv-sort-subtotal/m-p/2521705#M570849</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;Can u pls tell me what is the use of subtotal in sort exactly with an example of records..&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I need to work out with this..in ALV.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;will be rewarded.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thankx in adv&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 23 Jul 2007 06:18:20 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/alv-sort-subtotal/m-p/2521705#M570849</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-07-23T06:18:20Z</dc:date>
    </item>
    <item>
      <title>Re: ALV - Sort - Subtotal</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/alv-sort-subtotal/m-p/2521706#M570850</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;REPORT ZALV.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPE-POOLS: SLIS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: G_REPID LIKE SY-REPID,&lt;/P&gt;&lt;P&gt;GS_PRINT            TYPE SLIS_PRINT_ALV,&lt;/P&gt;&lt;P&gt;GT_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER,&lt;/P&gt;&lt;P&gt;GT_EVENTS           TYPE SLIS_T_EVENT,&lt;/P&gt;&lt;P&gt;GT_SORT             TYPE SLIS_T_SORTINFO_ALV,&lt;/P&gt;&lt;P&gt;GS_LAYOUT           TYPE SLIS_LAYOUT_ALV,&lt;/P&gt;&lt;P&gt;GT_FIELDCAT         TYPE SLIS_T_FIELDCAT_ALV,&lt;/P&gt;&lt;P&gt;FIELDCAT_LN LIKE LINE OF GT_FIELDCAT,&lt;/P&gt;&lt;P&gt;COL_POS TYPE I.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF ITAB,&lt;/P&gt;&lt;P&gt;  FIELD1(5) TYPE C,&lt;/P&gt;&lt;P&gt;  FIELD2(5) TYPE C,&lt;/P&gt;&lt;P&gt;  FIELD3(5) TYPE P DECIMALS 2,&lt;/P&gt;&lt;P&gt;END OF ITAB.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF ITAB1 OCCURS 0.&lt;/P&gt;&lt;P&gt;  INCLUDE STRUCTURE ITAB.&lt;/P&gt;&lt;P&gt;DATA: END OF ITAB1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF ITAB_FIELDCAT OCCURS 0.&lt;/P&gt;&lt;P&gt;  INCLUDE STRUCTURE ITAB.&lt;/P&gt;&lt;P&gt;DATA: END OF ITAB_FIELDCAT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Print Parameters&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;PARAMETERS:&lt;/P&gt;&lt;P&gt;            P_PRINT  AS CHECKBOX DEFAULT ' ', "PRINT IMMEDIATE&lt;/P&gt;&lt;P&gt;            P_NOSINF AS CHECKBOX DEFAULT 'X', "NO SELECTION INFO&lt;/P&gt;&lt;P&gt;            P_NOCOVE AS CHECKBOX DEFAULT ' ', "NO COVER PAGE&lt;/P&gt;&lt;P&gt;            P_NONEWP AS CHECKBOX DEFAULT ' ', "NO NEW PAGE&lt;/P&gt;&lt;P&gt;            P_NOLINF AS CHECKBOX DEFAULT 'X', "NO PRINT LIST INFO&lt;/P&gt;&lt;P&gt;            P_RESERV TYPE I.                  "NO OF FOOTER LINE&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;INITIALIZATION.&lt;/P&gt;&lt;P&gt;G_REPID = SY-REPID.&lt;/P&gt;&lt;P&gt;PERFORM PRINT_BUILD    USING GS_PRINT.      "Print PARAMETERS&lt;/P&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;TEST DATA&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;MOVE 'TEST1' TO ITAB1-FIELD1.&lt;/P&gt;&lt;P&gt;MOVE 'TEST1' TO ITAB1-FIELD2.&lt;/P&gt;&lt;P&gt;MOVE '10.00' TO ITAB1-FIELD3.&lt;/P&gt;&lt;P&gt;APPEND ITAB1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MOVE 'TEST2' TO ITAB1-FIELD1.&lt;/P&gt;&lt;P&gt;MOVE 'TEST2' TO ITAB1-FIELD2.&lt;/P&gt;&lt;P&gt;MOVE '20.00' TO ITAB1-FIELD3.&lt;/P&gt;&lt;P&gt;APPEND ITAB1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DO 50 TIMES.&lt;/P&gt;&lt;P&gt;  APPEND ITAB1.&lt;/P&gt;&lt;P&gt;ENDDO.&lt;/P&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;PERFORM BUILD.&lt;/P&gt;&lt;P&gt;PERFORM EVENTTAB_BUILD CHANGING GT_EVENTS.&lt;/P&gt;&lt;P&gt;PERFORM COMMENT_BUILD  CHANGING GT_LIST_TOP_OF_PAGE.&lt;/P&gt;&lt;P&gt;PERFORM CALL_ALV.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM BUILD.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;DATA FIELD CATALOG&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Explain Field Description to ALV&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA: FIELDCAT_IN TYPE SLIS_FIELDCAT_ALV.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CLEAR FIELDCAT_IN.&lt;/P&gt;&lt;P&gt;FIELDCAT_LN-FIELDNAME = 'FIELD1'.&lt;/P&gt;&lt;P&gt;FIELDCAT_LN-TABNAME   = 'ITAB1'.&lt;/P&gt;&lt;P&gt;*FIELDCAT_LN-NO_OUT    = 'X'.  "FIELD NOT DISPLAY, CHOOSE FROM LAYOUT&lt;/P&gt;&lt;P&gt;FIELDCAT_LN-KEY       = ' '.   "SUBTOTAL KEY&lt;/P&gt;&lt;P&gt;FIELDCAT_LN-NO_OUT    = ' '.&lt;/P&gt;&lt;P&gt;FIELDCAT_LN-SELTEXT_L = 'HEAD1'.&lt;/P&gt;&lt;P&gt;APPEND FIELDCAT_LN TO GT_FIELDCAT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CLEAR FIELDCAT_IN.&lt;/P&gt;&lt;P&gt;FIELDCAT_LN-FIELDNAME = 'FIELD2'.&lt;/P&gt;&lt;P&gt;FIELDCAT_LN-TABNAME   = 'ITAB1'.&lt;/P&gt;&lt;P&gt;FIELDCAT_LN-NO_OUT    = 'X'.&lt;/P&gt;&lt;P&gt;FIELDCAT_LN-SELTEXT_L = 'HEAD2'.&lt;/P&gt;&lt;P&gt;APPEND FIELDCAT_LN TO GT_FIELDCAT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CLEAR FIELDCAT_IN.&lt;/P&gt;&lt;P&gt;FIELDCAT_LN-FIELDNAME     = 'FIELD3'.&lt;/P&gt;&lt;P&gt;FIELDCAT_LN-TABNAME       = 'ITAB1'.&lt;/P&gt;&lt;P&gt;FIELDCAT_LN-REF_FIELDNAME = 'MENGE'. "&amp;lt;- REF FIELD IN THE DICTIONNARY&lt;/P&gt;&lt;P&gt;FIELDCAT_LN-REF_TABNAME   = 'MSEG'.  "&amp;lt;- REF TABLE IN THE DICTIONNARY&lt;/P&gt;&lt;P&gt;FIELDCAT_LN-NO_OUT        = ' '.&lt;/P&gt;&lt;P&gt;FIELDCAT_LN-DO_SUM        = 'X'.   "SUM UPON DISPLAY&lt;/P&gt;&lt;P&gt;APPEND FIELDCAT_LN TO GT_FIELDCAT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;DATA SORTING AND SUBTOTAL&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA: GS_SORT TYPE SLIS_SORTINFO_ALV.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CLEAR GS_SORT.&lt;/P&gt;&lt;P&gt;GS_SORT-FIELDNAME = 'FIELD1'.&lt;/P&gt;&lt;P&gt;GS_SORT-SPOS      = 1.&lt;/P&gt;&lt;P&gt;GS_SORT-UP        = 'X'.&lt;/P&gt;&lt;P&gt;GS_SORT-SUBTOT    = 'X'.&lt;/P&gt;&lt;P&gt;APPEND GS_SORT TO GT_SORT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CLEAR GS_SORT.&lt;/P&gt;&lt;P&gt;GS_SORT-FIELDNAME = 'FIELD2'.&lt;/P&gt;&lt;P&gt;GS_SORT-SPOS      = 2.&lt;/P&gt;&lt;P&gt;GS_SORT-UP        = 'X'.&lt;/P&gt;&lt;P&gt;*GS_SORT-SUBTOT    = 'X'.&lt;/P&gt;&lt;P&gt;APPEND GS_SORT TO GT_SORT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM CALL_ALV.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;ABAP List Viewer&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;CALL FUNCTION 'REUSE_ALV_LIST_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_INTERFACE_CHECK = ' '&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_BUFFER_ACTIVE = ' '&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;I_CALLBACK_PROGRAM = G_REPID&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;I_CALLBACK_PF_STATUS_SET = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;I_CALLBACK_USER_COMMAND = ' '&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;I_STRUCTURE_NAME = 'ITAB1'&lt;/P&gt;&lt;P&gt;IS_LAYOUT =  GS_LAYOUT&lt;/P&gt;&lt;P&gt;IT_FIELDCAT = GT_FIELDCAT[]&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;IT_EXCLUDING =&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;/UL&gt;&lt;P&gt;  IT_SORT = GT_SORT[]&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;IT_FILTER =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;IS_SEL_HIDE =&lt;/P&gt;&lt;/LI&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;I_SAVE = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;IS_VARIANT =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  IT_EVENTS = GT_EVENTS[]&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;IT_EVENT_EXIT =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  IS_PRINT = GS_PRINT&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;IS_REPREP_ID =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;I_SCREEN_START_COLUMN = 0&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;I_SCREEN_START_LINE = 0&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;I_SCREEN_END_COLUMN = 0&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;I_SCREEN_END_LINE = 0&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;IMPORTING&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;E_EXIT_CAUSED_BY_CALLER =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;ES_EXIT_CAUSED_BY_USER =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;TABLES&lt;/P&gt;&lt;P&gt;T_OUTTAB = ITAB1&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;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;HEADER FORM&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;FORM EVENTTAB_BUILD CHANGING LT_EVENTS TYPE SLIS_T_EVENT.&lt;/P&gt;&lt;P&gt;CONSTANTS:&lt;/P&gt;&lt;P&gt;GC_FORMNAME_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE'.&lt;/P&gt;&lt;P&gt;*GC_FORMNAME_END_OF_PAGE TYPE SLIS_FORMNAME VALUE 'END_OF_PAGE'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: LS_EVENT TYPE SLIS_ALV_EVENT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'REUSE_ALV_EVENTS_GET'&lt;/P&gt;&lt;P&gt;       EXPORTING&lt;/P&gt;&lt;P&gt;            I_LIST_TYPE = 0&lt;/P&gt;&lt;P&gt;       IMPORTING&lt;/P&gt;&lt;P&gt;            ET_EVENTS   = LT_EVENTS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  READ TABLE LT_EVENTS WITH KEY NAME =  SLIS_EV_TOP_OF_PAGE&lt;/P&gt;&lt;P&gt;                           INTO LS_EVENT.&lt;/P&gt;&lt;P&gt;  IF SY-SUBRC = 0.&lt;/P&gt;&lt;P&gt;    MOVE GC_FORMNAME_TOP_OF_PAGE TO LS_EVENT-FORM.&lt;/P&gt;&lt;P&gt;    APPEND LS_EVENT TO LT_EVENTS.&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;define END_OF_PAGE event&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;READ TABLE LT_EVENTS WITH KEY NAME =  SLIS_EV_END_OF_PAGE&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                         INTO LS_EVENT.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;IF SY-SUBRC = 0.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  MOVE GC_FORMNAME_END_OF_PAGE TO LS_EVENT-FORM.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  APPEND LS_EVENT TO LT_EVENTS.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM COMMENT_BUILD CHANGING GT_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER.&lt;/P&gt;&lt;P&gt;  DATA: GS_LINE TYPE SLIS_LISTHEADER.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR GS_LINE.&lt;/P&gt;&lt;P&gt;  GS_LINE-TYP  = 'H'.&lt;/P&gt;&lt;P&gt;  GS_LINE-INFO = 'HEADER 1'.&lt;/P&gt;&lt;P&gt;  APPEND GS_LINE TO GT_TOP_OF_PAGE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR GS_LINE.&lt;/P&gt;&lt;P&gt;  GS_LINE-TYP  = 'S'.&lt;/P&gt;&lt;P&gt;  GS_LINE-KEY  = 'STATUS 1'.&lt;/P&gt;&lt;P&gt;  GS_LINE-INFO = 'INFO 1'.&lt;/P&gt;&lt;P&gt;  APPEND GS_LINE TO GT_TOP_OF_PAGE.&lt;/P&gt;&lt;P&gt;  GS_LINE-KEY  = 'STATUS 2'.&lt;/P&gt;&lt;P&gt;  GS_LINE-INFO = 'INFO 2'.&lt;/P&gt;&lt;P&gt;  APPEND GS_LINE TO GT_TOP_OF_PAGE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;CLEAR GS_LINE.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;GS_LINE-TYP  = 'A'.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;GS_LINE-INFO = 'ACTION'.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;APPEND GS_LINE TO  GT_TOP_OF_PAGE.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM TOP_OF_PAGE.&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'&lt;/P&gt;&lt;P&gt;       EXPORTING&lt;/P&gt;&lt;P&gt;            IT_LIST_COMMENTARY = GT_LIST_TOP_OF_PAGE.&lt;/P&gt;&lt;P&gt;  WRITE: SY-DATUM, 'Page No', SY-PAGNO LEFT-JUSTIFIED.&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM END_OF_PAGE.&lt;/P&gt;&lt;P&gt;  WRITE at (sy-linsz) sy-pagno CENTERED.&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;PRINT SETTINGS&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;FORM PRINT_BUILD USING LS_PRINT TYPE SLIS_PRINT_ALV.&lt;/P&gt;&lt;P&gt;  LS_PRINT-PRINT              = P_PRINT.  "PRINT IMMEDIATE&lt;/P&gt;&lt;P&gt;  LS_PRINT-NO_PRINT_SELINFOS  = P_NOSINF. "NO SELECTION INFO&lt;/P&gt;&lt;P&gt;  LS_PRINT-NO_COVERPAGE       = P_NOCOVE. "NO COVER PAGE&lt;/P&gt;&lt;P&gt;  LS_PRINT-NO_NEW_PAGE        = P_NONEWP.&lt;/P&gt;&lt;P&gt;  LS_PRINT-NO_PRINT_LISTINFOS = P_NOLINF. "NO PRINT LIST INFO&lt;/P&gt;&lt;P&gt;  LS_PRINT-RESERVE_LINES      = P_RESERV.&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*END OF ZALV PROGRAM &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Check this program...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Pavan&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 23 Jul 2007 06:22:12 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/alv-sort-subtotal/m-p/2521706#M570850</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-07-23T06:22:12Z</dc:date>
    </item>
    <item>
      <title>Re: ALV - Sort - Subtotal</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/alv-sort-subtotal/m-p/2521707#M570851</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi,&lt;/P&gt;&lt;P&gt;when we sort the output then &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;a material may exist more than one time .....&lt;/P&gt;&lt;P&gt;now if u want to find the total amount of this material u can click on subtotal...&lt;/P&gt;&lt;P&gt;this is the use of subtotal...&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 23 Jul 2007 06:24:08 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/alv-sort-subtotal/m-p/2521707#M570851</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-07-23T06:24:08Z</dc:date>
    </item>
    <item>
      <title>Re: ALV - Sort - Subtotal</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/alv-sort-subtotal/m-p/2521708#M570852</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;You have to use &amp;lt;b&amp;gt;ls_fieldcat-do_sum      =&amp;lt;/b&amp;gt; for total or subtotal&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Try with this report&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;*&amp;amp;---------------------------------------------------------------------*
*&amp;amp; Report  ZALVTOTAL                                                   *
*&amp;amp;                                                                     *
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;                                                                     *
*&amp;amp;                                                                     *
*&amp;amp;---------------------------------------------------------------------*

REPORT  ZALVTOTAL                               .

TYPES :
  BEGIN OF ty_vbak,
    vkorg TYPE vbak-vkorg,             " Sales organization
    kunnr TYPE vbak-kunnr,             " Sold-to party
    vbeln TYPE vbak-vbeln,             " Sales document
    netwr TYPE vbak-netwr,             " Net Value of the Sales Order
    waerk TYPE vbak-waerk,             " Document currency
  END OF ty_vbak.

DATA:
  vbak    TYPE vbak,
  gt_vbak TYPE TABLE OF ty_vbak.

SELECT-OPTIONS :
  s_vkorg FOR vbak-vkorg,              " Sales organization
  s_kunnr FOR vbak-kunnr,              " Sold-to party
  s_vbeln FOR vbak-vbeln.              " Sales document

SELECTION-SCREEN :
  SKIP, BEGIN OF LINE,COMMENT 5(27) v_1 FOR FIELD p_max.
PARAMETERS p_max(2) TYPE n DEFAULT '20' OBLIGATORY.
SELECTION-SCREEN END OF LINE.

*---------------------------------------------------------------------*
INITIALIZATION.

  v_1 = 'Maximum of records to read'.

*---------------------------------------------------------------------*
START-OF-SELECTION.

  PERFORM f_read_data.

  PERFORM f_display_data.

*---------------------------------------------------------------------*
*      Form  f_read_data
*---------------------------------------------------------------------*
FORM f_read_data.

  SELECT vkorg kunnr vbeln netwr waerk
      UP TO p_max ROWS
    INTO TABLE gt_vbak
    FROM vbak
   WHERE kunnr IN s_kunnr
     AND vbeln IN s_vbeln
     AND vkorg IN s_vkorg.

ENDFORM.                               " F_READ_DATA
*---------------------------------------------------------------------*
*      Form  f_display_data
*---------------------------------------------------------------------*
FORM f_display_data.

  TYPE-POOLS: slis.                    " ALV Global types

  DEFINE m_fieldcat.
    add 1 to ls_fieldcat-col_pos.
    ls_fieldcat-fieldname   = &amp;amp;1.
    ls_fieldcat-ref_tabname = 'VBAK'.
    ls_fieldcat-do_sum      = &amp;amp;2.
    ls_fieldcat-cfieldname  = &amp;amp;3.
    append ls_fieldcat to lt_fieldcat.
  END-OF-DEFINITION.

  DEFINE m_sort.
    add 1 to ls_sort-spos.
    ls_sort-fieldname = &amp;amp;1.
    ls_sort-up        = 'X'.
    ls_sort-subtot    = &amp;amp;2.
    append ls_sort to lt_sort.
  END-OF-DEFINITION.

  DATA:
    ls_fieldcat TYPE slis_fieldcat_alv,
    lt_fieldcat TYPE slis_t_fieldcat_alv,
    lt_sort     TYPE slis_t_sortinfo_alv,
    ls_sort     TYPE slis_sortinfo_alv,
    ls_layout   TYPE slis_layout_alv.

  m_fieldcat 'VKORG' ''  ''.
  m_fieldcat 'KUNNR' ''  ''.
  m_fieldcat 'VBELN' ''  ''.
  m_fieldcat 'NETWR' 'X' 'WAERK'.
  m_fieldcat 'WAERK' ''  ''.

  m_sort 'VKORG' 'X'.                  " Sort by vkorg and subtotal
  m_sort 'KUNNR' 'X'.                  " Sort by kunnr and subtotal
  m_sort 'VBELN' ''.                   " Sort by vbeln

  ls_layout-cell_merge = 'X'.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
            is_layout   = ls_layout
            it_fieldcat = lt_fieldcat
            it_sort     = lt_sort
       TABLES
            t_outtab    = gt_vbak.

ENDFORM.                               " F_DISPLAY_DATA&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Reward all helpfull answers&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;Pavan&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 23 Jul 2007 06:30:34 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/alv-sort-subtotal/m-p/2521708#M570852</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-07-23T06:30:34Z</dc:date>
    </item>
    <item>
      <title>Re: ALV - Sort - Subtotal</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/alv-sort-subtotal/m-p/2521709#M570853</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;Check out the below example . u may get some idea&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;

*&amp;amp;---------------------------------------------------------------------*
*&amp;amp; Report  ZMMS_ALV_SUBTOTAL                                           *
*&amp;amp;                                                                     *
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;                                                                     *
*&amp;amp;                                                                     *
*&amp;amp;---------------------------------------------------------------------*

    REPORT  ZMMS_ALV_SUBTOTAL                       .

    TYPE-POOLS: SLIS.

    DATA: BEGIN OF IT_OUTPUT OCCURS 0,
    VAR1(8) TYPE N,
    VAR2(10),
    VAR3 TYPE I,
    END OF IT_OUTPUT.

    DATA: IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
    T_FIELDCAT TYPE SLIS_FIELDCAT_ALV,
    IT_SORT TYPE SLIS_T_SORTINFO_ALV,
    T_SORT TYPE SLIS_SORTINFO_ALV,
    V_REPID LIKE SY-REPID.

    INITIALIZATION.
*      V_REPID = SY-REPID.

      SET PF-STATUS 'STANDARD' OF PROGRAM 'ZMMS_ALV_SUBTOTAL'.


    START-OF-SELECTION.

      PERFORM GET_DATA.
      PERFORM SORT_FIELDS.
      PERFORM FILL_FIELDCAT.
      PERFORM LIST_DISPLAY.

*&amp;amp;---------------------------------------------------------------------*
*    &amp;amp; Form GET_DATA
*&amp;amp;---------------------------------------------------------------------*
*     text
*----------------------------------------------------------------------*
*     --&amp;gt; p1 text
*     &amp;lt;-- p2 text
*----------------------------------------------------------------------*
    FORM GET_DATA.

      IT_OUTPUT-VAR1 = 1000.
      IT_OUTPUT-VAR2 = 'anupama'.
      IT_OUTPUT-VAR3 = '10000'.
      APPEND IT_OUTPUT.
      CLEAR IT_OUTPUT.

      IT_OUTPUT-VAR1 = 1000.
      IT_OUTPUT-VAR2 = 'siddhu'.
      IT_OUTPUT-VAR3 = '20000'.
      APPEND IT_OUTPUT.
      CLEAR IT_OUTPUT.

      IT_OUTPUT-VAR1 = 1000.
      IT_OUTPUT-VAR2 = 'chinni'.
      IT_OUTPUT-VAR3 = '100000'.
      APPEND IT_OUTPUT.
      CLEAR IT_OUTPUT.

      IT_OUTPUT-VAR1 = 2000.
      IT_OUTPUT-VAR2 = 'chicchu'.
      IT_OUTPUT-VAR3 = '10000'.
      APPEND IT_OUTPUT.
      CLEAR IT_OUTPUT.

      IT_OUTPUT-VAR1 = 2000.
      IT_OUTPUT-VAR2 = 'candy'.
      IT_OUTPUT-VAR3 = '10000'.
      APPEND IT_OUTPUT.
      CLEAR IT_OUTPUT.

      IT_OUTPUT-VAR1 = 1000.
      IT_OUTPUT-VAR2 = 'anupama'.
      IT_OUTPUT-VAR3 = '10000'.
      APPEND IT_OUTPUT.
      CLEAR IT_OUTPUT.

      IT_OUTPUT-VAR1 = 4000.
      IT_OUTPUT-VAR2 = 'anupama'.
      IT_OUTPUT-VAR3 = '10000'.
      APPEND IT_OUTPUT.
      CLEAR IT_OUTPUT.


    ENDFORM. " GET_DATA

*&amp;amp;---------------------------------------------------------------------*
*    &amp;amp; Form fill_fieldcat
*&amp;amp;---------------------------------------------------------------------*
*     text
*----------------------------------------------------------------------*
*     --&amp;gt; p1 text
*     &amp;lt;-- p2 text
*----------------------------------------------------------------------*
    FORM FILL_FIELDCAT.
     PERFORM FILL_FIELDS USING: 'IT_OUTPUT' 'VAR1' 'Variable 1' ' ' ,
                                'IT_OUTPUT' 'VAR2' 'Variable 2' ' ' ,
                                'IT_OUTPUT' 'VAR3' 'Variable 3' 'X' .

    ENDFORM. " fill_fieldcat

*&amp;amp;---------------------------------------------------------------------*
*    &amp;amp; Form fill_fields
*&amp;amp;---------------------------------------------------------------------*
*     text
*----------------------------------------------------------------------*
*     --&amp;gt;P_0146 text
*     --&amp;gt;P_0147 text
*     --&amp;gt;P_0148 text
*     --&amp;gt;P_0149 text
*----------------------------------------------------------------------*
    FORM FILL_FIELDS USING VALUE(TABNAME) TYPE SLIS_TABNAME
    VALUE(FIELDNAME) TYPE SLIS_FIELDNAME
    VALUE(SELTEXT_M) LIKE DD03P-SCRTEXT_M
    VALUE(DO_SUM) TYPE C.
      T_FIELDCAT-TABNAME = TABNAME.
      T_FIELDCAT-FIELDNAME = FIELDNAME.
      T_FIELDCAT-SELTEXT_M = SELTEXT_M.
      IF DO_SUM = 'X'.
        T_FIELDCAT-DATATYPE = 'CURR'.
      ENDIF.
      T_FIELDCAT-DO_SUM = DO_SUM.
      APPEND T_FIELDCAT TO IT_FIELDCAT.
      CLEAR T_FIELDCAT.
    ENDFORM. " fill_fields

*&amp;amp;---------------------------------------------------------------------*
*    &amp;amp; Form list_display
*&amp;amp;---------------------------------------------------------------------*
*     text
*----------------------------------------------------------------------*
*     --&amp;gt; p1 text
*     &amp;lt;-- p2 text
*----------------------------------------------------------------------*
    FORM LIST_DISPLAY.
      CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
        EXPORTING
          I_CALLBACK_PROGRAM = V_REPID
          IT_FIELDCAT        = IT_FIELDCAT
          IT_SORT            = IT_SORT[]
        TABLES
          T_OUTTAB           = IT_OUTPUT
        EXCEPTIONS
          PROGRAM_ERROR      = 1
          OTHERS             = 2.
      IF SY-SUBRC &amp;lt;&amp;gt; 0.
*     MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*     WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.

    ENDFORM. " list_display

*&amp;amp;---------------------------------------------------------------------*
*    &amp;amp; Form sort_fields
*&amp;amp;---------------------------------------------------------------------*
*     text
*----------------------------------------------------------------------*
*     --&amp;gt; p1 text
*     &amp;lt;-- p2 text
*----------------------------------------------------------------------*
    FORM SORT_FIELDS.
      T_SORT-FIELDNAME = 'VAR1'.
      T_SORT-TABNAME = 'IT_OUTPUT'.
      T_SORT-SPOS = 1.
      T_SORT-UP = 'X'.
      T_SORT-SUBTOT = 'X'.
      APPEND T_SORT TO IT_SORT.
      CLEAR T_SORT.

      T_SORT-FIELDNAME = 'VAR3'.
      T_SORT-TABNAME = 'IT_OUTPUT'.
      T_SORT-SPOS = 2.
      T_SORT-UP = 'X'.
      APPEND T_SORT TO IT_SORT.
      CLEAR T_SORT.

    ENDFORM.                    "sort_fields
&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Reward Points if it is Useful.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Manjunath MS&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 23 Jul 2007 06:37:16 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/alv-sort-subtotal/m-p/2521709#M570853</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-07-23T06:37:16Z</dc:date>
    </item>
  </channel>
</rss>

