Alv sub total problem

hi,
in alv i want sub total text for purchase order.
can you check my code . i am not getting.
TYPE-POOLS: slis.
TABLES: ekko,ekpo,eket.
TYPES: BEGIN OF ty_ekko,
        lifnr TYPE elifn,
        ebeln TYPE ebeln,
        ebeln1 TYPE ebeln,
        bsart TYPE esart,
        ekorg TYPE ekorg,
        ekgrp TYPE bkgrp,
        ernam TYPE ernam,
       END OF ty_ekko,
       BEGIN OF ty_ekpo,
        ebeln TYPE ebeln,
        matnr TYPE matnr,
        ebelp TYPE ebelp,
        ebelp1 TYPE ebelp,
        menge TYPE bstmg,
        meins TYPE bstme,
        netpr TYPE bprei,
        werks TYPE ewerk,
       END OF ty_ekpo,
       BEGIN OF ty_eket,
        ebeln TYPE ebeln,
        ebelp TYPE ebelp,
        etenr TYPE eeten,
        eindt TYPE eindt,
       END OF ty_eket,
       BEGIN OF ty_final,
        slno TYPE sy-dbcnt,
        lifnr TYPE elifn,
        ebeln TYPE ebeln,
        ebeln1 TYPE ebeln,
        bsart TYPE esart,
        ekorg TYPE ekorg,
        ekgrp TYPE bkgrp,
        ernam TYPE ernam,
        matnr TYPE matnr,
        ebelp TYPE ebelp,
        ebelp1 TYPE ebelp,
        menge TYPE bstmg,
        meins TYPE bstme,
        netpr TYPE bprei,
        werks TYPE ewerk,
        eindt TYPE eindt,
       END OF ty_final.
DATA: it_ekko TYPE STANDARD TABLE OF ty_ekko,
      it_ekpo TYPE STANDARD  TABLE OF ty_ekpo,
      it_eket TYPE STANDARD  TABLE OF ty_eket,
      it_final TYPE STANDARD TABLE OF ty_final,
      it_fieldcat TYPE slis_t_fieldcat_alv,
      it_alv_top_of_page TYPE slis_t_listheader,
      it_sort TYPE  slis_t_sortinfo_alv,
      it_event TYPE slis_t_event,
      l_repid TYPE syrepid,
      slno TYPE i VALUE 1.
DATA: wa_ekko TYPE ty_ekko,
      wa_ekpo TYPE ty_ekpo,
      wa_eket TYPE ty_eket,
      wa_final TYPE ty_final,
      wa_fieldcat TYPE slis_fieldcat_alv,
      wa_alv_top_of_page TYPE slis_listheader,
      wa_sort TYPE  slis_sortinfo_alv,
      wa_layout   TYPE slis_layout_alv.
     wa_event TYPE slis_alv_event.
CONSTANTS:
   c_header   TYPE char1
              VALUE 'H',                    "Header in ALV
   c_item     TYPE char1
              VALUE 'S'.
SELECTION-SCREEN BEGIN OF BLOCK blk WITH FRAME TITLE text-001.
SELECT-OPTIONS: s_aedat FOR ekko-aedat.
SELECTION-SCREEN END OF BLOCK blk.
START-OF-SELECTION.
PERFORM validation.
  PERFORM retrive_data.
  PERFORM sub_build_header.
  PERFORM sub_field_catalog.
  PERFORM sub_populate_layout.
  PERFORM sub_populate_sort.
  PERFORM sub_get_event.
*END-OF-SELECTION.
Perform to display ALV report
  PERFORM sub_alv_report_display.
*FORM validation .
SELECT SINGLE * FROM ekko WHERE aedat IN s_aedat .
IF sy-subrc <> 0.
   MESSAGE e001(zram).
ENDIF.
*ENDFORM.                    " validation
FORM retrive_data .
  SELECT lifnr
         ebeln
         ebeln
         bsart
         ekorg
         ekgrp
         ernam FROM ekko INTO TABLE it_ekko
        INTO CORRESPONDING FIELDS OF TABLE it_ekko
         WHERE aedat IN s_aedat .
  IF it_ekko[] IS NOT INITIAL.
    SELECT ebeln
           ebelp
           ebelp
           matnr
           menge
           meins
           netpr
           werks FROM ekpo
           INTO corresponding fields of  TABLE it_ekpo
           FOR ALL ENTRIES IN it_ekko
           WHERE ebeln = it_ekko-ebeln .
      if sy-subrc = 0.
         SELECT ebeln
           ebelp
           etenr
           eindt
           FROM eket INTO  TABLE it_eket
           FOR ALL ENTRIES IN it_ekpo
           WHERE ebeln = it_ekpo-ebeln .
        endif.
  ENDIF.
ENDIF.
  LOOP AT it_ekko INTO wa_ekko.
    READ TABLE it_ekpo INTO wa_ekpo
                          WITH KEY ebeln = wa_ekko-ebeln.
    READ TABLE it_eket INTO wa_eket
                            WITH KEY ebeln = wa_ekpo-ebeln.
    wa_final-slno  =  slno.
    wa_final-lifnr = wa_ekko-lifnr.
    wa_final-ebeln = wa_ekko-ebeln.
    wa_final-bsart = wa_ekko-bsart.
    wa_final-ekgrp = wa_ekko-ekgrp.
    wa_final-ekorg = wa_ekko-ekorg.
    wa_final-ernam = wa_ekko-ernam.
    wa_final-ebelp = wa_ekpo-ebelp.
    wa_final-matnr = wa_ekpo-matnr.
    wa_final-menge = wa_ekpo-menge.
    wa_final-meins = wa_ekpo-meins.
    wa_final-netpr = wa_ekpo-netpr.
    wa_final-werks = wa_ekpo-werks.
    wa_final-eindt = wa_eket-eindt.
    slno = slno + 1.
    APPEND wa_final TO it_final.
  ENDLOOP.
ENDFORM.                    " retrive_data
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 it_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 it_alv_top_of_page.
  CLEAR: l_r_line,
         l_date.
ENDFORM.                    " sub_build_header
FORM sub_field_catalog .
  REFRESH it_fieldcat.
  wa_fieldcat-row_pos        = '01'.  "  p_rowpos.     "Row
  wa_fieldcat-col_pos        = '01'.       "p_colpos.     "Column
  wa_fieldcat-fieldname      = 'SLNO'.       "p_fldnam.     "Field Name
  wa_fieldcat-tabname        = 'IT_FINAL'.      "p_tabnam.     "Internal Table Name
  wa_fieldcat-just           = ' '.       "p_justif.     "Screen Justified
  wa_fieldcat-seltext_l      = 'SLNo'.       "p_seltext.    "Field Text
  wa_fieldcat-do_sum         = ' '.
  wa_fieldcat-outputlen      = '4'    .
  wa_fieldcat-no_out         = ' '.       "p_out.        "No output
  wa_fieldcat-tech           = ' '.      "p_tech.       "Technical field
  wa_fieldcat-qfieldname     = ' '.       "p_qfield.     "Quantity unit
  wa_fieldcat-qtabname       = ' '.       "p_qtab .      "Quantity table
  APPEND wa_fieldcat TO it_fieldcat.
  CLEAR wa_fieldcat.
  wa_fieldcat-row_pos        = '01'.  "  p_rowpos.     "Row
  wa_fieldcat-col_pos        = '02'.       "p_colpos.     "Column
  wa_fieldcat-fieldname      = 'LIFNR'.       "p_fldnam.     "Field Name
  wa_fieldcat-tabname        = 'IT_FINAL'.      "p_tabnam.     "Internal Table Name
  wa_fieldcat-just           = ' '.       "p_justif.     "Screen Justified
  wa_fieldcat-seltext_l      = 'Supplier Name'.       "p_seltext.    "Field Text
  wa_fieldcat-do_sum         = ' '.
  wa_fieldcat-outputlen      = '12'    .
  wa_fieldcat-no_out         = ' '.       "p_out.        "No output
  wa_fieldcat-tech           = ' '.      "p_tech.       "Technical field
  wa_fieldcat-qfieldname     = ' '.       "p_qfield.     "Quantity unit
  wa_fieldcat-qtabname       = ' '.       "p_qtab .      "Quantity table
  APPEND wa_fieldcat TO it_fieldcat.
  CLEAR wa_fieldcat.
  wa_fieldcat-row_pos        = '01'.  "  p_rowpos.     "Row
  wa_fieldcat-col_pos        = '03'.       "p_colpos.     "Column
  wa_fieldcat-fieldname      = 'EBELN'.       "p_fldnam.     "Field Name
  wa_fieldcat-tabname        = 'IT_FINAL'.      "p_tabnam.     "Internal Table Name
  wa_fieldcat-just           = ' '.       "p_justif.     "Screen Justified
  wa_fieldcat-seltext_l      = 'PO No'.       "p_seltext.    "Field Text
  wa_fieldcat-do_sum         = ' '.
  wa_fieldcat-outputlen      = '15'    .
  wa_fieldcat-no_out         = ' '.       "p_out.        "No output
  wa_fieldcat-tech           = ' '.      "p_tech.       "Technical field
  wa_fieldcat-qfieldname     = ' '.       "p_qfield.     "Quantity unit
  wa_fieldcat-qtabname       = ' '.       "p_qtab .      "Quantity table
  APPEND wa_fieldcat TO it_fieldcat.
  CLEAR wa_fieldcat.
  wa_fieldcat-row_pos        = '01'.  "  p_rowpos.     "Row
  wa_fieldcat-col_pos        = '03'.       "p_colpos.     "Column
  wa_fieldcat-fieldname      = 'EBELN1'.       "p_fldnam.     "Field Name
  wa_fieldcat-tabname        = 'IT_FINAL'.      "p_tabnam.     "Internal Table Name
  wa_fieldcat-just           = ' '.       "p_justif.     "Screen Justified
  wa_fieldcat-seltext_l      = 'PO No'.       "p_seltext.    "Field Text
  wa_fieldcat-do_sum         = ' '.
  wa_fieldcat-no_out         = ' '.       "p_out.        "No output
  wa_fieldcat-tech           = 'X'.      "p_tech.       "Technical field
  wa_fieldcat-qfieldname     = ' '.       "p_qfield.     "Quantity unit
  wa_fieldcat-qtabname       = ' '.       "p_qtab .      "Quantity table
  APPEND wa_fieldcat TO it_fieldcat.
  CLEAR wa_fieldcat.
ENDFORM.                    " sub_field_catalog
FORM sub_populate_layout .
  CLEAR wa_layout.
  wa_layout-colwidth_optimize = 'X'." Optimization of Col width
ENDFORM.                    " sub_populate_layout
FORM sub_populate_sort .
Sort on material
  wa_sort-spos      = '01' .
  wa_sort-fieldname = 'EBELN'.
  wa_sort-tabname   = 'IT_FINAL'.
  wa_sort-up        = 'X'.
  wa_sort-subtot    = 'X'.
  APPEND wa_sort TO it_sort.
  CLEAR wa_sort.
Sort on plant
  wa_sort-spos      = '02'.
  wa_sort-fieldname = 'EBELP'.
  wa_sort-tabname   = 'IT_FINAL'.
  wa_sort-up        = 'X'.
  wa_sort-subtot    = 'X'.
  APPEND wa_sort TO it_sort.
  CLEAR wa_sort.
ENDFORM.                    " sub_populate_sort
FORM sub_get_event .
  CONSTANTS : c_formname_subtotal_text TYPE slis_formname VALUE
                                                  'SUBTOTAL_TEXT'.
  data : wa_event TYPE slis_alv_event.
  CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
    EXPORTING
      i_list_type     = 4
    IMPORTING
      et_events       = it_event
    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.
Subtotal
  READ TABLE it_event  INTO wa_event
                    WITH KEY name = slis_ev_subtotal_text.
  IF sy-subrc = 0.
    MOVE c_formname_subtotal_text TO wa_event-form.
    MODIFY it_event FROM wa_event  INDEX sy-tabix.
  ENDIF.
ENDFORM.                    " sub_get_event
FORM sub_alv_report_display .
  l_repid = sy-repid .
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
   EXPORTING
  I_INTERFACE_CHECK                 = ' '
  I_BYPASSING_BUFFER                = ' '
  I_BUFFER_ACTIVE                   = ' '
     i_callback_program                = l_repid
  I_CALLBACK_PF_STATUS_SET          = ' '
  I_CALLBACK_USER_COMMAND           = ' '
     i_callback_top_of_page            = 'SUB_ALV_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                   =
   is_layout                         = wa_layout
   it_fieldcat                       = it_fieldcat
  IT_EXCLUDING                      =
  IT_SPECIAL_GROUPS                 =
   it_sort                           = it_sort
  IT_FILTER                         =
  IS_SEL_HIDE                       =
  i_default                         = 'X'
  i_save                            = 'A'
  IS_VARIANT                        =
  IT_EVENTS                         = i_event
  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
  I_HTML_HEIGHT_TOP                 = 0
  I_HTML_HEIGHT_END                 = 0
  IT_ALV_GRAPHICS                   =
  IT_HYPERLINK                      =
  IT_ADD_FIELDCAT                   =
  IT_EXCEPT_QINFO                   =
  IR_SALV_FULLSCREEN_ADAPTER        =
IMPORTING
  E_EXIT_CAUSED_BY_CALLER           =
  ES_EXIT_CAUSED_BY_USER            =
    TABLES
      t_outtab                          = it_final
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.                    " sub_alv_report_display
FORM sub_alv_top_of_page.                                   "#EC CALLED
To write header for the ALV
  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
    EXPORTING
      it_list_commentary = it_alv_top_of_page.
ENDFORM.                    "alv_top_of_page
FORM subtotal_text CHANGING
               p_total TYPE any
               p_subtot_text TYPE slis_subtot_text.
Material level sub total
  IF p_subtot_text-criteria = 'EBELN'.
    p_subtot_text-display_text_for_subtotal
    = 'The Nett price of PO No'(009).
  ENDIF.
Plant level sub total
  IF p_subtot_text-criteria = 'EBELP'.
    p_subtot_text-display_text_for_subtotal = 'Total Purchase Order value placed'(010).
  ENDIF.
ENDFORM.                    "subtotal_text

hi ,
try the given below code ...
"*************INTERNAL TABLE FR SORTING***********************
DATA: it_sort TYPE slis_t_sortinfo_alv.
"******** WORK AREA FR FIELD CATALOG *************************
DATA: wa_sort TYPE slis_sortinfo_alv.
   wa_sort-fieldname = 'EBELN'."field name
  wa_sort-tabname = 'IT_TAB'."internal table name
  wa_sort-up = 'X'.
  wa_sort-subtot ='X'.
  APPEND wa_sort TO it_sort.
  CLEAR wa_sort.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
it_sort                           = it_sort
ENDFORM.                    "alv
hope this helps
Regards
RItesh J

Similar Messages

  • Alv - sub  totals and avg

    Hi gurus,
    I have a problem, please help me out.
    Iam doing an report program with alv display. In that iam calculating the AVG for the workcenter wise for the field TAT.
    please observe my below o/p in general ALv  format.
    work center-- TAT- Tat(Yes/no)
    qm0010------ 1 --  yes
    qm0010-------2 --  yes
    qm0010------ 4 -- yes
    qm0010------ 7 -- No (because >5)
    Subtotal(qm0010)--3  (avg caluculated)
    qm0020--  4 --- yes
    qm0020-7-- No (because >5)
    qm0020--10 - No (because >5)
    qm002010- No (because >5)
    Subtotal(qm0020)-- 7 (avg caluculated).
    this is the rough o/p iam getting . this is acheived by programming the Field catalog for TAT field i.e... do_sum  = 'C'.
    then giving the sort table to REUSE_ALV_GRID_DISPLAY.
    Now my problem is:
    I want the avg to be calcuted by the business formula which is:
    avg  =  sum of(TAT within 5 days) / total no of the entries .
    Ex:
    work center-- TAT- Tat(Yes/no)
    qm0010------ 1 --  yes
    qm0010-------2 --  yes
    qm0010------ 4 -- yes
    qm0010------ 7 -- No (because >5)
    Subtotal(qm0010)---*7/4=2 (avg caluculated for tat<5)*
    qm0020--  4 --- yes
    qm0020-7-- No (because >5)
    qm0020--10 - No (because >5)
    qm002010- No (because >5)
    Subtotal(qm0020)--4/4=1 (avg caluculated for tat<5).
    How can i acheive the above, since in field catalog and alv, i think we cannot pass any conditions(like for TAT which is less than 5). So is there any other way to acheive the above.
    Please understand the problem and give me(please directly dont suggest any programs , since iam not a expert to understand)..
    Please explain me in detail.  Points will be duly rewarded.
    Thanks in advance........Chaitu
    Edited by: chaitanya on May 30, 2008 12:33 PM
    Edited by: chaitanya on May 30, 2008 12:38 PM
    Edited by: chaitanya on May 30, 2008 12:39 PM

    Hi Chaitanya,
       You can display in your report with totals and sub-totals using alv, but not average. That functionality has not provided by sap. Do one thing add one more extra column Average in your output, do the calculation for average and pass the value in the coding itself. Then last display your report with Average field.
    Rgds,
    Bujji

  • ALV Sub total texts. displayed in list not in grid.

    Hi,
    I am displaying data using alv and sub-totals on a particular column.
    i am getting the sub-totals but i am not getting the sub-total texts when i am displaying data in a grid.
    'REUSE_ALV_GRID_DISPLAY'.
    i am getting subtotals and subtotal texts when i am diSplAying in list.
    'REUSE_ALV_LIST_DISPLAY'.
    but i want to get subtotal texts using alv grid, is it possible, if so please send me the code.
    Any help in this regard is highly appreciated.
    Thanks in advance for your help.

    Hi,
    Actually i have wriitten the same code, in the alv. I am using Function modules. for the same code the sub-total and total text is appearing in the list output. but not in the grid output.
    code.
      wa_layout-zebra          = 'X'.
      wa_layout-subtotals_text = 'Total'.
      wa_layout-totals_text    = 'Sum of Marks'.
    alv statement.
         is_layout = wa_layout
    Declaration.
    DATA : wa_layout type slis_layout_alv.
    for the same declarations (Above) list is showing the texts but not the grid.
    Any help in this regard is highly appreciated.

  • Queries on ALV Sub totalling

    Hi all,
            I have a requirement to change few fields in existing ALV.
    1) i have data like this in ALV.
    GROUP      G/L ACCOUNT         LC           USD
      100              10                         5               5
      100              11                         6               4
      100              12                         3               3
      100              11                         3               2
      200              10                         5               5
      200              11                         6               4
      200              12                         3               3
      200              11                         3               2
    now for  particular GROUP (ex: 100) i need the sub totals of LC(5633=17) and USD(5432=14)
    it should be shown before the GROUP 200 begins.
    now the output should come as:
    GROUP      G/L ACCOUNT         LC           USD
      100              10                         5               5
                         11                         6               4
                         12                         3               3
                         11                         3               2
    TOTAL                                      17              14
      200              10                         5               5
                         11                         6               4
                         12                         3               3
                         11                         3               2
    TOTAL                                       17             14
    Is there any way to do this..please help
    thanks,
    prasanth

    Hai Prasanth,
    Try this.
      LR_SORTS = LR_TABLE->GET_SORTS( ).
      LR_AGGREGATIONS = LR_TABLE->GET_AGGREGATIONS( ).
      PERFORM SET_AGGREGATIONS USING LR_AGGREGATIONS '<lc fieldname>'. 
      PERFORM SET_SORTS USING LR_SORTS '<group filedname>' 1
                                 1   'X'  .
    Double click SET_AGGREGATIONS
    *&      Form  SET_AGGREGATIONS
          text
         -->P_LR_AGGREGATIONS  text
         -->P_0834   text
    FORM SET_AGGREGATIONS USING IR_AGGREGATIONS TYPE REF TO CL_SALV_AGGREGATIONS
                                L_COL          TYPE ANY.
      CONSTANTS: L_1 TYPE SALV_DE_AGGREGATION VALUE '1'.
      TRY.
          IR_AGGREGATIONS->SET_NUMERICAL_AGGREGATION( ABAP_FALSE ).
          TRY.
              IR_AGGREGATIONS->ADD_AGGREGATION(
                COLUMNNAME  = L_COL
                AGGREGATION = L_1 ).
            CATCH CX_SALV_DATA_ERROR CX_SALV_EXISTING CX_SALV_NOT_FOUND.
              MESSAGE I023(SALV_EXCEPTION).
            CATCH CX_SALV_METHOD_NOT_SUPPORTED.
              MESSAGE I028(SALV_EXCEPTION) WITH SPACE SPACE SPACE SPACE.
          ENDTRY.
        CATCH CX_SALV_METHOD_NOT_SUPPORTED.
          MESSAGE I028(SALV_EXCEPTION) WITH SPACE SPACE SPACE SPACE.
      ENDTRY.
    ENDFORM. " SET_AGGREGATIONS
    Double click SET_SORTS
    *&      Form  SET_SORTS
          text
         -->P_LR_SORTS  text
         -->P_0827   text
         -->P_1      text
         -->P_1      text
         -->P_0830   text
    FORM SET_SORTS USING IR_SORTS TYPE REF TO CL_SALV_SORTS
                         L_COL    TYPE ANY
                         L_POS    TYPE I
                         L_SEQ    TYPE SALV_DE_SORT_SEQUENCE
                         L_TOT    TYPE SAP_BOOL.
      TRY.
          IR_SORTS->SET_GROUP_ACTIVE( ABAP_FALSE ).
          TRY.
              IR_SORTS->ADD_SORT(
                COLUMNNAME = L_COL
                POSITION   = L_POS
                SEQUENCE   = L_SEQ
                SUBTOTAL   = L_TOT
            CATCH CX_SALV_DATA_ERROR CX_SALV_EXISTING CX_SALV_NOT_FOUND.
              MESSAGE I023(SALV_EXCEPTION).
            CATCH CX_SALV_METHOD_NOT_SUPPORTED.
              MESSAGE I028(SALV_EXCEPTION) WITH SPACE SPACE SPACE SPACE.
          ENDTRY.
        CATCH CX_SALV_METHOD_NOT_SUPPORTED.
          MESSAGE I028(SALV_EXCEPTION) WITH SPACE SPACE SPACE SPACE.
      ENDTRY.
    ENDFORM. " SET_SORTS

  • Reg. ALV- Sub total?

    Hi Experts,
    How to hide the column values in ALV? That is I need to display the sub-total values alone and not to show the other values in the ALV output. Take for e.g
    1   2   2  andre
    2   3   4  brown
    3   5   6  subtotal
    2   2    3  A
    1   1    1  B
    1   1     1  C
    1   1     2  D
    5   5   7   subtotal
    If the alv output is like this means, I want to display the 3, 5, 6 fields alone how to hide the first column colum field values alone i.e 1 & 2. Then in second part of the ALV how to hide the first column values 2,1,1 & 1 alone.
    Regards,
    Sakthi

    Hi Tarun,
    Thanks for your reply.
    If I give that no_out = 'X' in the sense it will hide the whole column.
    I need How to hide the values alone and need to display the column subtotal.
    Those values need to be displayed as blank in the output.
    How to do that?
    The output normally will be like this.
    1 1 1 A
    1 2 3 B
    1 1 1 C
    3 4 5 subtotal
    1 2 3 E
    1 1 1 F
    2 3 4 SubTotal
    But what I need  is
        1 1 A
        2 3 B
        1 1 C
    3   4 5 SubTotal
      2 3 E
      1 1 F
    2 3 4 Sub Total
    Like this I need to hide a single column values alone not along with sub total values. The first column values should not appear but subtotal value should appear.

  • Alv sub totals

    Hi
    In ALV grid I want subtotal for accounts group INCOME ( 300000,301000,302007 sub total-1) again Expenses( 400000,401012,403001) subtotal-2 like wise etc there are more than 3 groups
    Please help.
    Regards
    Vinayak M. Deosthali.

    Hi Vinayak,
      By now I think you understand how to give Subtotals for a column by filling it in SORT table.
      I think you can achieve your requirement by adding one more column to your display called "Account Group" or just "Group" and fill it with INCOME for 300000, 301000, 302007 and similarily EXPENSES for 400000, 401012, 403001 etc.
      And then fill your SORT table with this field and set properties UP = 'X', SUBTOT = 'X' for it.
      You can actually keep this column at the very end of the grid (by adding it to the field catalog at the very end) if you dont want it to appear next to other important columns. 
      Hope this helps..
    Sri
    Message was edited by: Srikanth Pinnamaneni
    Message was edited by: Srikanth Pinnamaneni

  • Blocked ALV sub total Display

    hi,
    I'm working with Blocked ALV. In my program, passed the  Fieldcatlog-do_sum = 'X' . But then also i'm not getting totals. For that what i want to do in Blocked ALV.
    Regards,
    Bab

    Hi,
    For ALV Totals you can try doing,
    DATA : it_field TYPE slis_t_fieldcat_alv,
                 wa_field TYPE slis_fieldcat_alv.
    DATA:  itab_sort TYPE slis_t_sortinfo_alv,
                 wa_sort TYPE slis_sortinfo_alv.
      wa_field-fieldname = 'MENGE'.
      wa_field-tabname = 'IT_TAB'.
      wa_field-outputlen = 20.
      wa_field-seltext_l ='Quantity'.
      wa_field-input = ' '.
      wa_field-edit = ' '.
      wa_field-col_pos = '4'.
      wa_field-hotspot = 'X'.
      wa_field-do_sum = 'X'.              "For totalling
      APPEND wa_field TO it_field.
      CLEAR wa_field.
    *Manintainig internal table for sorting
    wa_sort-spos = 1.
      wa_sort-fieldname = 'EBELP'.
      wa_sort-tabname = 'IT_tab'.
      wa_sort-up = 'X'.
      wa_sort-subtot = 'X'.              "For totalling
      APPEND wa_sort TO itab_sort.
      CLEAR wa_sort.
    Then you can pass these two internal tables in Reuse ALV grid Function Module.
    Hope it helps
    Regards
    Mansi

  • ALV SUB TOTAL

    HI
    AM DOING A ALV report in se 38 in which i need to display the subtotals on plant wise ,storage location wise apart from the grand total..please help me
    with regards
    vijay

    HEY BUT D VARIABLES IN D FIRST FIELS ARE NOT ADDED...I WANT D VARIABLE IN D FIELDS FIELD1 AND FIELD 3 TO B ADDED AND ALSO IN MY CASE I CANT GIVE D VALUES DEY R RETRIEVED FROM D TABLE....PLZZ GO THRU D CODE BELOW
    REPORT  ZSALES1.
    DATA:X TYPE I,Y TYPE I,a type i,b type i.
    TABLES:VBRP.
    TYPE-POOLS:SLIS.
    TYPES:BEGIN OF T_VBRP,
      VBELN TYPE VBRP-VBELN,
      FBUDA TYPE VBRP-FBUDA,
      WERKS TYPE VBRP-WERKS,
      LGORT TYPE VBRP-LGORT,
      NETWR TYPE VBRP-NETWR,
      Y TYPE I,
      END OF T_VBRP.
      DATA:IT_VBRP TYPE STANDARD TABLE OF T_VBRP INITIAL SIZE 0   WITH HEADER LINE    ,
            WA_VBRP TYPE T_VBRP.
    SELECT-OPTIONS DATE FOR VBRP-FBUDA OBLIGATORY.
    SELECT-OPTIONS:PLANT FOR VBRP-WERKS NO INTERVALS.
      data: fieldcatalog type slis_t_fieldcat_alv with header line,
          gd_tab_group type slis_t_sp_group_alv,
          gd_layout    type slis_layout_alv,
          gd_repid     like sy-repid.
    perform data_retrieval.
    perform build_fieldcatalog.
    perform build_layout.
    perform display_alv_report.
    FORM build_fieldcatalog.
      fieldcatalog-FIELDNAME   = 'FBUDA'.
          fieldcatalog-seltext_m   = 'DATE '.
            fieldcatalog-col_pos     =  0.
              fieldcatalog-tabname = 'it_vbrp'.
                APPEND fieldcatalog TO fieldcatalog.
                  CLEAR fieldcatalog.
             fieldcatalog-FIELDNAME   = 'VBELN'.
               fieldcatalog-seltext_m   = 'BILLING DOCUMENT NUMBER '.
                 fieldcatalog-col_pos     =  1.
                   fieldcatalog-tabname = 'it_vbrp'.
                     APPEND fieldcatalog TO fieldcatalog.
                       CLEAR fieldcatalog.
                    fieldcatalog-FIELDNAME   = 'WERKS'.
                      fieldcatalog-seltext_m   = 'PLANT '.
                        fieldcatalog-col_pos     =  2.
                          fieldcatalog-tabname = 'it_vbrp'.
                            APPEND fieldcatalog TO fieldcatalog.
                              CLEAR fieldcatalog.
                          fieldcatalog-FIELDNAME   = 'LGORT'.
                             fieldcatalog-seltext_m   = 'STORAGE LOCATION '.
                                 fieldcatalog-col_pos     =  3.
                                    fieldcatalog-tabname = 'it_vbrp'.
                                        APPEND fieldcatalog TO fieldcatalog.
                                          CLEAR fieldcatalog.
                                fieldcatalog-FIELDNAME   = 'NETWR'.
                                   fieldcatalog-seltext_m   = 'NET VALUE'.
                                      fieldcatalog-col_pos     =  4.
                                      FIELDCATALOG-DO_SUM = 'Y'.
                                          fieldcatalog-tabname = 'it_vbrp'.
                                             APPEND fieldcatalog TO fieldcatalog.
                                                CLEAR fieldcatalog.
    ENDFORM.
    FORM build_layout.
      gd_layout-NO_INPUT = 'X'.
      gd_layout-colwidth_optimize = 'X'.
      GD_LAYOUT-TOTALS_TEXT = 'TOTALS'(201).
      ENDFORM.
      form display_alv_report.
      gd_repid = sy-repid.
      call function 'REUSE_ALV_GRID_DISPLAY'
           exporting
                i_callback_program      = gd_repid
                 is_layout               = gd_layout
                it_fieldcat             = fieldcatalog[]
                i_save                  = 'X'
                tables
                t_outtab                = IT_VBRP
           exceptions
                program_error           = 1
                others                  = 2.
      if sy-subrc <> 0.
    endif.
    endform.                    " DISPLAY_ALV_REPORT
    form data_retrieval.
    select FBUDA VBELN WERKS LGORT NETWR
      from vbrp
        into CORRESPONDING FIELDS OF TABLE IT_VBRP
          WHERE FBUDA in date and
      WERKS IN PLANT.
    X = IT_VBRP-NETWR .
      ADD X TO Y.
       endform.
    PLZ EXECUTE D CODE ONCE SO U WIL,GET A CLEAR IDEA
    THANKS
    VIJAY

  • Grouping and Sub total Problem in Template Builder

    Hi,
    Please help me out to sort the problem am getting in template builder.
    am here by attaching the xml and RTF which i have done. please go through the files and help me sort the problem.
    <LIST_G_REQ>
    <G_REQ>
    <BUYER_ID>DENIECE</BUYER_ID>
    <BUYER_GROUP>1</BUYER_GROUP>
    <BUYER_SUBGROUP>ADMIN</BUYER_SUBGROUP>
    <REQ_TOT>1</REQ_TOT>
    </G_REQ>
    <G_REQ>
    <BUYER_ID>THUGHES1</BUYER_ID>
    <BUYER_GROUP>1</BUYER_GROUP>
    <BUYER_SUBGROUP>ADMIN</BUYER_SUBGROUP>
    <REQ_TOT>12</REQ_TOT>
    </G_REQ>
    <G_REQ>
    <BUYER_ID>VACHAVEZ</BUYER_ID>
    <BUYER_GROUP>1</BUYER_GROUP>
    <BUYER_SUBGROUP>ADMIN</BUYER_SUBGROUP>
    <REQ_TOT>19</REQ_TOT>
    </G_REQ>
    <G_REQ>
    <BUYER_ID>KAJIKAWA</BUYER_ID>
    <BUYER_GROUP>2</BUYER_GROUP>
    <BUYER_SUBGROUP>AP</BUYER_SUBGROUP>
    <REQ_TOT>25</REQ_TOT>
    </G_REQ>
    <G_REQ>
    <BUYER_ID>MSVIC</BUYER_ID>
    <BUYER_GROUP>2</BUYER_GROUP>
    <BUYER_SUBGROUP>AP</BUYER_SUBGROUP>
    <REQ_TOT>171</REQ_TOT>
    </G_REQ>
    <G_REQ>
    <BUYER_ID>FESPINOZ</BUYER_ID>
    <BUYER_GROUP>3</BUYER_GROUP>
    <BUYER_SUBGROUP>C&amp;R</BUYER_SUBGROUP>
    <REQ_TOT>19</REQ_TOT>
    </G_REQ>
    <G_REQ>
    <BUYER_ID>ASEJH</BUYER_ID>
    <BUYER_GROUP>3</BUYER_GROUP>
    <BUYER_SUBGROUP>COMPUTER</BUYER_SUBGROUP>
    <REQ_TOT>16</REQ_TOT>
    </G_REQ>
    <G_REQ>
    <BUYER_ID>BFINLEY</BUYER_ID>
    <BUYER_GROUP>3</BUYER_GROUP>
    <BUYER_SUBGROUP>COMPUTER</BUYER_SUBGROUP>
    <REQ_TOT>23</REQ_TOT>
    </G_REQ>
    <G_REQ>
    <BUYER_ID>JSMETANA</BUYER_ID>
    <BUYER_GROUP>3</BUYER_GROUP>
    <BUYER_SUBGROUP>COMPUTER</BUYER_SUBGROUP>
    <REQ_TOT>21</REQ_TOT>
    </G_REQ>
    <G_REQ>
    <BUYER_ID>SAVANCIL</BUYER_ID>
    <BUYER_GROUP>3</BUYER_GROUP>
    <BUYER_SUBGROUP>COMPUTER</BUYER_SUBGROUP>
    <REQ_TOT>84</REQ_TOT>
    </G_REQ>
    <G_REQ>
    <BUYER_ID>CALANE</BUYER_ID>
    <BUYER_GROUP>3</BUYER_GROUP>
    <BUYER_SUBGROUP>CWA</BUYER_SUBGROUP>
    <REQ_TOT>28</REQ_TOT>
    </G_REQ>
    <G_REQ>
    <BUYER_ID>KATHYR</BUYER_ID>
    <BUYER_GROUP>3</BUYER_GROUP>
    <BUYER_SUBGROUP>CWA</BUYER_SUBGROUP>
    <REQ_TOT>13</REQ_TOT>
    </G_REQ>
    <G_REQ>
    <BUYER_ID>STEFANIF</BUYER_ID>
    <BUYER_GROUP>3</BUYER_GROUP>
    <BUYER_SUBGROUP>CWA</BUYER_SUBGROUP>
    <REQ_TOT>1</REQ_TOT>
    </G_REQ>
    </LIST_G_REQ>
    This is my xml file please let me know how to do the groupingbased on "BUYER_SUBGROUP" and also "BUYER_GROUP_TOTAL" and "BUYER_SUBGROUP_TOTAL" in RTF.
    Thanks in advance

    Hi,
    I see that your data is having this format
    <LIST_G_REQ>
    <G_REQ>
    <BUYER_ID>DENIECE</BUYER_ID>
    <BUYER_GROUP>1</BUYER_GROUP>
    <BUYER_SUBGROUP>ADMIN</BUYER_SUBGROUP>
    <REQ_TOT>1</REQ_TOT>
    </G_REQ>
    </LIST_G_REQ>
    So to group by BUYER_SUBGROUP, your code will be
    <?for-each-group:G_REC;BUYER_SUBGROUP?>
    <?end for-each?>
    I dont know what you mean by BUYER_GROUP_TOTAL and BUYER_SUBGROUP_TOTAL here.

  • Short dump when I do total or sub total in the ALV report

    Hi,
    When I do total or sub-total on the currency field in the ALV report, it'll give a short dump like
    " 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)".
       Short text of error message:
       Technical information about the message:
       Message classe...... "0K"
       Number.............. 000
       Variable 1.......... " "
       Variable 2.......... " "
       Variable 3.......... " "
       Variable 4.......... " "
       Variable 3.......... " "
       Variable 4.......... " "
    Trigger Location of Runtime Error
        Program                                 SAPLSLVC
        Include                                 LSLVCF36
        Row                                     2,726
        Module type                             (FORM)
        Module Name                             FILL_DATA_TABLE
    sometime when I do the page down on the ALV report, the same short dump is coming.
    Can anyone help me out.
    Thanks
    Selva

    Hi,
    I'm getting this short dump in the standard program.
    I'm getting ALV report display perfectly. the problem is, when I do total or subtotal on the currency fields.
    2704
    2705 ************************************
    2706 * Column per Fieldcat Entry
    2707 ************************************
    2708         ls_lvc_data-value = space.
    2709         clear ls_lvc_data-style.
    2710         loop at it_fcat_local assigning <ls_fcat>
    2711                 where tech ne 'X' and no_out ne 'X'.
    2712           if l_invisible eq 'X'.
    2713             clear l_invisible.
    2714             if <ls_fcat>-do_sum is initial.
    2715               continue.
    2716             else.
    2717               clear ls_lvc_data-col_pos.
    2718             endif.
    2719           endif.
    2720
    2721           add 1 to ls_lvc_data-col_pos.
    2722
    2723           assign component <ls_fcat>-fieldname
    2724                            of structure <ls_data> to <l_field_value>.
    2725           if sy-subrc ne 0.
    >>>>>             message x000(0k).
    2727           endif.
    2728
    in this standard program, I'm getting the dump. the line is mentioned above in the code.

  • ALV Grid sub total issue

    Hi SAP Experts,
    Currently I have ALV Grid table as below as example :
    FIELD1
    FIELD2
    Account
    Amount
    1. Rev
    1.Rev
    Acct1
    100.00
    1. Rev
    1.Rev
    Acct2
    50.00
    Subtotal FIELD2 (1.Rev)
    150.00
    Subtotal FIELD1 (1.Rev)
    150.00
    2. Cost
    2.1 Cost1
    Acct3
    100.00
    2. Cost
    2.1 Cost1
    Acct4
    75.00
    Subtotal FIELD2  (2.1 Cost1)
    175.00
    2. Cost
    2.2 Cost2
    Acct5
    25.00
    Subtotal FIELD2 (2.2 Cost 2)
    25.00
    | Subtotal FIELD1 (2.Cost)                | 200.00             |          
    I have 2 questions.
    First, as you can see, I have 2 subtotal for 1.Rev eventhough 1.Rev actually only need one subtotal because there is no subgroup for 1.Rev. Is it possible to have only one subtotal for this 1.Rev but I still maintained 2 subtotal for 2.Cost because 2.Cost has subgroup?
    My 2nd issue is I need to insert another row exactly below Subtotal FIELD1 (2.Cost) row like this:
    Gross Margin
    (Some formula)
    This row does not come from any sub total. The problem is I can not just insert this column and put Gross Margin description in FIELD1 because I will have 3 row like below :
    Gross Margin
    (Formula)
    Subtotal FIELD2 (blank)
    (Formula) sub total
    Subtotal FIELD1 (Gross Margin)
    (Formula) sub total
    Is there any way I can insert Gross Margin Row without creating new subtotal for it so it will only have one line in the ALV Grid table? Please help. Thank you.
    Regards,
    Abraham

    Hi Vijay.
    I'm not posting this before I search everywhere and this is not the first time I post in this forum so I know what I should do before posting. If I miss something, maybe you can give me at least a hint whether it can be done or not.
    This report that I am using is ALV Grid using REUSE_ALV_GRID_DISPLAY function module and not OOP using dialog module. I never said I need sample code because I only want to know is there a way to do that using ALV Grid which until now I will say that SAP ALV grid has this limitation where you can not insert row without including it in the subtotal.
    So, I would be very thankful if someone can give me some clarity on this thing and Vijay, if you really don't know what is the answer, I really appreciate if you can hold your self from making that kind of reply. It does not need experienced ABAP Consultant to write such remarks. Thanks.
    Regards,
    Abraham

  • Alv total problem

    Hi, all
    i have one problem is alv....
    what is the statement should i write to get sub total..
    for eg....
    xxxxxxxxxxxxxx    123123
                                 123123
    subtotal                  642642
    in this way....my total should come
    WA_ALV_FIELDS-TABNAME   = 'IT_TEMP'.
      WA_ALV_FIELDS-FIELDNAME = 'CONTR'.
      WA_ALV_FIELDS-SELTEXT_M = 'Contribution'.
      WA_ALV_FIELDS-NO_ZERO = 'X'.
      APPEND WA_ALV_FIELDS TO ALV_FIELDS.
      CLEAR  WA_ALV_FIELDS.

    Hi,
    For total.
    While building the fieldcatalog you have use do_sum = 'X' for the column which you need the summation.
    For subtotal use below code :
    data :gt_sort TYPE slis_t_sortinfo_alv,
    DATA: ls_sort TYPE slis_sortinfo_alv.
    CLEAR ls_sort.
    ls_sort-fieldname = 'Fieldname'.
    ls_sort-up = 'X'.
    ls_sort-subtot = 'X'.
    APPEND ls_sort TO gt_sort.
    And pass gt_sort to grid display export parameter I_sort.
    Regards,
    Raj.

  • Sub Total Text in an ALV using FACTORY Method

    Hi Gurus,
    My requirement is simple, but I couldn't find any answers under SDN or any other forums. Some of you may ask me to check for the SCN posts, but I almost checked everything.
    My requirement is - When I get the Sub-total in my ALV, it should print a text other than the field which has got sub-total value.
    My ALV Schema:
    Field1  |  Field2 |  Field 3 |
    ____   |______ |______ |
               |             |             |
               |             |             |
              Tot. Qty  | 1000.00|
    I have sorted and added the subtotal = 'X' for the field which I need the Subtotal. Added Aggregations to Field3. But where and how to the field 'Tot. Qty', so that it should appear at the Sub-Total Level.
    Please guide me if I've missed any of the forums. Again my requirement is to print the Field Name.
    Regards,
    -Wahid Hussain Syed.

    Hi,
    You can view this thread for example Display constant text in intermediate results column of SALV as it says that this is a limitation in SALV that "The output of totals and subtotals is handled solely by ALV. You can neither pass the results to your application nor manipulate them in any way.". But you can see a work around done for this problem, to be frank that I have not done that and I am only providing this link for your reference.

  • REGARDING: Sub total activation button in alv

    hi,
    I had made dis report and added the feature SUB total ,but the problem is when i select 1 coloumn den it used to display correct sub total but when i choose all these buttons den it does not display the correct sub - total.
    PLZZ GO THROUGH THE CODE AND HELP ME OUT WHAT PROBLEM IS WITH IT?
    Moreover it does not display the RADIO BUTTON ACTIVE when i execute the report.
    here is d code:-
    *& Report  ZTET2
    REPORT  ZTET2.
    TABLES: ISEG,MARA.
    TYPE-POOLS : SLIS.
    DATA : DATE1(15) TYPE C,
    DATE2(15) TYPE C,
    TITLE(65) TYPE C,
    DT(25) TYPE C.
    DATA : ITEVENT TYPE SLIS_T_EVENT.
    DATA: lv_sort TYPE slis_sortinfo_alv,
          t_sort type slis_t_sortinfo_alv.
    DATA : repid LIKE sy-repid.
    INTERNAL TABLE FOR INVENTORY STOCK *****************
    DATA: BEGIN OF ITS1 OCCURS 0,
          MATNR LIKE ISEG-MATNR,
          ITEMID(6) TYPE C,
          MEINS LIKE ISEG-MEINS,
          MENGE LIKE ISEG-MENGE,
          WRTZL LIKE ISEG-WRTZL,
          BUCHM LIKE ISEG-BUCHM,
          WRTBM LIKE ISEG-WRTBM,
          WERKS LIKE ISEG-WERKS,
          BUDAT LIKE ISEG-BUDAT,
          ZLDAT LIKE ISEG-ZLDAT,
          MTART LIKE MARA-MTART,
          ITEMDESC LIKE MAKT-MAKTX,
          DIFFQTY LIKE ISEG-BUCHM,
          DIFFVALUE LIKE ISEG-WRTBM,
          GRUND LIKE ISEG-GRUND,
          GRTXT LIKE T157E-GRTXT,
          BWART LIKE T157E-BWART,
          REAS TYPE C LENGTH 15,
          END OF ITS1.
    data: t_heading type slis_t_listheader.
    SELECTION-SCREEN BEGIN OF BLOCK PAR1 WITH FRAME TITLE TEXT-001.
    *********PARAMETERS*********
    PARAMETERS : PLANT LIKE ISEG-WERKS OBLIGATORY.
    *********SELECTION SCREEN OPTIONS*********
    SELECT-OPTIONS : R_DATE FOR ISEG-BUDAT OBLIGATORY NO-EXTENSION,
                     M_TYPE  FOR MARA-MTART,
                     IT_M FOR MARA-MATNR.
    *********DEFINING VARIABLES*********
    SELECTION-SCREEN END OF BLOCK par1.
    CONCATENATE R_DATE-LOW6(2) '.' R_DATE-LOW4(2) '.' R_DATE-LOW+0(4) INTO DATE1.
    CONCATENATE R_DATE-HIGH6(2) '.' R_DATE-HIGH4(2) '.' R_DATE-HIGH+0(4) INTO DATE2.
    TOP-OF-PAGE.
      PERFORM PG_HEADER.
       START-OF-SELECTION.
      SELECT AMATNR AMEINS AMENGE AWRTZL ABUCHM AWRTBM AWERKS ABUDAT AZLDAT BMTART AGRUND CBWART
       FROM ISEG AS A INNER JOIN MARA AS B ON BMATNR = AMATNR
       INNER JOIN MSEG AS C ON AMBLNR = CMBLNR
       INTO CORRESPONDING FIELDS OF TABLE ITS1 WHERE BMATNR = AMATNR  AND BMEINS = AMEINS AND AWERKS = PLANT AND ABUDAT IN R_DATE AND BMTART IN M_TYPE AND BMATNR IN IT_M.
    SORT ITS1 BY MTART.
    LOOP AT ITS1.
         ITS1-ITEMID = ITS1-MATNR+12(6).
         ITS1-DIFFQTY = ITS1-MENGE - ITS1-BUCHM.
         ITS1-DIFFVALUE = ITS1-WRTZL - ITS1-WRTBM.
         SELECT SINGLE MAKTX FROM MAKT INTO ITS1-ITEMDESC WHERE MATNR = ITS1-MATNR.
         SELECT SINGLE GRTXT INTO ITS1-GRTXT FROM T157E WHERE GRUND = ITS1-GRUND AND SPRAS = 'E' AND BWART = ITS1-BWART.
         MODIFY ITS1.
    ENDLOOP.
    PERFORM PRN_SMSTOCK_ALV.
    WRITING DATA FROM D TABLES**********
    FORM PG_HEADER.
    WRITE : 'PHYSICAL INVENTORY AUDIT REPORT             PLANT : ', PLANT.
    ENDFORM.
    *&      Form  PRN_SMSTOCK_ALV
          text
    -->  p1        text
    <--  p2        text
    form PRN_SMSTOCK_ALV .
    data: w_title   type lvc_title,
          w_repid   type syrepid,
          w_comm    type slis_formname,
          w_status  type slis_formname,
          x_layout  type slis_layout_alv,
          t_event   type slis_t_event,
          t_fieldcat type slis_t_fieldcat_alv,
          t_subtot TYPE slis_t_sortinfo_alv,
          subtot LIKE LINE OF t_subtot.
    refresh t_fieldcat.
    refresh t_event.
    refresh t_sort.
    clear x_layout.
    clear w_title.
      perform set_fieldcat2 using:
    1  'MTART'     'MTART'     'MARA'  '15'  space 'MATERIAL TYPE'        space  space  space space space space space space SPACE t_fieldcat 'L' 'L',
    2  'ITEMID'    'ITEMID'    'MARA'  '7'   space 'ITEM ID'              space  space  space space space space space space SPACE t_fieldcat 'R' 'C',
    3  'ITEMDESC'  'MAKTX'     'MAKT'  '25'  space 'MATERIAL DESCRIPTION' space  space  space space space space space space SPACE t_fieldcat 'L' 'C',
    4  'MEINS'     'MEINS'     'MARA'  '5'   space 'UOM'                  space  space  space space space space space space SPACE t_fieldcat 'C' 'C',
    5  'MENGE'     'MENGE'     'ISEG'  '13'  space 'ORG.INV.QTY'          space  space  space space space space space space SPACE t_fieldcat 'R' 'C',
    6  'WRTZL'     'WRTZL'     'ISEG'  '13'  space 'ORG.INV.VALUE'        space  space  space space space space space space SPACE t_fieldcat 'R' 'C',
    7  'BUCHM'     'BUCHM'     'ISEG'  '13'  space 'PHY.INV.QTY'          space  space  space space space space space space SPACE t_fieldcat 'R' 'C',
    8  'WRTBM'     'WRTBM'     'ISEG'  '13'  space 'PHY.INV.VALUE'        space  space  space space space space space space SPACE t_fieldcat 'R' 'C',
    9  'DIFFQTY'   'MENGE'     'ISEG'  '13'  space 'DIFF.INV.QTY'         space  space  space space space space space space SPACE t_fieldcat 'R' 'C',
    10 'DIFFVALUE' 'WRTZL'     'ISEG'  '13'  space 'DIFF.INV.VALUE'       space  space  space space space space space space SPACE t_fieldcat SPACE 'P',
    11 'BUDAT'     'BUDAT'     'ISEG'  '18'  space 'CORRECTED DATE'       space  space  space space space space space space SPACE t_fieldcat  'C' 'C',
    12 'GRTXT'     'GRTXT'     'ISEG'  '18'  space 'REASON'               space  space  space space space space space space SPACE t_fieldcat  'L' 'L',
    13 'REAS'      'REAS'      'ISEG'  '18'  space 'AUTH.BY'              space  space  space space space space space space SPACE t_fieldcat  'C' 'C'.
    x_layout-zebra = 'X'.
    perform set_top_page_heading using t_heading t_event.
    perform set_events using t_event.
    perform get_subtotals.
      w_status = ''.
      w_repid = sy-repid.
    w_comm   = 'USER_COMMAND'.
      call function 'REUSE_ALV_GRID_DISPLAY'
        exporting
          i_callback_program       = w_repid
          it_fieldcat              = t_fieldcat
          i_Callback_top_of_page   = 'Top-of-page'
          is_layout                = x_layout
          it_sort                  = t_sort
          i_callback_pf_status_set = w_status
          i_callback_user_command  = w_comm
          i_save                   = 'X'
          it_events                = t_event
          i_grid_title             = w_title
          tables
          t_outtab                 = ITS1
          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.
    FORM set_fieldcat2 USING
          p_colpos p_fieldname p_ref_fieldname p_ref_tabname
          p_outputlen p_noout
          p_seltext_m p_seltext_l p_seltext_s p_reptext_ddic p_ddictxt
          p_hotspot p_showasicon p_checkbox p_edit
          p_dosum
          t_fieldcat TYPE slis_t_fieldcat_alv
          P_JUST
          P_FTYPE.
      DATA: wa_fieldcat TYPE slis_fieldcat_alv.
      CLEAR wa_fieldcat.
    General settings
      wa_fieldcat-fieldname = p_fieldname.
      wa_fieldcat-col_pos = p_colpos.
      wa_fieldcat-no_out = p_noout.
      wa_fieldcat-hotspot = p_hotspot.
      wa_fieldcat-checkbox = p_checkbox.
      wa_fieldcat-icon = p_showasicon.
      wa_fieldcat-do_sum = p_dosum.
    wa_fieldcat-t_subtot = p_subtot.
    Set output length.
      IF NOT p_outputlen IS INITIAL.
        wa_fieldcat-outputlen = p_outputlen.
      ENDIF.
    Set text headers.
    IF NOT p_seltext_m IS INITIAL.
        wa_fieldcat-seltext_m = p_seltext_m.
    ENDIF.
    IF NOT p_seltext_l IS INITIAL.
        wa_fieldcat-seltext_l = p_seltext_l.
    ENDIF.
    IF NOT p_seltext_s IS INITIAL.
        wa_fieldcat-seltext_s = p_seltext_s.
    ENDIF.
      IF NOT p_reptext_ddic IS INITIAL.
        wa_fieldcat-reptext_ddic = p_reptext_ddic.
      ENDIF.
    IF NOT p_ddictxt IS INITIAL.
        wa_fieldcat-ddictxt = p_ddictxt.
    ENDIF.
      IF NOT P_JUST IS INITIAL.
        WA_FIELDCAT-JUST = P_JUST.
      ENDIF.
      IF NOT p_edit IS INITIAL.
        wa_fieldcat-Input     = 'X'.
        wa_fieldcat-edit     = 'X'.
        wa_fieldcat-do_sum = 'x'.
       wa_fieldcat-checkbox = 'x'.
       wa_fieldcat-hotspot = 'x'.
        ENDIF.
    APPEND wa_fieldcat TO t_fieldcat.
    ENDFORM.                   "set_fieldcat2
    ======================== Subroutines called by ALV ================
    *&      Form  top_of_page
          Called on top_of_page ALV event.
          Prints the heading.
    form top_of_page.
      call function 'REUSE_ALV_COMMENTARY_WRITE'
         exporting
              it_list_commentary = t_heading.
    ENDFORM.
    form set_top_page_heading using t_heading type slis_t_listheader
                                    t_events  type slis_t_event.
    data: x_heading type slis_listheader,
          x_event   type line of slis_t_event.
    Report title
      clear t_heading[].
      clear x_heading.
      x_heading-typ = 'H'.
      x_heading-info = 'PHYSICAL INVENTORY AUDIT REPORT'.
      append x_heading to t_heading.
    Plant Name
    clear x_heading.
      x_heading-typ = 'S'.
      x_heading-key = 'PLANT        : '.
      x_heading-info = PLANT.
      append x_heading to t_heading.
    IF DATE2 = '00.00.0000'.
      CONCATENATE DATE1 'to' DATE1 INTO DT SEPARATED BY SPACE.
    ELSE.
      CONCATENATE DATE1 'to' DATE2 INTO DT SEPARATED BY SPACE.
    ENDIF.
    X_heading-TYP = 'S'.
    X_heading-key = 'PERIOD         :'.
    X_heading-INFO = DT.
    APPEND x_heading TO t_heading.
    Control Date
      clear x_heading.
      x_heading-typ = 'S'.
      x_heading-key = 'CONTROL NO. :'.
      x_heading-info = ' ASDFADDFAAS  DATE : 11.04.2007'.
      append x_heading to t_heading.
    Top of page event
      x_event-name = slis_ev_top_of_page.
      x_event-form = 'TOP_OF_PAGE'.
      append x_event to t_events.
    endform.
    FORM get_subtotals.
    CLEAR lv_sort.
    lv_sort-fieldname = 'MENGE'.
    lv_sort-tabname = 'ITS1'.
    lv_sort-spos = 3.
    lv_sort-up = 'X'.
    lv_sort-subtot = 'X'.
    APPEND lv_sort TO t_sort.
    clear lv_sort.
    lv_sort-fieldname = 'WRTZL'.
    lv_sort-tabname = 'ITS1'.
    lv_sort-spos = 4.
    lv_sort-up = 'X'.
    lv_sort-subtot = 'X'.
    APPEND lv_sort TO t_sort.
    clear lv_sort.
    lv_sort-fieldname = 'BUCHM'.
    lv_sort-tabname = 'ITS1'.
    lv_sort-spos = 5.
    lv_sort-up = 'X'.
    lv_sort-subtot = 'X'.
    APPEND lv_sort TO t_sort.
    clear lv_sort.
    lv_sort-fieldname = 'WRTBM'.
    lv_sort-tabname = 'ITS1'.
    lv_sort-spos = 6.
    lv_sort-up = 'X'.
    lv_sort-subtot = 'X'.
    APPEND lv_sort TO t_sort.
    clear lv_sort.
    lv_sort-fieldname = 'DIFFQTY'.
    lv_sort-tabname = 'ITS1'.
    lv_sort-spos = 7.
    lv_sort-up = 'X'.
    lv_sort-subtot = 'X'.
    APPEND lv_sort TO t_sort.
    clear lv_sort.
    lv_sort-fieldname = 'DIFFVALUE'.
    lv_sort-tabname = 'ITS1'.
    lv_sort-spos = 8.
    lv_sort-up = 'X'.
    lv_sort-subtot = 'X'.
    APPEND lv_sort TO t_sort.
    clear lv_sort.
    ENDFORM.
    form set_events using t_events type slis_t_event.
    data: x_event   type line of slis_t_event.
    endform.

    Don't give the ratios (quantity, amount, etc.) in the IT_SORT parameter, but the criteria of sorting. (material type, material number, etc.)
    In the field catalog IT_FIELDCAT of the ratio, give the do_sum = 'X'.
    Regards

  • Only sub total in alv report

    hi,
    I have a report on ALV with sub totals for some fields, it is working fine but my requirement is whether i can get only the sub totals of that report.
    regards,
    Prabhu

    HI
    refer this code.
    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.
    *END OF ZALV PROGRAM
    Reward all helpfull answers.
    Regards.
    Jay

Maybe you are looking for