Subtotals in ALV

Hi
SAP Guru s
I am facing a dump when i pass the Gt_sort in reuse alv display FM
I am tryingto display the subtotals on the kunnr for dollars and count  via ALV
following is the code
ur advice is highly appreciated
thanks
report orders .
                   DICTIONARY TABLES
tables: vbak,            "Sales Document: Header Data
        vbpa,            "Sales Document: Partner
        vbuk,  "Sales Document: Header Status and Administrative Data
        adrc.
ALV Declarations                                                     *
type-pools: slis, kkblo.
data: g_repid      like  sy-repid,
      gs_layout    type  slis_layout_alv,
      gt_fieldcat  type  slis_t_fieldcat_alv,
      fieldcat_in  like  line of  gt_fieldcat,
      cos_pos      type  i,
      gt_events           type slis_t_event,
      gt_sort             type slis_t_sortinfo_alv,
      months like komp-anz_monate.
data: g_anzlines  type  i.
data : t_list_top_of_page type slis_t_listheader.
data : t_list_end_of_list type slis_t_listheader.
data : t_events type slis_t_event.
                  DATA
data: gv_netwr like vbak-netwr,
      gv_netwr0 like vbak-netwr,
      zvbeln like vbak-vbeln,
      gv_count(6) type n,
      gv_count0(6) type n,
      erdat1 like vbak-erdat,
      temp like vbak-erdat,
      temp1(10),
      erdat2 like vbak-erdat,
      vkorg like vbak-vkorg,
      erdat(25),
      hyphen(3) value '---',
      p_name1 like adrc-name1,
      zlines type i,
      g_tabix like sy-tabix,
      month_nme(10),
      zline type i,
      gv_tot like vbak-netwr,
      gv_kcount type i,
      gv_ktot like vbak-netwr,
      l_tabix like sy-tabix.
                  INTERNAL TABLES
data: begin of zvbak occurs 0,
       vbeln like vbak-vbeln,                "order no
       erdat like vbak-erdat,
       vgbel like vbak-vgbel,                "reference doc num
       netwr like vbak-netwr,                " amount
      end of zvbak.
data: zvbak0 like zvbak occurs 0 with header line.
data: begin of zvbpa occurs 0,
        name1 like adrc-name1,
        month(2),
        vbeln like vbpa-vbeln,
        parvw like vbpa-parvw,        " partner function
        kunnr like vbpa-kunnr,
        adrnr like vbpa-adrnr,
        netwr like vbak-netwr,
        erdat like vbak-erdat,
     end of zvbpa.
data: zvbpa0 like zvbpa occurs 0 with header line.
data: alv_dat like zvbpa occurs 0 with header line,
      alv_data0 like zvbpa occurs 0 with header line.
data: begin of alv0  occurs 0,
      kunnr like vbak-kunnr,
      name1 like adrc-name1,
      count type i,
      dollars like vbak-netwr ,
      kcount type i,
      kdollars like vbak-netwr,
      month_nme(10),
      erdat like vbak-erdat,
      netwr like vbak-netwr,
      vbeln like vbpa-vbeln,
      end of alv0.
data: begin of zvbuk occurs 0,
       vbeln like vbak-vbeln,
       netwr like vbak-netwr,
       erdat like vbak-erdat,
end of zvbuk.
data: begin of ztab_period occurs 0,
        sindex like  scscp_period_str-sindex,
        datuv  like scscp_period_str-datuv,
        datub like scscp_period_str-datub,
        id like scscp_period_str-id,
        name(10) type c,
      end of ztab_period.
data: begin of ztab_perio0 occurs 0,
        sindex like  scscp_period_str-sindex,
        datuv  like scscp_period_str-datuv,
        id like scscp_period_str-id,
        name(10) type c,
      end of ztab_perio0.
                  SELECTION SCREEN
selection-screen begin of block b with frame title text-001 .
select-options:  s_erdat for vbak-erdat obligatory,
                 s_vkorg for vbak-vkorg obligatory.
selection-screen end of block b.
*INITIALIZATION.
initialization.
  g_repid = sy-repid.
*START-OF-SELECTION.
start-of-selection.
  data:t_index like sy-tabix.
  perform select_orders tables alv_data0.
  loop at alv_data0.
    t_index = sy-tabix.
    move alv_data0-erdat+4(2) to alv_data0-month.
    modify alv_data0 index t_index transporting month.
    clear alv_data0.
  endloop.
  sort alv_data0 by name1 month.
  loop at alv_data0.
    if alv_data0-name1 = space.
      delete alv_data0.
    endif.
    move alv_data0-kunnr to alv0-kunnr.
    at new name1.
      move: alv_data0-name1 to alv0-name1.
    endat.
    gv_netwr = alv_data0-netwr + gv_netwr.
    gv_count = gv_count + 1.
    at end of month.
      call function 'MONTH_TO_MONTHNAME'
           exporting
                monthnum  = alv_data0-month
           importing
                monthname = month_nme.
      move month_nme to alv0-month_nme.
      move gv_count to alv0-count.
      move gv_netwr to alv0-dollars.
      append alv0.
      clear: alv0, gv_netwr, gv_count.
    endat.
  endloop.
**END-OF-SELECTION.
end-of-selection.
  loop at alv0 .
    gv_tot = gv_tot + alv0-dollars.
  endloop.
  describe table alv0 lines g_anzlines.
  if g_anzlines gt 0.
    perform display_list.
  endif.
*&      Form  select_orders
      text
-->  p1        text
<--  p2        text
form select_orders tables alv_dat structure zvbpa.
  data: gv_index like sy-tabix,
       ztab like ztab_period,
       erdath like vbak-erdat,
       erdat_h like vbak-erdat.
  erdat1 = s_erdat-low(8).
  erdath = s_erdat-high(8).
  concatenate erdat1 hyphen erdat_h erdath into erdat.
  vkorg = s_vkorg+3(4).
*calculate the no of orders and dollars month wise from the selection
*date
  call function 'CSCP_PARA1_GET_PERIODS'
       exporting
            i_datuv    = s_erdat-low
            i_datub    = s_erdat-high
            i_timeunit = 'D'
       tables
            et_dates   = ztab_period.
  clear ztab_period.
  clear gv_index.
  describe table ztab_period lines zlines.
  loop at ztab_period.
    move-corresponding ztab_period to ztab_perio0.
    append ztab_perio0.
    clear ztab_perio0.
  endloop.
  sort ztab_perio0 by datuv.
  loop at ztab_perio0.
    if zlines = 2 and ztab_perio0-sindex = 1.
      delete ztab_perio0.
      clear ztab_perio0.
      exit.
    endif.
  endloop.
*always delete first and last records in the internal table
  loop at ztab_perio0.
    if  ( ztab_perio0-sindex = 1 ) .
      delete ztab_perio0.
    endif.
  endloop.
*Assign Month name and calculate no of orders
  clear gv_index.
  clear: ztab, ztab_perio0.
  describe table ztab_perio0 lines zline.
  loop at ztab_perio0 into ztab.
    gv_index = sy-tabix.
    if ( ( ztab-datuv+4(2) = '01' ) or
         ( ztab-datuv+4(2) = '02' ) or
         ( ztab-datuv+4(2) = '03' ) or
         ( ztab-datuv+4(2) = '04' ) or
         ( ztab-datuv+4(2) = '05' ) or
         ( ztab-datuv+4(2) = '06' ) or
         ( ztab-datuv+4(2) = '07' ) or
         ( ztab-datuv+4(2) = '08' ) or
         ( ztab-datuv+4(2) = '09' ) or
         ( ztab-datuv+4(2) = '10' ) or
         ( ztab-datuv+4(2) = '11' ) or
         ( ztab-datuv+4(2) = '12' ) ).
      erdat1 = ztab-datuv.
      perform cal_no_of_orders tables    alv_dat
                              using     erdat1
                              changing  gv_count0 gv_netwr0.
      clear : erdat1 , ztab.
    endif.
    clear ztab.
  endloop.
endform.                    " select_orders
*&      Form  DISPLAY_LIST
      text
-->  p1        text
<--  p2        text
form display_list.
  g_repid = sy-repid.
sort alv0 by kunnr.
loop at alv0.
   gv_ktot = gv_ktot + alv0-dollars.
   gv_kcount = gv_kcount + alv0-count.
   at end of kunnr.
     move gv_ktot to alv0-kdollars.
     move gv_kcount to alv0-kcount.
     append alv0.
     clear: alv0, gv_kcount, gv_ktot.
   endat.
endloop.
  perform fillevents.
  perform comment_build using  t_list_top_of_page.
  perform create_layout.
  perform create_fieldcat.
  call function 'REUSE_ALV_GRID_DISPLAY'
   exporting
    I_INTERFACE_CHECK                 = ' '
    I_BYPASSING_BUFFER                =
    I_BUFFER_ACTIVE                   = ' '
     i_callback_program                = g_repid
    I_CALLBACK_PF_STATUS_SET          = ' '
    I_CALLBACK_USER_COMMAND           = ' '
     i_callback_top_of_page            =  'TOP_OF_PAGE'
    I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
    I_CALLBACK_HTML_END_OF_LIST       = ' '
    I_STRUCTURE_NAME                  =
    I_BACKGROUND_ID                   = ' '
    I_GRID_TITLE                      =
    I_GRID_SETTINGS                   = gs_settings
     is_layout                         = gs_layout
     it_fieldcat                       = gt_fieldcat
    IT_EXCLUDING                      =
    IT_SPECIAL_GROUPS                 =
     it_sort                           = gt_sort[]     ===========================>[ a dump is created here 
    IT_FILTER                         =
    IS_SEL_HIDE                       =
    I_DEFAULT                         = 'X'
     i_save                            = 'A'
    IS_VARIANT                        =
     it_events                         = t_events
    IT_EVENT_EXIT                     =
    IS_PRINT                          =
    IS_REPREP_ID                      =
    I_SCREEN_START_COLUMN             = 0
    I_SCREEN_START_LINE               = 0
    I_SCREEN_END_COLUMN               = 0
    I_SCREEN_END_LINE                 = 0
    IT_ALV_GRAPHICS                   =
    IT_ADD_FIELDCAT                   =
    IT_HYPERLINK                      =
    I_HTML_HEIGHT_TOP                 =
    I_HTML_HEIGHT_END                 =
    IT_EXCEPT_QINFO                   =
  IMPORTING
    E_EXIT_CAUSED_BY_CALLER           =
    ES_EXIT_CAUSED_BY_USER            =
    tables
      t_outtab                          = alv0
  EXCEPTIONS
    PROGRAM_ERROR                     = 1
    OTHERS                            = 2
  if sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
        WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  endif.
endform.                    " DISPLAY_LIST
*&      Form  comment_build
      text
     -->P_t_list_top_of_page  text
form comment_build using     t_list_top_of_page type slis_t_listheader.
  data : ls_line type slis_listheader.
  data : ldate(10),hdate(10).
  data : lv_dat(20).
  clear lv_dat.
  refresh :  t_list_top_of_page.
  clear ls_line.
  ls_line-info = sy-repid.
  ls_line-typ  = 'H'.
  ls_line-info = 'ORDERS AND DOLLARS REPORT'.
  append ls_line to  t_list_top_of_page.
  write sy-datum to ldate using edit mask '__.__.____' .
  clear ls_line.
  ls_line-typ  = 'A'.
  concatenate 'Run Date :' ldate
                into ls_line-info separated by space.
  append ls_line to  t_list_top_of_page.
  clear ls_line.
  ls_line-typ  = 'A'.
  ls_line-info = 'User ID   :'.
  ls_line-info+12 = sy-uname.
  append ls_line to  t_list_top_of_page.
clear ls_line.
ls_line-typ = 'A'.
ls_line-info = 'No OF ORDERS   :'.
ls_line-info+17 = gv_count.
append ls_line to  t_list_top_of_page.
  clear ls_line.
  ls_line-typ = 'A'.
  ls_line-info = 'TOTAL dOLLAR AMOUNT   :'.
  ls_line-info+25 = gv_tot.
  append ls_line to  t_list_top_of_page.
  clear ls_line.
  concatenate s_erdat3(8) '----' s_erdat11(8) into lv_dat.
  ls_line-typ = 'A'.
  ls_line-info = 'Date Range for Documents   :'.
  ls_line-info+25 = lv_dat.
  append ls_line to  t_list_top_of_page.
  clear ls_line.
  ls_line-typ = 'A'.
  ls_line-info = 'Sales Organization   :'.
  ls_line-info+25 = vkorg.
  append ls_line to  t_list_top_of_page.
endform.                    " comment_build
*&      Form  fillevents
      text
-->  p1        text
<--  p2        text
form fillevents.
  data l_events type line of slis_t_event.
  clear l_events.
  l_events-name = 'TOP_OF_PAGE'.
  l_events-form = 'TOP_OF_PAGE'.
  append l_events to t_events.
*perform top-of-page1.
endform.                    " fillevents
*&      Form  create_fieldcat
      text
-->  p1        text
<--  p2        text
form create_fieldcat.
  perform fill_fieldcat using:
                   'NAME1'     'ALV0' 'NAME'         '1' '',
                   'MONTH_NME' 'ALV0' 'EDIMONTH'     '2' '',
                   'DOLLARS'   'ALV0' 'DOLLARS'      '3' '',
                   'COUNT'     'ALV0' 'COUNT'        '4' ''.
endform.                    " create_fieldcat
*&      Form  create_layout
      text
-->  p1        text
<--  p2        text
form create_layout.
  gs_layout-colwidth_optimize = 'X'.
  gs_layout-zebra             = 'X'.
  gs_layout-no_totalline      = 'X'.
endform.                    " create_layout
*&      Form  fill_fieldcat
      text
     -->P_0564   text
     -->P_0565   text
     -->P_0566   text
     -->P_0567   text
     -->P_0568   text
form fill_fieldcat using    p_fname
                   p_tabname
                   p_seltext
                   p_colpos
                   p_do_sum.
  clear fieldcat_in.
  fieldcat_in-fieldname  =  p_fname.
  fieldcat_in-tabname    =  p_tabname.
  fieldcat_in-seltext_m  =  p_seltext.
  fieldcat_in-col_pos    =  p_colpos.
  fieldcat_in-do_sum     = p_do_sum.
  append fieldcat_in to gt_fieldcat.
  clear fieldcat_in.
  fieldcat_in-fieldname     = 'DOLLARS'.
  fieldcat_in-tabname       = 'ALV0'.
  fieldcat_in-no_out        = ' '.
  fieldcat_in-do_sum        = 'X'.   "SUM UPON DISPLAY
  append fieldcat_in to gt_fieldcat.
clear fieldcat_in.
  fieldcat_in-fieldname     = 'COUNT'.
  fieldcat_in-tabname       = 'ALV0'.
  fieldcat_in-no_out        = ' '.
  fieldcat_in-do_sum        = 'X'.   "SUM UPON DISPLAY
  append fieldcat_in to gt_fieldcat.
data sorting and subtotal
  data: gs_sort type slis_sortinfo_alv.
  clear gs_sort.
  gs_sort-tabname = 'ALV0'.
  gs_sort-fieldname = 'KUNNR'.
  gs_sort-spos      = 1.
  gs_sort-up        = 'X'.
  gs_sort-subtot    = 'X'.
  append gs_sort to gt_sort.
  gs_sort-tabname = 'ALV0'.
  gs_sort-fieldname = 'DOLLARS'.
  gs_sort-spos      = 3.
  gs_sort-up        = 'X'.
  gs_sort-subtot    = 'X'.
  append gs_sort to gt_sort.
  gs_sort-tabname = 'ALV0'.
  gs_sort-fieldname = 'COUNT'.
  gs_sort-spos      = 4.
  gs_sort-up        = 'X'.
  gs_sort-subtot    = 'X'.
  append gs_sort to gt_sort.
Gs_layout-cell_merge = 'X'.
endform.                    " fill_fieldcat
*&      Form TOP_OF_PAGE
form top_of_page.
  call function 'REUSE_ALV_COMMENTARY_WRITE'
       exporting
            i_logo             = 'ENJOYSAP_LOGO'
            it_list_commentary = t_list_top_of_page.
endform.
*&      Form  cal_no_of_orders
      text
     -->P_ALV_dat  text
     -->P_ERDAT1  text
     <--P_KUNNR  text
     <--P_GV_COUNT  text
     <--P_GV_NETWR  text
     <--P_GV_NAME1  text
form cal_no_of_orders tables alv_tab structure zvbpa
                      using    p_erdat1
                      changing p_gv_count
                               p_gv_netwr.
  clear: alv_tab, p_gv_count, p_gv_netwr, g_tabix, zvbak, zvbpa.
  refresh: zvbak, zvbpa.
  data: g_tabix  like sy-tabix,
          gv_index like sy-tabix.
  data: av_tab like zvbpa occurs 0 with header line.
*Select Orders Processed
  select  vbeln erdat netwr vgbel from vbak
        into corresponding fields of table zvbak where
        erdat = p_erdat1  and
        vkorg in s_vkorg and
        auart = 'ZEDI'   and
        (  ( bsark = 'DFUA' ) or
          ( bsark = 'DFUE' ) or
          ( bsark = 'DFUI' )  ).
  if sy-subrc = 0.
    clear sy-subrc .
    sort zvbak by vbeln.
    select vbeln parvw kunnr adrnr from vbpa
            into corresponding fields of table zvbpa
            for all entries  in zvbak
            where vbeln = zvbak-vbeln
            and  parvw = 'AG'.
    if sy-subrc = 0.
      clear zvbpa.
      loop at zvbpa.
        g_tabix = sy-tabix.
        read table zvbak with key vbeln = zvbpa-vbeln binary search.
        if sy-subrc eq 0.
          move :zvbak-netwr to zvbpa-netwr,
                zvbak-erdat to zvbpa-erdat.
          modify zvbpa index g_tabix.
        endif.
        select single name1 into (p_name1 )
                            from adrc
                            where addrnumber = zvbpa-adrnr.
        if sy-subrc = 0.
          move p_name1 to zvbpa-name1.
          modify zvbpa index g_tabix.
        endif.
      endloop.
    endif.
  endif.
move Processed Orders to ALV display table
  clear zvbpa.
  loop at zvbpa.
    move-corresponding zvbpa to alv_tab.
    append alv_tab.
    clear alv_tab.
  endloop.
endform.                    "  cal_no_of_orders<i></i>
Message was edited by:
        sap learner

this is the short dump
What happened?                                                                               
The current application program detected a situation which really                
should not occur. Therefore, a termination with a short dump was                 
triggered on purpose by the key word MESSAGE (type X).                                                                               
What can you do?                                                                               
0060   *"       CHANGING                                                        
0070   *"             VALUE(CT_SORT) TYPE  LVC_T_SORT                           
0080   *"                                                                       
0090   -
&#61664;                                                                         
0100     FIELD-SYMBOLS: <LS_FIELDCAT> TYPE LVC_S_FCAT.                          
000110     DATA: LS_SORT     TYPE LVC_S_SORT.                                
000120     DATA: LFLG_MODIFY(1) TYPE C.                                      
000130     DATA: LFLG_EXPA_DEFAULT_SET(1) TYPE C.                            
000140     DATA: L_COUNT LIKE SY-TABIX.                                      
000150                                                                       
000160     SORT IT_FIELDCAT BY FIELDNAME.                                    
000170     SORT CT_SORT STABLE BY SPOS ASCENDING.                            
000180     LOOP AT CT_SORT INTO LS_SORT.                                     
000190       LS_SORT-SPOS = SY-TABIX.                                        
000200       MODIFY CT_SORT FROM LS_SORT.                                    
000210     ENDLOOP.                                                          
000220                                                                       
000230     SORT CT_SORT BY SPOS DESCENDING.                                  
000240                                                                       
000250   * Default settings for subtotals                                    
000260     READ TABLE CT_SORT WITH KEY COMP = 'X' TRANSPORTING NO FIELDS.    
000270     IF SY-SUBRC NE 0.                                                 
000280       LFLG_MODIFY = 'X'.                                              
000290     ENDIF.                                                            
000300                                                                       
000310     LOOP AT CT_SORT INTO LS_SORT.                                     
000320                                                                       
000330       READ TABLE IT_FIELDCAT ASSIGNING <LS_FIELDCAT>                  
000340            WITH KEY FIELDNAME = LS_SORT-FIELDNAME BINARY SEARCH.      
000350       IF SY-SUBRC NE 0.                                               
  >         MESSAGE X000(0K).                                             
000370       ENDIF.                                                          
000380                                                                       
000390       LS_SORT-SELTEXT = <LS_FIELDCAT>-SELTEXT.                        
000400                                                                       
000410   *     Zwischensummenstufen ermitteln                                
000420       IF NOT LS_SORT-SUBTOT IS INITIAL.                               
000430         L_COUNT = L_COUNT + 1.                                        
000440       ENDIF.                                                          
000450                                                                       
000460       IF L_COUNT = 1 AND LFLG_EXPA_DEFAULT_SET = 'X'.                 
000470         LS_SORT-EXPA = 'X'.                                           
000480       ENDIF.                                                          
000490   *     Default setzten (s.o.)                                        
000500       IF LFLG_MODIFY = 'X'.                                           
000510         LS_SORT-COMP = 'X'.                                           
000520       ENDIF.                                                          
000530                                                                       
000540       MODIFY CT_SORT FROM LS_SORT.                                    
000550     ENDLOOP.

Similar Messages

  • How to find subtotals in alv

    hi ,
    i need to find subtotals in alv
    Please suggest me on how to proceed on this.
    Any sample code would be appreciated.
    thanks n regards,
    kalyan

    Hi Kalyan,
    Try this sample code. It may help you.
    the code below produces alv display with 2 columns: field1 & field2.
    field1 is character based & the int. table passed to the alv is sorted on this field.
    field2 is numeric, whose subtotals are desired.
    so while populating the gt_sort table the option gs_sort-subtot is set for field1 bcoz the subtotals are to be based on the groups existing in this column.whereas the same option is NOT set for field2, even though the subtotal appears in that column.i have marked these 2 statements in the code for your convenience.
    execute the code below & you will surely understand what i said above.
    bye!!
    report zalv10.
    type-pools: slis.
    data: g_repid like sy-repid,
    gs_print type slis_print_alv,
    gt_list_top_of_page type slis_t_listheader,
    gt_events type slis_t_event,
    gt_sort type slis_t_sortinfo_alv,
    gs_layout type slis_layout_alv,
    gt_fieldcat type slis_t_fieldcat_alv,
    fieldcat_ln like line of gt_fieldcat,
    col_pos type i.
    data: begin of itab,
    field1(5) type c,
    field2(5) type c,
    field3(5) type p decimals 2,
    end of itab.
    data: begin of itab1 occurs 0.
    include structure itab.
    data: end of itab1.
    data: begin of itab_fieldcat occurs 0.
    include structure itab.
    data: end of itab_fieldcat.
    Print Parameters
    parameters:
    p_print as checkbox default ' ', "PRINT IMMEDIATE
    p_nosinf as checkbox default 'X', "NO SELECTION INFO
    p_nocove as checkbox default ' ', "NO COVER PAGE
    p_nonewp as checkbox default ' ', "NO NEW PAGE
    p_nolinf as checkbox default 'X', "NO PRINT LIST INFO
    p_reserv type i. "NO OF FOOTER LINE
    initialization.
    g_repid = sy-repid.
    perform print_build using gs_print. "Print PARAMETERS
    start-of-selection.
    TEST DATA
    move 'TEST1' to itab1-field1.
    move 'TEST1' to itab1-field2.
    move '10.00' to itab1-field3.
    append itab1.
    move 'TEST2' to itab1-field1.
    move 'TEST2' to itab1-field2.
    move '20.00' to itab1-field3.
    append itab1.
    do 50 times.
    append itab1.
    enddo.
    end-of-selection.
    perform build.
    perform eventtab_build changing gt_events.
    perform comment_build changing gt_list_top_of_page.
    perform call_alv.
    form build.
    DATA FIELD CATALOG
    Explain Field Description to ALV
    data: fieldcat_in type slis_fieldcat_alv.
    clear fieldcat_in.
    fieldcat_ln-fieldname = 'FIELD1'.
    fieldcat_ln-tabname = 'ITAB1'.
    *FIELDCAT_LN-NO_OUT = 'X'. "FIELD NOT DISPLAY, CHOOSE FROM LAYOUT
    fieldcat_ln-key = ' '. "SUBTOTAL KEY
    fieldcat_ln-no_out = ' '.
    fieldcat_ln-seltext_l = 'HEAD1'.
    append fieldcat_ln to gt_fieldcat.
    clear fieldcat_in.
    fieldcat_ln-fieldname = 'FIELD2'.
    fieldcat_ln-tabname = 'ITAB1'.
    fieldcat_ln-no_out = 'X'.
    fieldcat_ln-seltext_l = 'HEAD2'.
    append fieldcat_ln to gt_fieldcat.
    clear fieldcat_in.
    fieldcat_ln-fieldname = 'FIELD3'.
    fieldcat_ln-tabname = 'ITAB1'.
    fieldcat_ln-ref_fieldname = 'MENGE'. "<- REF FIELD IN THE DICTIONNARY
    fieldcat_ln-ref_tabname = 'MSEG'. "<- REF TABLE IN THE DICTIONNARY
    fieldcat_ln-no_out = ' '.
    fieldcat_ln-do_sum = 'X'. "SUM UPON DISPLAY
    append fieldcat_ln to gt_fieldcat.
    DATA SORTING AND SUBTOTAL
    data: gs_sort type slis_sortinfo_alv.
    clear gs_sort.
    gs_sort-fieldname = 'FIELD1'.
    gs_sort-spos = 1.
    gs_sort-up = 'X'.
    gs_sort-subtot = 'X'.
    ***CRUCIAL STATEMENT****
    append gs_sort to gt_sort.
    clear gs_sort.
    gs_sort-fieldname = 'FIELD2'.
    gs_sort-spos = 2.
    gs_sort-up = 'X'.
    *GS_SORT-SUBTOT = 'X'. **THIS SHOULD NOT BE UNCOMENTED*
    append gs_sort to gt_sort.
    endform.
    form call_alv.
    ABAP List Viewer
    call function 'REUSE_ALV_LIST_DISPLAY'
    exporting
    I_INTERFACE_CHECK = ' '
    I_BYPASSING_BUFFER =
    I_BUFFER_ACTIVE = ' '
    i_callback_program = g_repid
    I_CALLBACK_PF_STATUS_SET = ' '
    I_CALLBACK_USER_COMMAND = ' '
    i_structure_name = 'ITAB1'
    is_layout = gs_layout
    it_fieldcat = gt_fieldcat[]
    IT_EXCLUDING =
    IT_SPECIAL_GROUPS =
    it_sort = gt_sort[]
    IT_FILTER =
    IS_SEL_HIDE =
    I_DEFAULT = 'X'
    I_SAVE = ' '
    IS_VARIANT =
    it_events = gt_events[]
    IT_EVENT_EXIT =
    is_print = gs_print
    IS_REPREP_ID =
    I_SCREEN_START_COLUMN = 0
    I_SCREEN_START_LINE = 0
    I_SCREEN_END_COLUMN = 0
    I_SCREEN_END_LINE = 0
    IMPORTING
    E_EXIT_CAUSED_BY_CALLER =
    ES_EXIT_CAUSED_BY_USER =
    tables
    t_outtab = itab1
    exceptions
    program_error = 1
    others = 2.
    endform.
    HEADER FORM
    form eventtab_build changing lt_events type slis_t_event.
    constants:
    gc_formname_top_of_page type slis_formname value 'TOP_OF_PAGE'.
    *GC_FORMNAME_END_OF_PAGE TYPE SLIS_FORMNAME VALUE 'END_OF_PAGE'.
    data: ls_event type slis_alv_event.
    call function 'REUSE_ALV_EVENTS_GET'
    exporting
    i_list_type = 0
    importing
    et_events = lt_events.
    read table lt_events with key name = slis_ev_top_of_page
    into ls_event.
    if sy-subrc = 0.
    move gc_formname_top_of_page to ls_event-form.
    append ls_event to lt_events.
    endif.
    define END_OF_PAGE event
    READ TABLE LT_EVENTS WITH KEY NAME = SLIS_EV_END_OF_PAGE
    INTO LS_EVENT.
    IF SY-SUBRC = 0.
    MOVE GC_FORMNAME_END_OF_PAGE TO LS_EVENT-FORM.
    APPEND LS_EVENT TO LT_EVENTS.
    ENDIF.
    endform.
    form comment_build changing gt_top_of_page type slis_t_listheader.
    data: gs_line type slis_listheader.
    clear gs_line.
    gs_line-typ = 'H'.
    gs_line-info = 'HEADER 1'.
    append gs_line to gt_top_of_page.
    clear gs_line.
    gs_line-typ = 'S'.
    gs_line-key = 'STATUS 1'.
    gs_line-info = 'INFO 1'.
    append gs_line to gt_top_of_page.
    gs_line-key = 'STATUS 2'.
    gs_line-info = 'INFO 2'.
    append gs_line to gt_top_of_page.
    CLEAR GS_LINE.
    GS_LINE-TYP = 'A'.
    GS_LINE-INFO = 'ACTION'.
    APPEND GS_LINE TO GT_TOP_OF_PAGE.
    endform.
    form top_of_page.
    call function 'REUSE_ALV_COMMENTARY_WRITE'
    exporting
    it_list_commentary = gt_list_top_of_page.
    write: sy-datum, 'Page No', sy-pagno left-justified.
    endform.
    form end_of_page.
    write at (sy-linsz) sy-pagno centered.
    endform.
    PRINT SETTINGS
    form print_build using ls_print type slis_print_alv.
    ls_print-print = p_print. "PRINT IMMEDIATE
    ls_print-no_print_selinfos = p_nosinf. "NO SELECTION INFO
    ls_print-no_coverpage = p_nocove. "NO COVER PAGE
    ls_print-no_new_page = p_nonewp.
    ls_print-no_print_listinfos = p_nolinf. "NO PRINT LIST INFO
    ls_print-reserve_lines = p_reserv.
    endform.

  • How to write code  for totals and subtotals in alv programing?

    how to write code  for totals and subtotals in alv programing?

    hi,
    1. <u><b>TOTAL.</b></u>
    http://www.sapdevelopment.co.uk/reporting/alv/alvgrid_basic.htm
    2. <u><b>How do I add subtotals</b></u>
    http://www.sapfans.com/forums/viewtopic.php?t=20386
    http://www.sapfans.com/forums/viewtopic.php?t=85191
    http://www.sapfans.com/forums/viewtopic.php?t=88401
    http://www.sapfans.com/forums/viewtopic.php?t=17335
    Regards
    Anver

  • Subtotals in ALV report for ALPHA-NUMERIC field

    Hi Experts,
    I have problem while subtotalling values in ALV report.
    I have 8 fields in my fieldcatalog. Now, I have to do the subtotal based on 3rd field having name 'ABC'. This field is having type CHAR & having lenght 3.
    Now I wanted to do subtotalling for field 7 & 8 as 'NETWR' & 'MENGE' based on 3rd field.
    How we can do the subtotal?

    Hi,
    Refer this code
    *&      Form  sub_display_data
          text
    FORM sub_display_data .
    *--To sort the output through material number
      DATA : lwa_sort TYPE slis_sortinfo_alv.
      DATA : lit_sort TYPE slis_t_sortinfo_alv.
    *--Pass the values to the table
      lwa_sort-fieldname = 'PERNR'.             "Field name in o/p inttable
      lwa_sort-tabname   = 'it_final2'.         "Output Internal table
      lwa_sort-spos      = '1'.                 "Sort  sequence
      lwa_sort-up        = 'X'.                 "Sort in ascending order
      lwa_sort-down      = ' '.                 "Sort in descending order
      lwa_sort-subtot    = 'X'.                 "Subtotal
      APPEND lwa_sort TO lit_sort.
    *--Pass the values to the table
      lwa_sort-fieldname = 'WORKDATE'.          "Field name in o/p inttable
      lwa_sort-tabname   = 'it_final2'.         "Output Internal table
      lwa_sort-spos      = '2'.                 "Sort  sequence
      lwa_sort-up        = 'X'.                 "Sort in ascending order
      lwa_sort-down      = ' '.                 "Sort in descending order
      lwa_sort-subtot    = ' '.                 "Subtotal
      APPEND lwa_sort TO lit_sort.
    *--Pass the values to the table
      lwa_sort-fieldname = 'WEKLY'.             "Field name in o/p inttable
      lwa_sort-tabname   = 'it_final2'.         "Output Internal table
      lwa_sort-spos      = '3'.                 "Sort  sequence
      lwa_sort-up        = 'X'.                 "Sort in ascending order
      lwa_sort-down      = ' '.                 "Sort in descending order
      lwa_sort-subtot    = ' '.                 "Subtotal
      APPEND lwa_sort TO lit_sort.
      wa_layout-colwidth_optimize = 'X'.
      IF NOT it_final2[] IS INITIAL.
    *--Call the function module to display the ALV report
        CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
          EXPORTING
            is_layout          = wa_layout
            i_callback_program = v_repid
            it_fieldcat        = it_fieldcat1[]
            i_default          = c_chk
            i_save             = c_save
            it_sort            = lit_sort
          TABLES
            t_outtab           = it_final2
          EXCEPTIONS
            program_error      = 1
            OTHERS             = 2.
        IF sy-subrc <> 0.
          MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                  WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
        ENDIF.
      ELSE.
    *--Message No data found
        MESSAGE i888 WITH text-017.
        LEAVE LIST-PROCESSING.
      ENDIF.
    ENDFORM.                    " sub_display_data
    Regards,
    Prashant

  • Subtotals in ALV Report

    Hello,
      I am developing a report using ALV FM, i have field catalog(vbeln posnr matnr netpr). i know how to set subtotals using layout settings once after program execution.but i want subtotals to set before execution( i mean that, in coding itself). does any one worked on this before..?if so. plz send some sample code..
    thanks in advance..
    leoiz.

    Hai Komal Rani ,
    As u said that i worked on subtotals in my report but that doesn't give any result to me.As we know that before going to work on subtots we must sum at least one column,then only we can do subtots, similarly i did using do_sum attribute in fieldcatalog table on netprice column.
    then i passed
       s_sort_info-fieldname = 'VBELN'.
       s_sort_info-subtot = 'X'.
       append s_sort_info to t_sort_info.
    then i passed t_sort_info to
        IT_SORT                           = t_sort_info in
    REUSE_ALV_GRID_DISPLAY fm.
    but that doesn't give any result...
    if i did mistake, can u explain once again..?
    leoiz.

  • Display Subtotals on ALV Report W/O changing Layout

    Hi ,
    I need to display subtotals of quantity fields in my output of report ,with corresponding production order by using ALV container,Layout default seetings won't work here because user has to do many operations such as sorting filtering etc ,after displaying the report

    Check these threads out
    http://www.sap-basis-abap.com/sapalv.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/ee/b99d37e188a049e10000009b38f8cf/content.htm
    http://www.sapfans.com/forums/viewtopic.php?t=20386
    http://www.sapfans.com/forums/viewtopic.php?t=85191
    http://www.sapfans.com/forums/viewtopic.php?t=88401
    http://www.sapfans.com/forums/viewtopic.php?t=17335
    DATA SORTING AND SUBTOTAL
    DATA: GS_SORT TYPE SLIS_SORTINFO_ALV.
    CLEAR GS_SORT.
    GS_SORT-FIELDNAME = 'FIELD1'.
    GS_SORT-SPOS = 1.
    GS_SORT-UP = 'X'.
    GS_SORT-SUBTOT = 'X'.
    APPEND GS_SORT TO GT_SORT.
    CLEAR GS_SORT.
    GS_SORT-FIELDNAME = 'FIELD2'.
    GS_SORT-SPOS = 2.
    GS_SORT-UP = 'X'.
    *GS_SORT-SUBTOT = 'X'.
    APPEND GS_SORT TO GT_SORT.
    Regards

  • Runtime error when implementing subtotals in ALV

    Hi,
    I have implement subtotalling in a ALV report program.
    Dump message is:
    Short text
        The current application triggered a termination with a short dump.
    What happened?
        The current application program detected a situation which really
        should not occur. Therefore, a termination with a short dump was
        triggered on purpose by the key word MESSAGE (type X).
    2729           add 1 to ls_lvc_data-col_pos.
    2730
    2731           assign component <ls_fcat>-fieldname
    2732                            of structure <ls_data> to <l_f
    2733           if sy-subrc ne 0.
    >>>>              message x000(0k).
    2735           endif.
    2736
    2737 *... work on average
    2738           if <ls_fcat>-do_sum eq 'C'.
    2739             clear l_entries.
    2740
    2741             assign space to <l_unit>.
    2742             if not <ls_fcat>-cfieldname is initial.
    2743               assign component <ls_fcat>-cfieldname
    2744                      of structure <ls_data> to <l_unit>.
    2745             endif.
    2746             if not <ls_fcat>-qfieldname is initial.
    2747               assign component <ls_fcat>-qfieldname
    2748                      of structure <ls_data> to <l_unit>.
    2749             endif.
    2750
    2751             l_from = ls_grpl-index_from.
    2752             l_to   = ls_grpl-index_to.
    2753             if ls_grpl-index_from is initial
    Edited by: Marc Winston Ng on Apr 4, 2008 11:55 AM
    Edited by: Marc Winston Ng on Apr 4, 2008 11:55 AM

    Hi,
    Just have a look on the following sample code and compare it with your code.
    TABLES : vbak.
    TYPE-POOLS: slis.                      " ALV Global types
    DATA:
      BEGIN OF gt_vbak OCCURS 0,
        vkorg LIKE vbak-vkorg,             " Sales organization
        kunnr LIKE vbak-kunnr,             " Sold-to party
        vbeln LIKE vbak-vbeln,             " Sales document
        netwr LIKE vbak-netwr,             " Net Value of the Sales Order
        waerk LIKE vbak-waerk,             " Document currency
      END OF gt_vbak.
    *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 * INTO CORRESPONDING FIELDS OF TABLE gt_vbak
               FROM vbak
                 UP TO 20 ROWS.
    ENDFORM.                               " F_READ_DATA
         Form  f_display_data
    FORM f_display_data.
      DEFINE m_fieldcat.
        add 1 to ls_fieldcat-col_pos.
        ls_fieldcat-fieldname   = &1.
        ls_fieldcat-ref_tabname = 'VBAK'.
        ls_fieldcat-do_sum      = &2.
        ls_fieldcat-cfieldname  = &3.      "currency unit field name
                                           "(Value set: SPACE, output table field name)
        append ls_fieldcat to lt_fieldcat.
      END-OF-DEFINITION.
      DEFINE m_sort.
        add 1 to ls_sort-spos.
        ls_sort-fieldname = &1.
        ls_sort-up        = 'X'.
        ls_sort-subtot    = &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
    Reward,if useful.
    Thanks,
    Chandu

  • How to do monthwise subtotals in alv

    Hi folks,
    How to do monthwise subtotals for the shipped quantity using alv.
    Please reply urgent
    Thanks in advance
    Rao

    Hi,
    As per the standard SAP, it is not possible to display the subtotal in a different field. The solution is remove the subtotal field from the internal table.
    In the slis_t_sortinfo_alv table pass the kunnr field with subtot = 'X'.
    I hope this will solve your query.
    Reward all useful answers.
    Thank you.

  • How to calculate the subtotals in alv for curr field(bsik-wrbtr)

    I want to calculate subtotal for netamt for every new lifnr(vendor )
    this is my program
    REPORT  Z23PRAC1.
    *& Report  ZRFI_AP_AGING_REPORT
    TABLES : lfa1,lfb1.
    CONSTANTS : gc_linedat(1) TYPE c VALUE 'X',
                gc_duedate(1) TYPE c VALUE 'X',
                gc_koart(1) TYPE c VALUE 'K',
                gc_tname(9) TYPE c VALUE 'GT_OUTPUT'.
    TYPE-POOLS: slis.
    TYPES: BEGIN OF ty_output,
           bukrs    TYPE bsik-bukrs,                  "Company Code
           lifnr    TYPE bsik-lifnr,                  "Vendor Account
           blart    TYPE bsik-blart,                  "Document Type
           name1    TYPE lfa1-name1,                  "Vendor Name
           ktokk    TYPE lfa1-ktokk,                  "Account Group
           belnr    TYPE bsik-belnr,                  "Invoice
           ebeln    TYPE bsik-ebeln,                  "Purchasing Order
           bldat    TYPE bsik-bldat,                  "Document Date
           netdt    TYPE bsega-netdt,                 "Due Date
           wrbtr1   TYPE bsik-wrbtr,                            "Aged 1-30
           wrbtr2   TYPE bsik-wrbtr,                            "Aged 31-60
           wrbtr3   TYPE bsik-wrbtr,                            "Aged 61-90
           wrbtr4   TYPE bsik-wrbtr,                  "Aged Over 90
           grossamt TYPE bsik-wrbtr,                  "Gross Amount Due
           psskt    TYPE regup-psskt,                 "Discount
          netamt(13)   TYPE P decimals 2,                  "Net Amount Due
           NETAMT   TYPE BSIK-WRBTR,
           END OF ty_output.
    TYPES: BEGIN OF ty_vendor1,
           lifnr   TYPE lfa1-lifnr,
           name1   TYPE lfa1-name1,
           ktokk   TYPE lfa1-ktokk,
    END OF ty_vendor1.
    TYPES :BEGIN OF ty_vendor,
          bukrs   TYPE bsik-bukrs,                   "COMPANY CODE
          lifnr   TYPE bsik-lifnr,                   "CUSTOMER ACCOUNT
    END OF ty_vendor.
    TYPES :BEGIN OF ty_ekko,
          bukrs   TYPE ekko-bukrs,                   "COMPANY CODE
          lifnr   TYPE ekko-lifnr,                   "CUSTOMER ACCOUNT
          ebeln    TYPE ekko-ebeln,
    END OF ty_ekko.
    DATA: gt_output   TYPE TABLE OF ty_output,        "OUTPUT TABLE
          gt_lineitem TYPE TABLE OF bapi3008_2,       "LINE ITEMS TABLE
         gt_custdet  TYPE TABLE OF ty_custdet,       "CUSTOMER ACCOUNT VALIDATION
          gt_fieldcat TYPE slis_t_fieldcat_alv,       "FIELD CATALOG
          gt_events   TYPE slis_t_event,              "EVENTS CATALOG
          gt_sort     TYPE slis_t_sortinfo_alv,       "SORT CATALOG
          gt_text_top_of_page TYPE slis_t_listheader, "TOP OF THE PAGE
          gt_vendor1 TYPE TABLE OF ty_vendor1,
          gt_vendor TYPE TABLE OF ty_vendor,
          gt_ekko   TYPE TABLE OF ty_ekko.
    DATA: st_output   TYPE ty_output,                 "OUTPUT WORK AREA
          st_lineitem TYPE bapi3008_2,                "LINE ITEMS WORK AREA
         st_custdet  TYPE ty_custdet,                "CUSTOMER ACCOUNT VALIDATION
          st_faede    TYPE faede,                     "DUE DATE CALCULATION
          st_fieldcat LIKE LINE OF gt_fieldcat,
          st_events   LIKE LINE OF gt_events,
          st_sort     LIKE LINE OF gt_sort,
          st_text_top_of_page LIKE LINE OF gt_text_top_of_page,
          st_vendor1 TYPE ty_vendor1,
          st_vendor TYPE ty_vendor,
          st_ekko   TYPE ty_ekko.
    SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
    SELECT-OPTIONS : s_lifnr FOR lfa1-lifnr,
                     s_bukrs FOR lfb1-bukrs,
                     s_ktokk FOR lfa1-ktokk.
    SELECTION-SCREEN END OF BLOCK b1.
    SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.
    PARAMETERS : p_astid TYPE rfpdo-allgstid DEFAULT sy-datum.
    SELECTION-SCREEN END OF BLOCK b2.
    SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE text-003.
    PARAMETERS: p_summed AS CHECKBOX,
                p_linedt AS CHECKBOX DEFAULT gc_linedat.
    SELECTION-SCREEN END OF BLOCK b3.
    SELECTION-SCREEN BEGIN OF BLOCK b4 WITH FRAME TITLE text-004.
    PARAMETERS: p_docdat AS CHECKBOX,
                p_duedat AS CHECKBOX DEFAULT gc_duedate.
    SELECTION-SCREEN END OF BLOCK b4.
    START-OF-SELECTION.
      SELECT lifnr name1 ktokk FROM lfa1
                                    INTO TABLE gt_vendor1
                                    WHERE lifnr IN s_lifnr.
      SELECT bukrs
               lifnr
               ebeln
               FROM ekko
               INTO TABLE gt_ekko
               WHERE bukrs IN s_bukrs
               AND lifnr IN s_lifnr.
    IF s_bukrs IS NOT INITIAL AND s_lifnr IS NOT INITIAL.
      SELECT bukrs
             lifnr
             FROM lfb1
             INTO TABLE gt_vendor
             WHERE bukrs IN s_bukrs
             AND lifnr IN s_lifnr.
    *LOOP AT GT_OUTPUT INTO ST_OUTPUT.
    *endif.
      LOOP AT gt_vendor INTO st_vendor.
        READ TABLE gt_vendor1 INTO st_vendor1 WITH KEY lifnr = st_vendor-lifnr.
        READ TABLE gt_ekko INTO st_ekko WITH KEY lifnr = st_vendor-lifnr
                                                     bukrs = st_vendor-bukrs.
        CALL FUNCTION 'BAPI_AP_ACC_GETOPENITEMS'
          EXPORTING
            companycode = st_vendor-bukrs
            vendor      = st_vendor-lifnr
            keydate     = p_astid
          TABLES
            lineitems   = gt_lineitem.
        LOOP AT gt_lineitem INTO st_lineitem.
          st_faede-shkzg = st_lineitem-db_cr_ind.
          st_faede-koart = gc_koart.
          st_faede-zfbdt = st_lineitem-bline_date.
          st_faede-zbd1t = st_lineitem-dsct_days1.
          st_faede-zbd2t = st_lineitem-dsct_days2.
          st_faede-zbd3t = st_lineitem-netterms.
          st_faede-rebzg = st_lineitem-inv_ref.
          st_faede-rebzt = st_lineitem-nxt_doctyp.
          st_faede-bldat = st_lineitem-doc_date.
          CALL FUNCTION 'DETERMINE_DUE_DATE'
            EXPORTING
              i_faede                    = st_faede
            IMPORTING
              e_faede                    = st_faede
            EXCEPTIONS
              account_type_not_supported = 1
              OTHERS                     = 2.
          IF sy-subrc <> 0.
            MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
          ENDIF.
          st_output-bukrs = st_vendor-bukrs.
          st_output-lifnr = st_vendor-lifnr.
          st_output-name1 = st_vendor1-name1.
          st_output-ktokk = st_vendor1-ktokk.
          st_output-blart = st_lineitem-doc_type.
          st_output-belnr = st_lineitem-doc_no.
          st_output-ebeln = st_ekko-ebeln.
          st_output-bldat = st_faede-bldat.
          st_output-netdt = st_faede-netdt.
          DATA : lv_date TYPE i.
          IF p_docdat = 'X'.
            lv_date = p_astid - st_output-bldat.
            IF lv_date < 30 .
              st_output-wrbtr1 = st_lineitem-amt_doccur.
            ELSEIF lv_date < 60 .
              st_output-wrbtr2 = st_lineitem-amt_doccur.
            ELSEIF lv_date < 90 .
              st_output-wrbtr3 = st_lineitem-amt_doccur.
            ELSEIF lv_date > 90 .
              st_output-wrbtr4 = st_lineitem-amt_doccur.
            ENDIF.
          ELSE.
            lv_date = p_astid - st_output-bldat.
            IF lv_date < 30 .
              st_output-wrbtr1 = st_lineitem-amt_doccur.
            ELSEIF lv_date < 60 .
              st_output-wrbtr2 = st_lineitem-amt_doccur.
            ELSEIF lv_date < 90 .
              st_output-wrbtr3 = st_lineitem-amt_doccur.
            ELSEIF lv_date > 90 .
              st_output-wrbtr4 = st_lineitem-amt_doccur.
            ENDIF.
          ENDIF.
    DATA :  A TYPE BSIK-WRBTR,
            C TYPE STRING.
          st_output-grossamt = st_output-wrbtr1 +
                               st_output-wrbtr2 +
                               st_output-wrbtr3 +
                               st_output-wrbtr4 .
          A = st_output-grossamt - ( st_output-grossamt * st_output-psskt ) / 100.
          MOVE A TO C.
          MOVE C TO st_output-netamt .
    *st_output-netamt = st_output-grossamt - ( st_output-grossamt * st_output-psskt ) / 100.
          APPEND  st_output TO gt_output.
          CLEAR st_output.
        ENDLOOP.
      ENDLOOP.
    SORT gt_output.
    END-OF-SELECTION.
      PERFORM fill_field_catalog.
      PERFORM fill_event_catalog.
      PERFORM sort_catalog.
      PERFORM display_alv_list.
    *&      Form  fill_field_catalog
          text
    FORM fill_field_catalog .
    *Definition
      DEFINE field_cat.
        st_fieldcat-tabname      = &1.
        st_fieldcat-fieldname    = &2.
        st_fieldcat-ref_tabname  = &3.
        st_fieldcat-seltext_m    = &4.
        st_fieldcat-do_sum       = &5.
          append st_fieldcat to gt_fieldcat.
        clear st_fieldcat.
      END-OF-DEFINITION.
      field_cat gc_tname 'BUKRS' 'BSIK' 'Company Code' ''.
      field_cat 'GT_OUTPUT' 'LIFNR' 'BSIK' 'Customer Account' ''.
      field_cat 'GT_OUTPUT' 'BLART' 'BSIK' 'Document Type' ''.
      field_cat 'GT_OUTPUT' 'NAME1' 'LFA1' 'Vendor Name' ''.
      field_cat 'GT_OUTPUT' 'KTOKK' 'LFA1' 'Account Group' ''.
    field_cat gc_TNAME 'ALLGSTID' 'RFPDO' 'Key Date' ''.
      field_cat gc_tname 'BELNR' 'BSIK' 'Invoice' ''.
      field_cat gc_tname 'EBELN' 'EKKO' 'Purchasing Order' ''.
      field_cat gc_tname 'BLDAT' 'BSIK' 'Document Date' ''.
      field_cat gc_tname 'NETDT' 'BSEGA' 'Due Date' ''.
      field_cat gc_tname 'WRBTR1' 'BSIK' 'Aged 1-30' ''.
      field_cat gc_tname 'WRBTR2' 'BSIK' 'Aged 31-60' ''.
      field_cat gc_tname 'WRBTR3' 'BSIK' 'Aged 61-90' ''.
      field_cat gc_tname 'WRBTR4' 'BSIK' 'Aged Over 90' ''.
      field_cat gc_tname 'GROSSAMT' 'BSIK' 'Gross Amount' ''.
      field_cat gc_tname 'PSSKT' 'REGUP' 'Discount' ''.
      field_cat gc_tname 'NETAMT' 'BSIK' 'Net Amount' 'X' .
    ENDFORM.                    " fill_field_catalog
    *&      Form  fill_event_catalog
          EVENTS FILLING SUBROUTINE TO FIND THE TOP OF THE PAGE EVENT
    FORM fill_event_catalog .
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
        EXPORTING
          i_list_type     = 0
        IMPORTING
          et_events       = gt_events
        EXCEPTIONS
          list_type_wrong = 1
          OTHERS          = 2.
      IF sy-subrc <> 0.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ENDIF.
      READ TABLE gt_events TRANSPORTING NO FIELDS WITH KEY name = 'TOP_OF_PAGE'.
      IF sy-subrc EQ 0.
        st_events-form = 'FILL_HEADER'.
        MODIFY gt_events FROM st_events INDEX sy-tabix TRANSPORTING form.
      ENDIF.
    ENDFORM.                    " fill_event_catalog
    *&      Form  FILL_HEADER
          FILL HEADER DATA
    FORM fill_header .
    st_text_top_of_page-typ = 'S'.
    st_text_top_of_page-info = sy-mandt.
    APPEND st_text_top_of_page TO gt_text_top_of_page.
    st_text_top_of_page-info = sy-uname.
    APPEND st_text_top_of_page TO gt_text_top_of_page.
    WRITE sy-datum TO st_text_top_of_page-info.
    APPEND st_text_top_of_page TO gt_text_top_of_page.
    CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
       EXPORTING
         it_list_commentary = gt_text_top_of_page.
    ENDFORM.                   "fill header
    *&      Form  sort_catalog
          text
    -->  p1        text
    <--  p2        text
    FORM sort_catalog .
      st_sort-up = 'X'.
      st_sort-spos = 1.
      st_sort-subtot = 'X'.
      st_sort-fieldname = 'LIFNR'.
      APPEND st_sort TO Gt_sort.
      CLEAR st_sort.
      st_sort-up = 'X'.
      st_sort-spos = '2'.
      st_sort-subtot = ''.
      st_sort-fieldname = 'NETAMT'.
      APPEND st_sort TO gt_sort.
      CLEAR st_sort.
    ENDFORM.                    " sort_catalog
    *&      Form  display_alv_list
          CREATE THE OUTPUT IN THE ALV LIST FORMAT
    FORM display_alv_list .
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          i_callback_program = sy-repid
          it_fieldcat        = gt_fieldcat
          it_sort            = gt_sort
          i_default          = 'X'
          it_events          = gt_events
        TABLES
          t_outtab           = gt_output
        EXCEPTIONS
          program_error      = 1
          OTHERS             = 2.
      IF sy-subrc <> 0.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ENDIF.
    ENDFORM.                    " display_alv_list

    Hi,
    This is the sample report for ALV SUBTOTAL.
    REPORT  YMS_ALVSUBTOTAL.
    *REPORT z_alv_sub_totals .
    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.
    START-OF-SELECTION.
      PERFORM get_data.
      PERFORM sort_fields.
      PERFORM fill_fieldcat.
      PERFORM list_display.
    *&      Form  GET_DATA
          text
    -->  p1        text
    <--  p2        text
    FORM get_data.
      it_output-var1 = 1000.
      it_output-var2 = 'anupama'.
      it_output-var3 = '10000'.
    it_output-key = 'X'.
      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
    *&      Form  fill_fieldcat
          text
    -->  p1        text
    <--  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
    *&      Form  fill_fields
          text
         -->P_0146   text
         -->P_0147   text
         -->P_0148   text
         -->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
    *&      Form  list_display
          text
    -->  p1        text
    <--  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 <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    ENDFORM.                    " list_display
    *&      Form  sort_fields
          text
    -->  p1        text
    <--  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
    Thanks,
    Sankar M

  • IN ALV HOW WE CAN TOTALS AND SUBTOTALS?

    HI EXPERTS?
    IN ALV HOW WE CAN TOTALS AND SUBTOTALS?

    Hi
    FOR DISPLAYING TOTALA AND SUBTOTALS IN ALV USE THIS:
    data: wa_fieldcat type slis_fieldcat_alv,
          it_fieldcat type slis_t_fieldcat_alv.
    data: wa_sort type slis_sortinfo_alv,
          it_sort type slis_t_sortinfo_alv.
    wa_fieldcat-do_sum = 'X'.
    append wa_fieldcat to it_fieldcat.
    wa_sort-fieldname = 'KUNNR'.
    wa_sort-tabname = 'IT_FINAL'.
    wa_sort-subtot = 'X'.
    append wa_sort to it_sort.
    AN EXAMPLE RELATED TO IT:
    This ALV program have all the basic report requirements such as page heading, page no, sub-total and a grand total.
    This is a basic ALV with the followings:-
    - Page Heading
    - Page No
    - Sub-Total
    - Grand Total
    REPORT ZALV.
    TYPE-POOLS: SLIS.
    DATA: G_REPID LIKE SY-REPID,
    GS_PRINT            TYPE SLIS_PRINT_ALV,
    GT_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER,
    GT_EVENTS           TYPE SLIS_T_EVENT,
    GT_SORT             TYPE SLIS_T_SORTINFO_ALV,
    GS_LAYOUT           TYPE SLIS_LAYOUT_ALV,
    GT_FIELDCAT         TYPE SLIS_T_FIELDCAT_ALV,
    FIELDCAT_LN LIKE LINE OF GT_FIELDCAT,
    COL_POS TYPE I.
    DATA: BEGIN OF ITAB,
      FIELD1(5) TYPE C,
      FIELD2(5) TYPE C,
      FIELD3(5) TYPE P DECIMALS 2,
    END OF ITAB.
    DATA: BEGIN OF ITAB1 OCCURS 0.
      INCLUDE STRUCTURE ITAB.
    DATA: END OF ITAB1.
    DATA: BEGIN OF ITAB_FIELDCAT OCCURS 0.
      INCLUDE STRUCTURE ITAB.
    DATA: END OF ITAB_FIELDCAT.
    Print Parameters
    PARAMETERS:
                P_PRINT  AS CHECKBOX DEFAULT ' ', "PRINT IMMEDIATE
                P_NOSINF AS CHECKBOX DEFAULT 'X', "NO SELECTION INFO
                P_NOCOVE AS CHECKBOX DEFAULT ' ', "NO COVER PAGE
                P_NONEWP AS CHECKBOX DEFAULT ' ', "NO NEW PAGE
                P_NOLINF AS CHECKBOX DEFAULT 'X', "NO PRINT LIST INFO
                P_RESERV TYPE I.                  "NO OF FOOTER LINE
    INITIALIZATION.
    G_REPID = SY-REPID.
    PERFORM PRINT_BUILD    USING GS_PRINT.      "Print PARAMETERS
    START-OF-SELECTION.
    TEST DATA
    MOVE 'TEST1' TO ITAB1-FIELD1.
    MOVE 'TEST1' TO ITAB1-FIELD2.
    MOVE '10.00' TO ITAB1-FIELD3.
    APPEND ITAB1.
    MOVE 'TEST2' TO ITAB1-FIELD1.
    MOVE 'TEST2' TO ITAB1-FIELD2.
    MOVE '20.00' TO ITAB1-FIELD3.
    APPEND ITAB1.
    DO 50 TIMES.
      APPEND ITAB1.
    ENDDO.
    END-OF-SELECTION.
    PERFORM BUILD.
    PERFORM EVENTTAB_BUILD CHANGING GT_EVENTS.
    PERFORM COMMENT_BUILD  CHANGING GT_LIST_TOP_OF_PAGE.
    PERFORM CALL_ALV.
    FORM BUILD.
    DATA FIELD CATALOG
    Explain Field Description to ALV
    DATA: FIELDCAT_IN TYPE SLIS_FIELDCAT_ALV.
    CLEAR FIELDCAT_IN.
    FIELDCAT_LN-FIELDNAME = 'FIELD1'.
    FIELDCAT_LN-TABNAME   = 'ITAB1'.
    *FIELDCAT_LN-NO_OUT    = 'X'.  "FIELD NOT DISPLAY, CHOOSE FROM LAYOUT
    FIELDCAT_LN-KEY       = ' '.   "SUBTOTAL KEY
    FIELDCAT_LN-NO_OUT    = ' '.
    FIELDCAT_LN-SELTEXT_L = 'HEAD1'.
    APPEND FIELDCAT_LN TO GT_FIELDCAT.
    CLEAR FIELDCAT_IN.
    FIELDCAT_LN-FIELDNAME = 'FIELD2'.
    FIELDCAT_LN-TABNAME   = 'ITAB1'.
    FIELDCAT_LN-NO_OUT    = 'X'.
    FIELDCAT_LN-SELTEXT_L = 'HEAD2'.
    APPEND FIELDCAT_LN TO GT_FIELDCAT.
    CLEAR FIELDCAT_IN.
    FIELDCAT_LN-FIELDNAME     = 'FIELD3'.
    FIELDCAT_LN-TABNAME       = 'ITAB1'.
    FIELDCAT_LN-REF_FIELDNAME = 'MENGE'. "<- REF FIELD IN THE DICTIONNARY
    FIELDCAT_LN-REF_TABNAME   = 'MSEG'.  "<- REF TABLE IN THE DICTIONNARY
    FIELDCAT_LN-NO_OUT        = ' '.
    FIELDCAT_LN-DO_SUM        = 'X'.   "SUM UPON DISPLAY
    APPEND FIELDCAT_LN TO GT_FIELDCAT.
    DATA SORTING AND SUBTOTAL
    DATA: GS_SORT TYPE SLIS_SORTINFO_ALV.
    CLEAR GS_SORT.
    GS_SORT-FIELDNAME = 'FIELD1'.
    GS_SORT-SPOS      = 1.
    GS_SORT-UP        = 'X'.
    GS_SORT-SUBTOT    = 'X'.
    APPEND GS_SORT TO GT_SORT.
    CLEAR GS_SORT.
    GS_SORT-FIELDNAME = 'FIELD2'.
    GS_SORT-SPOS      = 2.
    GS_SORT-UP        = 'X'.
    *GS_SORT-SUBTOT    = 'X'.
    APPEND GS_SORT TO GT_SORT.
    ENDFORM.
    FORM CALL_ALV.
    ABAP List Viewer
    CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
    EXPORTING
    I_INTERFACE_CHECK = ' '
    I_BYPASSING_BUFFER =
    I_BUFFER_ACTIVE = ' '
    I_CALLBACK_PROGRAM = G_REPID
    I_CALLBACK_PF_STATUS_SET = ' '
    I_CALLBACK_USER_COMMAND = ' '
    I_STRUCTURE_NAME = 'ITAB1'
    IS_LAYOUT =  GS_LAYOUT
    IT_FIELDCAT = GT_FIELDCAT[]
    IT_EXCLUDING =
    IT_SPECIAL_GROUPS =
      IT_SORT = GT_SORT[]
    IT_FILTER =
    IS_SEL_HIDE =
    I_DEFAULT = 'X'
    I_SAVE = ' '
    IS_VARIANT =
      IT_EVENTS = GT_EVENTS[]
    IT_EVENT_EXIT =
      IS_PRINT = GS_PRINT
    IS_REPREP_ID =
    I_SCREEN_START_COLUMN = 0
    I_SCREEN_START_LINE = 0
    I_SCREEN_END_COLUMN = 0
    I_SCREEN_END_LINE = 0
    IMPORTING
    E_EXIT_CAUSED_BY_CALLER =
    ES_EXIT_CAUSED_BY_USER =
    TABLES
    T_OUTTAB = ITAB1
    EXCEPTIONS
    PROGRAM_ERROR = 1
    OTHERS = 2.
    ENDFORM.
    HEADER FORM
    FORM EVENTTAB_BUILD CHANGING LT_EVENTS TYPE SLIS_T_EVENT.
    CONSTANTS:
    GC_FORMNAME_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE'.
    *GC_FORMNAME_END_OF_PAGE TYPE SLIS_FORMNAME VALUE 'END_OF_PAGE'.
      DATA: LS_EVENT TYPE SLIS_ALV_EVENT.
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
           EXPORTING
                I_LIST_TYPE = 0
           IMPORTING
                ET_EVENTS   = LT_EVENTS.
      READ TABLE LT_EVENTS WITH KEY NAME =  SLIS_EV_TOP_OF_PAGE
                               INTO LS_EVENT.
      IF SY-SUBRC = 0.
        MOVE GC_FORMNAME_TOP_OF_PAGE TO LS_EVENT-FORM.
        APPEND LS_EVENT TO LT_EVENTS.
      ENDIF.
    define END_OF_PAGE event
    READ TABLE LT_EVENTS WITH KEY NAME =  SLIS_EV_END_OF_PAGE
                             INTO LS_EVENT.
    IF SY-SUBRC = 0.
      MOVE GC_FORMNAME_END_OF_PAGE TO LS_EVENT-FORM.
      APPEND LS_EVENT TO LT_EVENTS.
    ENDIF.
    ENDFORM.
    FORM COMMENT_BUILD CHANGING GT_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER.
      DATA: GS_LINE TYPE SLIS_LISTHEADER.
      CLEAR GS_LINE.
      GS_LINE-TYP  = 'H'.
      GS_LINE-INFO = 'HEADER 1'.
      APPEND GS_LINE TO GT_TOP_OF_PAGE.
      CLEAR GS_LINE.
      GS_LINE-TYP  = 'S'.
      GS_LINE-KEY  = 'STATUS 1'.
      GS_LINE-INFO = 'INFO 1'.
      APPEND GS_LINE TO GT_TOP_OF_PAGE.
      GS_LINE-KEY  = 'STATUS 2'.
      GS_LINE-INFO = 'INFO 2'.
      APPEND GS_LINE TO GT_TOP_OF_PAGE.
    CLEAR GS_LINE.
    GS_LINE-TYP  = 'A'.
    GS_LINE-INFO = 'ACTION'.
    APPEND GS_LINE TO  GT_TOP_OF_PAGE.
    ENDFORM.
    FORM TOP_OF_PAGE.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
           EXPORTING
                IT_LIST_COMMENTARY = GT_LIST_TOP_OF_PAGE.
      WRITE: SY-DATUM, 'Page No', SY-PAGNO LEFT-JUSTIFIED.
    ENDFORM.
    FORM END_OF_PAGE.
      WRITE at (sy-linsz) sy-pagno CENTERED.
    ENDFORM.
    PRINT SETTINGS
    FORM PRINT_BUILD USING LS_PRINT TYPE SLIS_PRINT_ALV.
      LS_PRINT-PRINT              = P_PRINT.  "PRINT IMMEDIATE
      LS_PRINT-NO_PRINT_SELINFOS  = P_NOSINF. "NO SELECTION INFO
      LS_PRINT-NO_COVERPAGE       = P_NOCOVE. "NO COVER PAGE
      LS_PRINT-NO_NEW_PAGE        = P_NONEWP.
      LS_PRINT-NO_PRINT_LISTINFOS = P_NOLINF. "NO PRINT LIST INFO
      LS_PRINT-RESERVE_LINES      = P_RESERV.
    ENDFORM.
    thnx
    Sravani
    Plz reward if useful

  • ALV Subtotals calculation - Urgent

    Hi All,
      How can I caliculate subtotals in ALV ?
      How to increase column size in alv?
    Regards

    Hi,
    Refer this code
    *&      Form  sub_display_data
          text
    FORM sub_display_data .
    *--To sort the output through material number
      DATA : lwa_sort TYPE slis_sortinfo_alv.
      DATA : lit_sort TYPE slis_t_sortinfo_alv.
    *--Pass the values to the table
      lwa_sort-fieldname = 'PERNR'.             "Field name in o/p inttable
      lwa_sort-tabname   = 'it_final2'.         "Output Internal table
      lwa_sort-spos      = '1'.                 "Sort  sequence
      lwa_sort-up        = 'X'.                 "Sort in ascending order
      lwa_sort-down      = ' '.                 "Sort in descending order
      lwa_sort-subtot    = 'X'.                 "Subtotal
      APPEND lwa_sort TO lit_sort.
    *--Pass the values to the table
      lwa_sort-fieldname = 'WORKDATE'.          "Field name in o/p inttable
      lwa_sort-tabname   = 'it_final2'.         "Output Internal table
      lwa_sort-spos      = '2'.                 "Sort  sequence
      lwa_sort-up        = 'X'.                 "Sort in ascending order
      lwa_sort-down      = ' '.                 "Sort in descending order
      lwa_sort-subtot    = ' '.                 "Subtotal
      APPEND lwa_sort TO lit_sort.
    *--Pass the values to the table
      lwa_sort-fieldname = 'WEKLY'.             "Field name in o/p inttable
      lwa_sort-tabname   = 'it_final2'.         "Output Internal table
      lwa_sort-spos      = '3'.                 "Sort  sequence
      lwa_sort-up        = 'X'.                 "Sort in ascending order
      lwa_sort-down      = ' '.                 "Sort in descending order
      lwa_sort-subtot    = ' '.                 "Subtotal
      APPEND lwa_sort TO lit_sort.
      wa_layout-colwidth_optimize = 'X'.       to increase collumn length
      IF NOT it_final2[] IS INITIAL.
    *--Call the function module to display the ALV report
        CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
          EXPORTING
            is_layout          = wa_layout
            i_callback_program = v_repid
            it_fieldcat        = it_fieldcat1[]
            i_default          = c_chk
            i_save             = c_save
            it_sort            = lit_sort
          TABLES
            t_outtab           = it_final2
          EXCEPTIONS
            program_error      = 1
            OTHERS             = 2.
        IF sy-subrc <> 0.
          MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                  WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
        ENDIF.
      ELSE.
    *--Message No data found
        MESSAGE i888 WITH text-017.
        LEAVE LIST-PROCESSING.
      ENDIF.
    ENDFORM.                    " sub_display_data
    Regards,
    Prashant

  • ALV Subtotals Description

    Hi,
    Can you please tell how to write subtotal text in ALV Report.
    770016     MTNL Gas     770018143     KGST     7/24/2005     DG     -157.77
    770016     MTNL Gas     770018203     KGST     7/24/2005     DG     -1,354.75
    770016     MTNL Gas     770018219     KGST     7/24/2005     DG     -499.26
    770016     MTNL Gas     770018220     KGST     7/17/2005     DG     -609.34
    770016     MTNL Gas     770018253     KGST     7/24/2005     DG     -332.84
    770016     MTNL Gas     770018257     KGST     7/24/2005     DG     -630.05
    770016     MTNL Gas     770018299     KGST     7/31/2005     DG     -158.01
    770016     A/R Open Balances                     (3,742.02)
    770016     Unapplied Customer Credits     3,742.02                 
    Please let me know how to write description <b>A/R Open</b> <b>Balances(Debit)</b> and <b>Unapplied Customer</b> <b>Credits(Credit)</b> for the subtotals in ALV.
    Thanks in advance.
    Regards,
    Baba.

    hi
    try this out this may help u.............
    populate Table IT_SORT with the sort criteria for the different fields.
    sorting and subtotaling are specified by the caller in the internal table I_SORT.
    call this function and mention the fields.

  • Modify Subtotals ALV

    hi all,
    I want to modify  subtotals in alv OO, somebody knows how can i do that?
    regards.
    Thanks.

    Hi,
    While modifying field catalog , try the following.
    Field-symbols: <lfs_fieldcat> TYPE lvc_s_fcat.
    LOOP AT i_fieldcat ASSIGNING <lfs_fieldcat>.
    CASE <lfs_fieldcat>-fieldname.
    WHEN 'LOSGR'.
    <lfs_fieldcat>-coltext = text-007.
    <lfs_fieldcat>-do_sum = c_x.
    ENDCASE.
    ENDLOOP.
    Or if you want to use field symbols.
    data: total type ref to data,
    subtotal1 type ref to data.
    field-symbols <total> like gt_sflight.
    field-symbols <subtotal1> like gt_sflight.
    call method grid1->get_subtotals
    importing
    ep_collect00 = total
    ep_collect01 = subtotal1.
    assign total->* to <total>.
    assign subtotal1->* to <subtotal1>.
    Hope this helps.
    Thanks
    Arun kayal

  • How to accumlate and use sort in ALV

    Hi
    I am using collect statement for accumalation.
    but it is not working.
    the code is like this:
      IF NOT p_otrstk  IS INITIAL.
        CLEAR it_zresult_tab1.
        LOOP AT it_mard_tab INTO wa_mard_tab.
          l_tabix = sy-tabix.
          READ TABLE it_zresult_tab1 INTO wa_zresult_tab1
            WITH KEY lgort = s_lgort1
                     lgort = s_lgort2
                     werks = s_werks
                     matnr = s_matnr.
          IF sy-subrc EQ 0.
            wa_zresult_tab1-speme = wa_mard_tab-speme.
            wa_zresult_tab1-umlme = wa_mard_tab-umlme.
            wa_zresult_tab1-insme = wa_mard_tab-insme.
            wa_zresult_tab1-retme = wa_mard_tab-retme.
            COLLECT wa_zresult_tab1 INTO it_zresult_tab1.
          ENDIF.
        ENDLOOP.
      ENDIF.
    do i need to use modify? but it is with modify it is giving dump.
    and how to do subtotals in ALV grid?
    the code is like this:
      IF grid1 IS INITIAL .
    Instantiate the grid container.
        CREATE OBJECT g_custom_container
        EXPORTING container_name = 'CCCONTAINER'.
    *Instantiate the grid itself within the container.
        CREATE OBJECT grid1
        EXPORTING
        i_parent = g_custom_container.
       i_appl_events = 'X'.
    Call method of grid1 class object to build/display the grid.
        CALL METHOD grid1->set_table_for_first_display
        EXPORTING
             i_structure_name = 'ZRESULT_TAB'
             is_variant =  variant
            i_save = 'U'
            is_layout = gs_layout
        CHANGING
            it_outtab = it_zresult_tab
            it_fieldcatalog = gt_fcat
            IT_SORT  = VT_SORT
        EXCEPTIONS
            invalid_parameter_combination = 1
            program_error = 2
            too_many_lines = 3
            OTHERS = 4
        IF sy-subrc <> 0.
          MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
          WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
        ENDIF.
    and in the fieldcatalog
    IF p_some  = 'X'.
      CLEAR: ls_sort.
       t_fcat-no_out     = 'X'.
         ls_sort-fieldname = 'MATNR'.
        ls_sort-subtot    = 'X'.
        APPEND ls_sort TO vt_sort.
    but this is also not working.
    Please help me.....
    Thanks
    Alekhya

    Hi,
    go thru this sample program which uses sort and sums the data
    report  yalv2  .
    declare data areas for listviewer******************
    type-pools:slis.
    data:g_repid like sy-repid,
    gs_layout type slis_layout_alv,
    gt_fieldcat type slis_t_fieldcat_alv,
    fieldcat_ln type slis_fieldcat_alv,
    gt_sort type slis_t_sortinfo_alv,
    gs_sort type slis_sortinfo_alv,
    gt_events type slis_t_event,
    gs_event type slis_alv_event,
    gt_list_top_of_page type slis_t_listheader,
    gs_line type slis_listheader,
    col_pos type i.
    data:begin of itab,
    field1(5) type c,
    field2(5) type c,
    field3(5) type p decimals 2,
    end of itab.
    data:begin of itab1 occurs 0.
            include structure itab.
    data:end of itab1.
    data:begin of itab_fieldcat occurs 0.
            include structure itab.
    data:end of itab_fieldcat.
    initialization.
      g_repid = sy-repid.
    start-of-selection.
      move 'test1' to itab1-field1.
      move 'test1' to itab1-field2.
      move '10.00' to itab1-field3.
      append itab1.
      move 'test2' to itab1-field1.
      move 'test2' to itab1-field2.
      move '20.00' to itab1-field3.
      append itab1.
      do 200 times.
        append itab1.
      enddo.
    end-of-selection.
      <b>perform build_fieldcat.</b> 
      <b>perform build_sortcat.</b>
      perform build_eventcat changing gt_events.
      perform build_commentcat changing gt_list_top_of_page.
      perform call_alv.
    *&      Form  build_fieldcat
          text
    -->  p1        text
    <--  p2        text
    form build_fieldcat .         "data field catalog, explain field desc
                                      "to alv
      fieldcat_ln-fieldname = 'FIELD1'.
      fieldcat_ln-tabname = 'ITAB1'.
      fieldcat_ln-key = ' '.                          "subtotal key
      fieldcat_ln-no_out = ' '.
      fieldcat_ln-seltext_l = 'HEAD1'.
      append fieldcat_ln to gt_fieldcat.
      fieldcat_ln-fieldname = 'FIELD2'.
      fieldcat_ln-tabname = 'ITAB1'.
      fieldcat_ln-no_out = ' '.
      fieldcat_ln-seltext_l = 'HEAD2'.
      append fieldcat_ln to gt_fieldcat.
      fieldcat_ln-fieldname = 'FIELD3'.
      fieldcat_ln-tabname = 'ITAB1'.
      fieldcat_ln-ref_tabname = 'MSEG'.
      fieldcat_ln-ref_fieldname = 'MENGE'.
      fieldcat_ln-no_out = ' '.
      fieldcat_ln-do_sum = 'X'.                       "sum upon display
      append fieldcat_ln to gt_fieldcat.
    endform.                    " build_fieldcat
    *&      Form  build_sortcat
          text
    -->  p1        text
    <--  p2        text
    form build_sortcat .           "data sorting and displaying subtotal
      clear gs_sort.
      gs_sort-fieldname = 'FIELD1'.
      gs_sort-spos = '1'.
      gs_sort-up = 'X'.
      append gs_sort to gt_sort.
      clear gs_sort.
      gs_sort-fieldname = 'FIELD2'.
      gs_sort-spos = '2'.
      gs_sort-up = 'X'.
      append gs_sort to gt_sort.
    endform.                    " build_sortcat
    *&      Form  build_eventcat
          text
         <--P_GT_EVENTS  text
    form build_eventcat  changing lt_events type slis_t_event.
    constants:
    gc_formname_top_of_page type slis_formname value 'TOP-OF-PAGE'.
    call function 'REUSE_ALV_EVENTS_GET'
    EXPORTING
       I_LIST_TYPE           = 0
    IMPORTING
       ET_EVENTS             = lt_events
    read table lt_events with key name = slis_ev_top_of_page into gs_event.
    if sy-subrc = 0.
    move gc_formname_top_of_page to gs_event-form.
    append gs_event to lt_events.
    endif.
    endform.                    " build_eventcat
    *&      Form  build_commentcat
          text
         <--P_GT_LIST_TOP_OF_PAGE  text
    form build_commentcat  changing gt_top_of_page type slis_t_listheader.
    clear gs_line.
    gs_line-typ = 'H'.
    gs_line-info = 'HEADER 1'.
    append gs_line to gt_top_of_page.
    clear gs_line.
    gs_line-typ = 'S'.
    gs_line-key = 'STATUS 1'.
    gs_line-info = 'INFO 1'.
    append gs_line to gt_top_of_page.
    clear gs_line.
    gs_line-typ = 'S'.
    gs_line-key = 'STATUS 2'.
    gs_line-info = 'INFO 2'.
    append gs_line to gt_top_of_page.
    endform.                    " build_commentcat
    form top_of_page.
    call function 'REUSE_ALV_COMMENTARY_WRITE'
      exporting
        it_list_commentary       = gt_list_top_of_page.
    write: sy-datum, 'Page no', sy-pagno left-justified.
    endform.
    form end-of-page.
    write at (sy-linsz) sy-pagno centered.
    endform.
    *&      Form  call_alv
          text
    -->  p1        text
    <--  p2        text
    form call_alv .
    call function 'REUSE_ALV_LIST_DISPLAY'
    EXPORTING
       I_CALLBACK_PROGRAM             = g_repid
       I_STRUCTURE_NAME               = 'ITAB1'
       IS_LAYOUT                      = gs_layout
       IT_FIELDCAT                    = gt_fieldcat
       IT_SORT                        = gt_sort
       IT_EVENTS                      = gt_events
      tables
        t_outtab                       = ITAB1
    endform.                    " call_alv
    Regards,
    Sowjanya.
    Message was edited by: sowjanya suggula

  • ALV Display - sub totals

    hi gurus,
    In my report program i have a monthly report displaying the data for that month.
    1. Now in my ALV grid i want The SUB-TOTALS for the work center wise data for a field of the alv.  there are many workcenters data in my report.  So after the end of each work center , i want the subtotal of a calculated TAT field.
    2. At the end of the report, I want the average TAT(field calculated by my report program) for that month.
    So how can i make the coding for the above.
    Iam a fresher to this field, so give me in detail.
    regards,
    chaitanya

    Hi
    i am giving a sample example for subtotals of alv.
    REPORT z_alv_subtotal.
    *& Table declaration
    TABLES: EKKO.
    *& Type pool declaration
    TYPE-POOLS: SLIS. " Type pool for ALV
    *& Selection screen
    SELECT-OPTIONS: S_EBELN FOR EKKO-EBELN.
    *& Type declaration
    Type declaration for internal table to store EKPO data
    TYPES: BEGIN OF X_DATA,
    EBELN TYPE CHAR30, " Document no.
    EBELP TYPE EBELP, " Item no
    MATNR TYPE MATNR, " Material no
    MATNR1 TYPE MATNR, " Material no
    WERKS TYPE WERKS_D, " Plant
    WERKS1 TYPE WERKS_D, " Plant
    NTGEW TYPE ENTGE, " Net weight
    GEWE TYPE EGEWE, " Unit of weight
    END OF X_DATA.
    *& Internal table declaration
    DATA:
    Internal table to store EKPO data
    I_EKPO TYPE STANDARD TABLE OF X_DATA INITIAL SIZE 0,
    Internal table for storing field catalog information
    I_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
    Internal table for Top of Page info. in ALV Display
    I_ALV_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER,
    Internal table for ALV Display events
    I_EVENTS TYPE SLIS_T_EVENT,
    Internal table for storing ALV sort information
    I_SORT TYPE SLIS_T_SORTINFO_ALV,
    I_EVENT TYPE SLIS_T_EVENT.
    *& Work area declaration
    DATA:
    WA_EKKO TYPE X_DATA,
    WA_LAYOUT TYPE SLIS_LAYOUT_ALV,
    WA_EVENTS TYPE SLIS_ALV_EVENT,
    WA_SORT TYPE SLIS_SORTINFO_ALV.
    *& Constant declaration
    CONSTANTS:
    C_HEADER TYPE CHAR1
    VALUE 'H', "Header in ALV
    C_ITEM TYPE CHAR1
    VALUE 'S'.
    *& Start-of-selection event
    START-OF-SELECTION.
    Select data from ekpo
    SELECT EBELN " Doc no
    EBELP " Item
    MATNR " Material
    MATNR " Material
    WERKS " Plant
    WERKS " Plant
    NTGEW " Quantity
    GEWEI " Unit
    FROM EKPO
    INTO TABLE I_EKPO
    WHERE EBELN IN S_EBELN
    AND NTGEW NE '0.00'.
    IF SY-SUBRC = 0.
    SORT I_EKPO BY EBELN EBELP MATNR .
    ENDIF.
    To build the Page header
    PERFORM SUB_BUILD_HEADER.
    To prepare field catalog
    PERFORM SUB_FIELD_CATALOG.
    Perform to populate the layout structure
    PERFORM SUB_POPULATE_LAYOUT.
    Perform to populate the sort table.
    PERFORM SUB_POPULATE_SORT.
    Perform to populate ALV event
    PERFORM SUB_GET_EVENT.
    END-OF-SELECTION.
    Perform to display ALV report
    PERFORM SUB_ALV_REPORT_DISPLAY.
    *& Form sub_build_header
    To build the header
    No Parameter
    FORM SUB_BUILD_HEADER .
    Local data declaration
    DATA: L_SYSTEM TYPE CHAR10 , "System id
    L_R_LINE TYPE SLIS_LISTHEADER, "Hold list header
    L_DATE TYPE CHAR10, "Date
    L_TIME TYPE CHAR10, "Time
    L_SUCCESS_RECORDS TYPE I, "No of success records
    L_TITLE(300) TYPE C. " Title
    Title Display
    L_R_LINE-TYP = C_HEADER. " header
    L_TITLE = 'Test report'(001).
    L_R_LINE-INFO = L_TITLE.
    APPEND L_R_LINE TO I_ALV_TOP_OF_PAGE.
    CLEAR L_R_LINE.
    Run date Display
    CLEAR L_DATE.
    L_R_LINE-TYP = C_ITEM. " Item
    WRITE: SY-DATUM TO L_DATE MM/DD/YYYY.
    L_R_LINE-KEY = 'Run Date :'(002).
    L_R_LINE-INFO = L_DATE.
    APPEND L_R_LINE TO I_ALV_TOP_OF_PAGE.
    CLEAR: L_R_LINE,
    L_DATE.ENDFORM. " sub_build_header
    *& Form sub_field_catalog
    Build Field Catalog
    No Parameter
    FORM SUB_FIELD_CATALOG .
    Build Field Catalog
    PERFORM SUB_FILL_ALV_FIELD_CATALOG USING:
    '01' '01' 'EBELN' 'I_EKPO' 'L' 'Doc No'(003) ' ' ' ' ' ' ' ',
    '01' '02' 'EBELP' 'I_EKPO' 'L' 'Item No'(004) 'X' 'X' ' ' ' ',
    '01' '03' 'MATNR' 'I_EKPO' 'L' 'Material No'(005) 'X' 'X' ' ' ' ',
    '01' '03' 'MATNR1' 'I_EKPO' 'L' 'Material No'(005) ' ' ' ' ' ' ' ',
    '01' '04' 'WERKS' 'I_EKPO' 'L' 'Plant'(006) 'X' 'X' ' ' ' ',
    '01' '04' 'WERKS1' 'I_EKPO' 'L' 'Plant'(006) ' ' ' ' ' ' ' ',
    '01' '05' 'NTGEW' 'I_EKPO' 'R' 'Net Weight'(007) ' ' ' ' 'GEWE' 'I_EKPO'
    ENDFORM. " sub_field_catalog
    *& Form sub_fill_alv_field_catalog
    *& For building Field Catalog
    *& p_rowpos Row position
    *& p_colpos Col position
    *& p_fldnam Fldname
    *& p_tabnam Tabname
    *& p_justif Justification
    *& p_seltext Seltext
    *& p_out no out
    *& p_tech Technical field
    *& p_qfield Quantity field
    *& p_qtab Quantity table
    FORM SUB_FILL_ALV_FIELD_CATALOG USING P_ROWPOS TYPE SYCUROW
    P_COLPOS TYPE SYCUCOL
    P_FLDNAM TYPE FIELDNAME
    P_TABNAM TYPE TABNAME
    P_JUSTIF TYPE CHAR1
    P_SELTEXT TYPE DD03P-SCRTEXT_L
    P_OUT TYPE CHAR1
    P_TECH TYPE CHAR1
    P_QFIELD TYPE SLIS_FIELDNAME
    P_QTAB TYPE SLIS_TABNAME.
    Local declaration for field catalog
    DATA: WA_LFL_FCAT TYPE SLIS_FIELDCAT_ALV.
    WA_LFL_FCAT-ROW_POS = P_ROWPOS. "Row
    WA_LFL_FCAT-COL_POS = P_COLPOS. "Column
    WA_LFL_FCAT-FIELDNAME = P_FLDNAM. "Field Name
    WA_LFL_FCAT-TABNAME = P_TABNAM. "Internal Table Name
    WA_LFL_FCAT-JUST = P_JUSTIF. "Screen Justified
    WA_LFL_FCAT-SELTEXT_L = P_SELTEXT. "Field Text
    WA_LFL_FCAT-NO_OUT = P_OUT. "No output
    WA_LFL_FCAT-TECH = P_TECH. "Technical field
    WA_LFL_FCAT-QFIELDNAME = P_QFIELD. "Quantity unit
    WA_LFL_FCAT-QTABNAME = P_QTAB . "Quantity table
    IF P_FLDNAM = 'NTGEW'.
    WA_LFL_FCAT-DO_SUM = 'X'.
    ENDIF.
    APPEND WA_LFL_FCAT TO I_FIELDCAT.
    CLEAR WA_LFL_FCAT.
    ENDFORM. " sub_fill_alv_field_catalog
    *& Form sub_populate_layout
    Populate ALV layout
    No Parameter
    FORM SUB_POPULATE_LAYOUT . CLEAR WA_LAYOUT.
    WA_LAYOUT-COLWIDTH_OPTIMIZE = 'X'." Optimization of Col width
    ENDFORM. " sub_populate_layout
    *& Form sub_populate_sort
    Populate ALV sort table
    No Parameter
    FORM SUB_POPULATE_SORT .
    Sort on material
    WA_SORT-SPOS = '01' .
    WA_SORT-FIELDNAME = 'MATNR'.
    WA_SORT-TABNAME = 'I_EKPO'.
    WA_SORT-UP = 'X'.
    WA_SORT-SUBTOT = 'X'.
    APPEND WA_SORT TO I_SORT .
    CLEAR WA_SORT.
    Sort on plant
    WA_SORT-SPOS = '02'.
    WA_SORT-FIELDNAME = 'WERKS'.
    WA_SORT-TABNAME = 'I_EKPO'.
    WA_SORT-UP = 'X'.
    WA_SORT-SUBTOT = 'X'.
    APPEND WA_SORT TO I_SORT .
    CLEAR WA_SORT.
    ENDFORM. " sub_populate_sort
    *& Form sub_get_event
    Get ALV grid event and pass the form name to subtotal_text
    event
    No Parameter
    FORM SUB_GET_EVENT .
    CONSTANTS : C_FORMNAME_SUBTOTAL_TEXT TYPE SLIS_FORMNAME VALUE
    'SUBTOTAL_TEXT'.
    DATA: L_S_EVENT TYPE SLIS_ALV_EVENT.
    CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
    EXPORTING
    I_LIST_TYPE = 4
    IMPORTING
    ET_EVENTS = I_EVENT
    EXCEPTIONS
    LIST_TYPE_WRONG = 0
    OTHERS = 0.
    Subtotal
    READ TABLE I_EVENT INTO L_S_EVENT
    WITH KEY NAME = SLIS_EV_SUBTOTAL_TEXT.
    IF SY-SUBRC = 0.
    MOVE C_FORMNAME_SUBTOTAL_TEXT TO L_S_EVENT-FORM.
    MODIFY I_EVENT FROM L_S_EVENT INDEX SY-TABIX.
    ENDIF.
    ENDFORM. " sub_get_event
    *& Form sub_alv_report_display
    For ALV Report Display
    No Parameter
    FORM SUB_ALV_REPORT_DISPLAY .
    DATA: L_REPID TYPE SYREPID .
    L_REPID = SY-REPID .
    This function module for displaying the ALV report
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
    I_CALLBACK_PROGRAM = L_REPID
    I_CALLBACK_TOP_OF_PAGE = 'SUB_ALV_TOP_OF_PAGE'
    IS_LAYOUT = WA_LAYOUT
    IT_FIELDCAT = I_FIELDCAT
    IT_SORT = I_SORT
    IT_EVENTS = I_EVENT
    I_DEFAULT = 'X'
    I_SAVE = 'A'
    TABLES
    T_OUTTAB = I_EKPO
    EXCEPTIONS
    PROGRAM_ERROR = 1
    OTHERS = 2.
    IF SY-SUBRC <> 0.
    MESSAGE i000 WITH 'Error in ALV report display'(055).
    ENDIF.ENDFORM. " sub_alv_report_display
    FORM sub_alv_top_of_page
    Call ALV top of page
    No parameter
    FORM SUB_ALV_TOP_OF_PAGE. "#EC CALLED
    To write header for the ALV
    CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
    EXPORTING
    IT_LIST_COMMENTARY = I_ALV_TOP_OF_PAGE.
    ENDFORM. "alv_top_of_page
    *& Form subtotal_text
    Build subtotal text
    P_total Total
    p_subtot_text Subtotal text info
    FORM SUBTOTAL_TEXT CHANGING
    P_TOTAL TYPE ANY
    P_SUBTOT_TEXT TYPE SLIS_SUBTOT_TEXT.
    Material level sub total
    IF P_SUBTOT_TEXT-CRITERIA = 'MATNR'.
    P_SUBTOT_TEXT-DISPLAY_TEXT_FOR_SUBTOTAL
    = 'Material level total'(009).
    ENDIF.
    Plant level sub total
    IF P_SUBTOT_TEXT-CRITERIA = 'WERKS'.
    P_SUBTOT_TEXT-DISPLAY_TEXT_FOR_SUBTOTAL = 'Plant level total'(010).
    ENDIF.

Maybe you are looking for

  • Can't get "Open in new window" to work

    Having my Macbook Pro on service I had to setup my good old Powerbook G4 again. The only stupid problem I have is that how ever I make the settings in Safari 5.0.1 it wont open any links in a new window. They always open in a new tab. Even is the lin

  • ITunes settings lost on every Windows 8 reboot

    I have a Windows 8 laptop and I am using iTunes 64bit version. This problem occured in the previous version and the newly released 11.0.5.5. Every day I properly close all open programs and shutdown. When I reboot the next day, I open iTunes to annoy

  • How to write output to file in flash

    hi all experts. I want to monitor a specific link. Lets say when it goes down, i want to write the following to a file in flash called link_mon.txt link down <show clock output> When it gets back up link up <show clock output> I know how to write the

  • Delivery/PGI for Material

    Hi PS gurus, I  have one PO for Material a created against WBS. As PO was created manually how to do delivery/PGI for Material a. We can see the Stock in MMBE for that WBS & Material Note: - In CNS0 material a will not appear as PO was created manual

  • Question on Nikon Raw Image

    I am trying the trial of CC and it won't take my Nikon raw image.How do I convert it?