Subtotal in REUSE_ALV_HIERSEQ_LIST_DISPLAY

Hello,
Can someone tell me how can we get the Subtotals in the ALV?
I have used Sort and DO_SUM option
Thanks,
Sneha Singh.

Hi Sneha,
You can use w_fieldcat-do_sum = 'X'  in fieldcat & while building sorting table use
  w_sort-up        = 'X'.
  w_sort-subtot    = 'X'.
Please refer below code it is exclusively a subtotal report with Hierarchical ALV.
[http://wiki.sdn.sap.com/wiki/display/Snippets/Subtotalsinhirarchial+report]
Kindly set to resolved if it helps you.
Regards
Abhii

Similar Messages

  • REUSE_ALV_HIERSEQ_LIST_DISPLAY and subtotal functionality

    Hello,
    I'm using REUSE_ALV_HIERSEQ_LIST_DISPLAY for a report.
    Can a field in the ITEM_TABLE (ITEMCOST) be subtotaled directly into a field in its parent line in the HEADER_TABLE (TOTALINVOICE)?
    Or do I need to do this programmatically outside of the call to REUSE_ALV_HIERSEQ_LIST_DISPLAY?
    Thx.
    Andy

    Hi,
    add do_sum = 'X" for the field in the field catalog
    see the example..
            w_l_fieldcat-reptext_ddic   = 'WRBTR'.
            w_l_fieldcat-outputlen      = 18.
           w_l_fieldcat-do_sum       = 'X'.            "write this
            MODIFY ch_tab_fieldcat from w_l_fieldcat.
    Pass this field catalog to fm 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'.
    Regards,
    Prabhudas

  • Subtotal for line item in REUSE_ALV_HIERSEQ_LIST_DISPLAY

    Hi Abapers,
    Is it possible to have subtotal functionality for line item for
    REUSE_ALV_HIERSEQ_LIST_DISPLAY.
    when i select particular line item and press subtotal button
    system displaying information mesage
    "Subtotals cannot be calculated using item
    characteristics"
    Even when  i executed  standard hie program same message displaying for line item.
    please provide any sample code for subtotal for line item .
    regards,
    Hari priya

    just copy the program and execute
    *& Report  Z_HIERSEQ_REP2                                              *
    *& author : ramesh.k                                                                    *
    *& title  : hierseq list in alv format                                                                    *
    REPORT  z_hierseq_rep2 MESSAGE-ID zrae.
    TYPE-POOLS : slis.
    *structure declarations
    *structure for likp
    TYPES : BEGIN OF ty_likp,
             vbeln TYPE vbeln_vl,
             vkorg TYPE vkorg,
             END OF ty_likp.
    *structure for lips
    TYPES : BEGIN OF ty_lips,
             vbeln TYPE vbeln_vl,
             posnr TYPE posnr_vl,
             matnr TYPE matnr,
             matkl TYPE matkl,
             ntgew TYPE ntgew_15,
             END OF ty_lips.
    *internal table declarations
    DATA : t_likp TYPE STANDARD TABLE OF ty_likp INITIAL SIZE 0,
           t_lips TYPE STANDARD TABLE OF ty_lips INITIAL SIZE 0.
    DATA : t_fieldcat TYPE slis_t_fieldcat_alv,
           t_sortinfo TYPE slis_t_sortinfo_alv,
           i_events TYPE slis_t_event.
    *workareas
    DATA : w_likp TYPE ty_likp,
           w_lips TYPE ty_lips,
           w_fieldcat TYPE slis_fieldcat_alv,
           w_keyinfo TYPE slis_keyinfo_alv,
           w_sortinfo TYPE slis_sortinfo_alv,
           W_event TYPE slis_alv_event ,
           sub_text type slis_subtot_text.
    *global declarations.
    DATA : g_vbeln like likp-vbeln.
    *selection-screen declarations
    SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME.
    SELECT-OPTIONS : s_vbeln FOR g_vbeln.
    SELECTION-SCREEN END OF BLOCK blk1.
    AT SELECTION-SCREEN.
      SELECT SINGLE
             vbeln
             FROM likp
             INTO (w_likp-vbeln)
             WHERE vbeln IN s_vbeln.
      IF sy-subrc NE 0.
        MESSAGE i001 WITH 'vbeln not found'.
      ENDIF.
    START-OF-SELECTION.
    get_data_likp
      PERFORM sub_getdata_likp.
    get_data_lips
      PERFORM sub_getdata_lips.
    fieldcatlog_build
      PERFORM build_fieldcatlog.
    *SORTINFO FOR SUBTOTALS
      PERFORM get_sortinfo.
    *KEYINFORMATION
      PERFORM get_keyinfo.
    *LIST DISPLAY
      PERFORM alv_list_display.
    *&      Form  sub_getdata_likp
        extracting the data from likp.
    -->  p1        text
    <--  p2        text
    FORM sub_getdata_likp .
      SELECT vbeln
             vkorg
             FROM likp
             INTO TABLE t_likp
             WHERE vbeln IN s_vbeln.
    ENDFORM.                    " sub_getdata_likp
    *&      Form  sub_getdata_lips
       extracting data from lips.
    -->  p1        text
    <--  p2        text
    FORM sub_getdata_lips .
      SELECT vbeln
             posnr
             matnr
             matkl
             ntgew
             FROM lips
             INTO TABLE t_lips
             FOR ALL ENTRIES IN t_likp
             WHERE vbeln = t_likp-vbeln.
    ENDFORM.                    " sub_getdata_lips
    *&      Form  build_fieldcatlog
          text
    -->  p1        text
    <--  p2        text
    FORM build_fieldcatlog .
    *FIELDCATLOG FOR HEADER TABLE
      PERFORM build_fieldcatlog1 USING :
                     '1' 'VBELN' 'DELIVERY NO' 'T_LIKP' ' ' ' ' ' ',
                     '2' 'VKORG' 'GROUP'       'T_LIKP' ' ' ' ' ' ',
    *FIELDCATLOAG FOR ITEM TABLE
                     '1' 'POSNR' 'ITEM NO' 'T_LIPS' ' ' ' ' ' ',
                     '2' 'MATNR' 'MAT NO'  'T_LIPS' ' ' ' ' ' ',
                     '3' 'MATKL' 'GROUP'   'T_LIPS' ' ' ' ' ' ',
                     '4' 'NTGEW' 'QUAN'    'T_LIPS' 'X' 'X' 'X'.
    ENDFORM.                    " build_fieldcatlog
    *&      Form  build_fieldcatlog1
          text
         -->P_0185   text
         -->P_0186   text
         -->P_0187   text
         -->P_0188   text
    FORM build_fieldcatlog1  USING
                                  pcol     TYPE char2
                                  pfldname TYPE char8
                                  pseltext TYPE char20
                                  ptabname TYPE char10
                                  psum     TYPE char10
                                  PQUAN    TYPE CHAR15
                                  PSUBTOTAL TYPE CHAR40.
      w_fieldcat-col_pos = pcol.
      w_fieldcat-fieldname = pfldname.
      w_fieldcat-seltext_m = pseltext.
      w_fieldcat-tabname = ptabname.
      w_fieldcat-do_sum = psum.
      W_FIELDCAT-qfieldname = PQUAN.
    W_FIELDCAT-subtotals_text = PSUBTOTAL.
      APPEND w_fieldcat TO t_fieldcat.
    ENDFORM.                    " build_fieldcatlog1
    *&      Form  GET_KEYINFO
          text
    -->  p1        text
    <--  p2        text
    FORM get_keyinfo .
      w_keyinfo-header01 = 'VBELN'.
      w_keyinfo-item01   = 'VBELN'.
    ENDFORM.                    " GET_KEYINFO
    *&      Form  ALV_LIST_DISPLAY
          text
    FORM alv_list_display .
    DATA : S_REPID TYPE SY-REPID.
           S_REPID = SY-REPID.
    DATA W_LAYOUT TYPE SLIS_LAYOUT_ALV.
    W_LAYOUT-totals_text = 'G.TOTAL'.
    W_LAYOUT-subtotals_text = 'SUBTOTAL_TEXT'.
    *FORM subtotal_text CHANGING p_total TYPE any
                               p_subtot_text TYPE slis_subtot_text.
    p_subtot_text-criteria = 'VBELN'.
    *p_subtot_text-max_len = 40.
    *p_subtot_text-display_text_for_subtotal
    *= 'SUBTOTAL'.
    **ENDIF.
    *ENDFORM.
      CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
        EXPORTING
      I_INTERFACE_CHECK              = ' '
         i_callback_program             = S_REPID
      I_CALLBACK_PF_STATUS_SET       = ' '
      I_CALLBACK_USER_COMMAND        = ' '
       IS_LAYOUT                      = W_LAYOUT
         it_fieldcat                    = t_fieldcat
      IT_EXCLUDING                   =
      IT_SPECIAL_GROUPS              =
         it_sort                        = t_sortinfo
      IT_FILTER                      =
      IS_SEL_HIDE                    =
      I_SCREEN_START_COLUMN          = 0
      I_SCREEN_START_LINE            = 0
      I_SCREEN_END_COLUMN            = 0
      I_SCREEN_END_LINE              = 0
      I_DEFAULT                      = 'X'
       I_SAVE                         = 'X'
      IS_VARIANT                     =
       IT_EVENTS                      = i_eventS
      IT_EVENT_EXIT                  =
          i_tabname_header               = 'T_LIKP'
          i_tabname_item                 = 'T_LIPS'
      I_STRUCTURE_NAME_HEADER        =
      I_STRUCTURE_NAME_ITEM          =
          is_keyinfo                     = w_keyinfo
      IS_PRINT                       =
      IS_REPREP_ID                   =
      I_BYPASSING_BUFFER             =
      I_BUFFER_ACTIVE                =
    IMPORTING
      E_EXIT_CAUSED_BY_CALLER        =
      ES_EXIT_CAUSED_BY_USER         =
        TABLES
          t_outtab_header                = t_likp
          t_outtab_item                  = t_lips
    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.                    " ALV_LIST_DISPLAY
    *&      Form  GET_SORTINFO
          text
    -->  p1        text
    <--  p2        text
    FORM get_sortinfo .
      w_sortinfo-fieldname = 'VBELN'.
      w_sortinfo-tabname   = 'T_LIKP'.
    W_SORTINFO-group     = TEXT-001.
      w_sortinfo-subtot    = 'X'.
      APPEND w_sortinfo  TO t_sortinfo.
    ENDFORM.                    " GET_SORTINFO

  • Use subtotal feature in REUSE_ALV_HIERSEQ_LIST_DISPLAY

    Dear All,
    Im using the FM REUSE_ALV_HIERSEQ_LIST_DISPLAY to display Hierarchy list display.
    How can i add subtotal feature to it?

    Hi Juhi,
    You can use the field catalog  the to do sum .  The using do-sum.
    lw_fcat-do_sum = 'X'.
    and using the   sort table    you can use to do sub total.
      lw_sort-tabname = 'IT_FINAL'.
      lw_sort-fieldname = 'BRNCH'.
      lw_sort-up        = 'X'.
      lw_sort-subtot  = 'X'.
      append lw_sort to it_sort.
    pass it to Reuse_alv_hierseq_list_display
    CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
        EXPORTING
       i_callback_program             =  sy-repid
       is_layout                      = gs_layout
       it_fieldcat                    = it_fcat
       it_sort                        = it_sort
       i_default                      = 'X'
       i_save                         = 'A'
       is_variant                     =  wa_variant
       it_events                      = it_events
        i_tabname_header               =  g_tabname_header
        i_tabname_item                 =  g_tabname_item
         is_keyinfo                     = gs_keyinfo
        TABLES
          t_outtab_header                = it_final
          t_outtab_item                  = it_final1
       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.
    Regards .
    Nilesh

  • REUSE_ALV_HIERSEQ_LIST_DISPLAY

    Hi,
    I have developed a report using REUSE_ALV_HIERSEQ_LIST_DISPLAY .
    I need to include checkbox at the header level.
    Can anyone help me with an example?
    Thanks

    Hi Prabha,
    Go through this hope u can find ur solution.
    TYPE-POOLS: slis.
    DATA: BEGIN OF itab OCCURS 0,
            vbeln TYPE vbeln,
            expand,
          END OF itab.
    DATA: BEGIN OF itab1 OCCURS 0,
            vbeln TYPE vbeln,
            posnr TYPE posnr,
            matnr TYPE matnr,
            netpr TYPE netpr,
          END OF itab1.
    DATA: t_fieldcatalog TYPE slis_t_fieldcat_alv.
    DATA: s_fieldcatalog TYPE slis_fieldcat_alv.
    s_fieldcatalog-col_pos = '1'.
    s_fieldcatalog-fieldname = 'VBELN'.
    s_fieldcatalog-tabname   = 'ITAB'.
    s_fieldcatalog-rollname  = 'VBELN'.
    s_fieldcatalog-outputlen = '12'.
    APPEND s_fieldcatalog TO t_fieldcatalog.
    CLEAR: s_fieldcatalog.
    s_fieldcatalog-col_pos = '1'.
    s_fieldcatalog-fieldname = 'VBELN'.
    s_fieldcatalog-tabname   = 'ITAB1'.
    s_fieldcatalog-rollname  = 'VBELN'.
    s_fieldcatalog-outputlen = '12'.
    APPEND s_fieldcatalog TO t_fieldcatalog.
    CLEAR: s_fieldcatalog.
    s_fieldcatalog-col_pos = '2'.
    s_fieldcatalog-fieldname = 'POSNR'.
    s_fieldcatalog-tabname   = 'ITAB1'.
    s_fieldcatalog-rollname  = 'POSNR'.
    APPEND s_fieldcatalog TO t_fieldcatalog.
    CLEAR: s_fieldcatalog.
    s_fieldcatalog-col_pos = '3'.
    s_fieldcatalog-fieldname = 'MATNR'.
    s_fieldcatalog-tabname   = 'ITAB1'.
    s_fieldcatalog-rollname  = 'MATNR'.
    APPEND s_fieldcatalog TO t_fieldcatalog.
    CLEAR: s_fieldcatalog.
    s_fieldcatalog-col_pos = '4'.
    s_fieldcatalog-fieldname = 'NETPR'.
    s_fieldcatalog-tabname   = 'ITAB1'.
    s_fieldcatalog-rollname  = 'NETPR'.
    s_fieldcatalog-do_sum    = 'X'.
    APPEND s_fieldcatalog TO t_fieldcatalog.
    CLEAR: s_fieldcatalog.
    DATA: s_layout TYPE slis_layout_alv.
    s_layout-subtotals_text            = 'SUBTOTAL TEXT'.
    s_layout-key_hotspot = 'X'.
    s_layout-expand_fieldname = 'EXPAND'.
    SELECT vbeln UP TO 100 ROWS
           FROM
           vbak
           INTO TABLE itab.
    IF NOT itab[] IS INITIAL.
      SELECT vbeln posnr matnr netpr
             FROM vbap
             INTO TABLE itab1
             FOR ALL ENTRIES IN itab
             WHERE vbeln = itab-vbeln.
    ENDIF.
    DATA: v_repid TYPE syrepid.
    v_repid = sy-repid.
    DATA: s_keyinfo TYPE slis_keyinfo_alv.
    s_keyinfo-header01 = 'VBELN'.
    s_keyinfo-item01   = 'VBELN'.
    CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
         EXPORTING
              i_callback_program = v_repid
              is_layout          = s_layout
              it_fieldcat        = t_fieldcatalog
              i_tabname_header   = 'ITAB'
              i_tabname_item     = 'ITAB1'
              is_keyinfo         = s_keyinfo
         TABLES
              t_outtab_header    = itab
              t_outtab_item      = itab1
         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.
    Reward points if helpful.
    Thanks
    Naveen khan

  • Subtotal text in the 3rd column of the alv list

    Hi Guru,
    Can anyone know or have some codes on how to implement a subtotal text in the 3rd column of the ALV list. Im using FM REUSE_ALV_HIERSEQ_LIST_DISPLAY to display the report.
    Please give some advise or help.
    Thanks and rewards is given.

    Hi my friend,
    Insted Using FM REUSE_ALV_HIERSEQ_LIST_DISPLAY
    better use REUSE_ALV_GRID_DISPLAY.
    in that 
            it_sort            = i_sort[]
      constants :     c_x       type char1 value 'X'.
        l_rec_fieldcat_wa-do_sum    = c_x.
      endif.

  • Example/help for CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY' editable

    hello experts,
    are there any example using function 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'  with editable columns.
    Or, have somebody an idea to resolve my problem.
    I can edit the fields in the alv-grid, but I don't see the changes in the internal table using 'LVC_TRANSFER_FROM_SLIS' function.
    thanks and regards.
    K. WErner

    hi,
    here is the code for editable Hieararchical ALV
    TYPE-POOLS : slis.
    TABLES : mseg.
    DATA : BEGIN OF itab_head OCCURS 0,
            mat LIKE mseg-matnr,
    *        matnr LIKE mseg-matnr,
            werks LIKE mseg-werks,
           END OF itab_head.
    DATA : BEGIN OF itab_item OCCURS 0,
    *        mat LIKE mseg-matnr,
            matnr LIKE mseg-matnr,
            werks LIKE mseg-werks,
            mblnr LIKE mseg-mblnr,
            menge LIKE mseg-menge,
           END OF itab_item.
    DATA : t_fcat TYPE slis_t_fieldcat_alv,
           key_info TYPE slis_keyinfo_alv,
           t_eve TYPE slis_t_event,
           gt_subtot TYPE slis_t_sortinfo_alv,
           subtot LIKE LINE OF gt_subtot,
           t_listhead TYPE slis_t_listheader,
           st_line TYPE slis_listheader.
    DATA : lin_no TYPE i.
    DATA : t_mtdoc LIKE mseg-mblnr.
    SELECT-OPTIONS : mat FOR mseg-matnr.
    INITIALIZATION.
      PERFORM build_cat USING t_fcat.
      PERFORM build_eve.
    START-OF-SELECTION.
      PERFORM get_data.
      PERFORM dis_data.
    *&      Form  build_cat
    *       text
    *      -->TEMP_FCAT  text
    FORM build_cat USING temp_fcat TYPE slis_t_fieldcat_alv.
      DATA : wa_fcat TYPE slis_fieldcat_alv.
      wa_fcat-tabname = 'ITAB_HEAD'.
      wa_fcat-fieldname = 'MAT'.
      wa_fcat-seltext_m = 'Material'.
      APPEND wa_fcat TO temp_fcat.
      CLEAR wa_fcat.
      wa_fcat-tabname = 'ITAB_HEAD'.
      wa_fcat-fieldname = 'WERKS'.
      wa_fcat-seltext_m = 'Plant'.
      wa_fcat-edit = 'X'.
      wa_fcat-input = 'X'.
      APPEND wa_fcat TO temp_fcat.
      CLEAR wa_fcat.
      wa_fcat-tabname = 'ITAB_ITEM'.
      wa_fcat-fieldname = 'MBLNR'.
      wa_fcat-seltext_m = 'Material Doc.'.
      APPEND wa_fcat TO temp_fcat.
      CLEAR wa_fcat.
      wa_fcat-tabname = 'ITAB_ITEM'.
      wa_fcat-fieldname = 'MENGE'.
      wa_fcat-seltext_m = 'Quantity'.
      wa_fcat-edit = 'X'.
      wa_fcat-input = 'X'.
      wa_fcat-do_sum = 'Y'.
      APPEND wa_fcat TO temp_fcat.
      CLEAR wa_fcat.
      subtot-spos = 1.
      subtot-fieldname = 'MAT'.
      subtot-tabname = 'ITAB_HEAD'.
      subtot-up = 'X'.
      subtot-group = 'X'.
      subtot-subtot = 'X'.
      subtot-expa = 'X'.
      APPEND subtot TO gt_subtot.
    ENDFORM.                    "build_cat
    *&      Form  build_eve
    *       text
    FORM build_eve.
      DATA : wa_eve TYPE slis_alv_event.
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
       EXPORTING
         i_list_type           = 0
       IMPORTING
         et_events             = t_eve
    *   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 t_eve INTO wa_eve WITH KEY name = 'TOP_OF_PAGE'.
      IF sy-subrc = 0.
        wa_eve-form = 'TOP_OF_PAGE'.
        MODIFY t_eve FROM wa_eve INDEX sy-tabix.
      ENDIF.
    ENDFORM.                    "build_eve
    *&      Form  get_data
    *       text
    FORM get_data.
      SELECT matnr werks mblnr menge FROM mseg INTO CORRESPONDING FIELDS OF TABLE itab_item
      WHERE matnr IN mat.
    ENDFORM.                    "get_data
    *&      Form  dis_data
    *       text
    FORM dis_data.
      key_info-header01 = 'MAT'.
      key_info-item01 = 'MATNR'.
      key_info-header02 = 'WERKS'.
      key_info-item02 = 'WERKS'.
      REFRESH itab_head.
      LOOP AT itab_item.
        ON CHANGE OF itab_item-matnr OR itab_item-werks.
          MOVE-CORRESPONDING itab_item TO itab_head.
          itab_head-mat = itab_item-matnr.
          APPEND itab_head.
        ENDON.
      ENDLOOP.
      CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
        EXPORTING
          i_callback_program             = 'ZALV_PRDS'
          it_fieldcat                    = t_fcat
          it_sort                        = gt_subtot
          it_events                      = t_eve[]
          i_tabname_header               = 'ITAB_HEAD'
          i_tabname_item                 = 'ITAB_ITEM'
          is_keyinfo                     = key_info
        TABLES
          t_outtab_header                = itab_head
          t_outtab_item                  = itab_item
    * 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.                    "dis_data
    *&      Form  top_of_page
    *       text
    FORM top_of_page.
      CLEAR st_line.
      st_line-typ = 'H'.
      st_line-info = 'Dhwani Shah'.
      APPEND st_line TO t_listhead.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          it_list_commentary       = t_listhead
    *   I_LOGO                   =
    *   I_END_OF_LIST_GRID       =
    *   I_ALV_FORM               =
    ENDFORM.                    "top_of_page
    reward if usefull.....

  • USER_COMMAND in the 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'

    HAI Experts ,
         Can anyone pls give me a sample code which displays some operation using  USER_COMMAND in the 'REUSE_ALV_HIERSEQ_LIST_DISPLAY' .
    Any small sample program will be helpful.
    Regards,
    Devendran

    hi
    Check this code:
    REPORT  Z_RE_ALV_JERARQUIA    .
    *****TABLAS
    TABLES : MARA, MAKT.
    ****TIPOS
    TYPE-POOLS: SLIS.
    ****TABLAS INTERNAS
    DATA: IT_MARA LIKE MARA OCCURS 0 WITH HEADER LINE,
          WA_MARA LIKE LINE OF  IT_MARA ,
          BEGIN OF IT_HEADER OCCURS 0,
          TIPO LIKE MARA-MTART,
          END OF IT_HEADER,
          BEGIN OF IT_ITEM OCCURS 0,
          TIPO LIKE MARA-MTART,
          MATERIAL LIKE MARA-MATNR,
          MATKL  LIKE MARA-MATKL,
          MEINS  LIKE MARA-MEINS,
          MAKTX  LIKE MAKT-MAKTX,
          END OF IT_ITEM.
    *****ALV
    DATA: IT_KEYINFO  type SLIS_KEYINFO_ALV OCCURS 0 WITH HEADER LINE,
          G_REPID LIKE SY-REPID,
          IT_LAYOUT TYPE SLIS_LAYOUT_ALV,
          IT_FIELD TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
          IT_EVENTS TYPE SLIS_T_EVENT  WITH HEADER LINE,
          IT_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER,
          IT_LIST_END_OF_PAGE TYPE SLIS_T_LISTHEADER,
          IT_SORT TYPE SLIS_T_SORTINFO_ALV WITH HEADER LINE,
          IT_FILTER TYPE SLIS_T_FILTER_ALV WITH HEADER LINE,
          GT_SP_GROUP TYPE SLIS_T_SP_GROUP_ALV,
          ls_event type slis_alv_event,
          LS_LINE TYPE slis_listheader.
    *****VARIABLES
    DATA: TEXT(60).
    ****CONSTANTES
    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'.
    ****INITIALIZATION
    INITIALIZATION.
      G_REPID = SY-REPID.
      IT_LAYOUT-ZEBRA = 'X'.
    IT_LAYOUT-no_hotspot = ' '.
    IT_layout-colwidth_optimize = 'X'.
    ****START OF SELECTION
    START-OF-SELECTION.
      SELECT-OPTIONS: TIPO FOR MARA-MTART OBLIGATORY.
      SELECT *
      FROM MARA
      INTO TABLE IT_MARA
      WHERE MTART IN TIPO.
      IF NOT IT_MARA[] IS INITIAL.
        PERFORM FO_PROCESAR.
        PERFORM FO_KEY_INFO.
        PERFORM FO_IMPRIMIR_CABECERA USING IT_LIST_TOP_OF_PAGE[].
        PERFORM FO_SORT.
        PERFORM FO_FIELDCAT.
        PERFORM FO_FILTRAR.
        PERFORM FO_EVENTOS USING IT_events[].
        PERFORM FO_MOSTRAR_ALV_JER.
      ELSE.
        MESSAGE S000(SU) WITH  TEXT-001.
      ENDIF.
    *&      Form  FO_PROCESAR
    FORM FO_PROCESAR.
      SORT IT_MARA BY MTART ASCENDING.
      LOOP AT IT_MARA.
        MOVE-CORRESPONDING IT_MARA TO WA_MARA.
        MOVE WA_MARA-MTART TO IT_HEADER-TIPO.
        APPEND IT_HEADER.
        MOVE: IT_MARA-MTART TO IT_ITEM-TIPO,
              IT_MARA-MATNR TO IT_ITEM-MATERIAL,
              IT_MARA-MATKL TO IT_ITEM-MATKL,
              IT_MARA-MEINS TO IT_ITEM-MEINS.
        SELECT SINGLE MAKTX INTO IT_ITEM-MAKTX
        FROM MAKT
        WHERE MATNR EQ IT_MARA-MATNR
        AND SPRAS EQ 'S'.
        APPEND IT_ITEM.
        CLEAR: IT_MARA, WA_MARA, IT_ITEM, IT_HEADER.
      ENDLOOP.
      SORT IT_HEADER BY TIPO ASCENDING.
      DELETE ADJACENT DUPLICATES FROM IT_HEADER COMPARING TIPO.
    ENDFORM.                    " FO_PROCESAR
    *&      Form  FO_MOSTRAR_ALV_JER
    FORM FO_MOSTRAR_ALV_JER.
      CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
        EXPORTING
      I_INTERFACE_CHECK              = ' '
       I_CALLBACK_PROGRAM             = G_REPID
      I_CALLBACK_PF_STATUS_SET       = ' '
       I_CALLBACK_USER_COMMAND        = 'USER_COMMAND'
         IS_LAYOUT                      = IT_LAYOUT
         IT_FIELDCAT                    = IT_FIELD[]
      IT_EXCLUDING                   =
      IT_SPECIAL_GROUPS              =
         IT_SORT                        = IT_SORT[]
       IT_FILTER                      = IT_FILTER[]
      IS_SEL_HIDE                    =
      I_SCREEN_START_COLUMN          = 10
      I_SCREEN_START_LINE            = 5
      I_SCREEN_END_COLUMN            = 45
      I_SCREEN_END_LINE              = 30
      I_DEFAULT                      = 'X'
         I_SAVE                         = 'X'
      IS_VARIANT                     =
         IT_EVENTS                      = IT_EVENTS[]
      IT_EVENT_EXIT                  =
          I_TABNAME_HEADER               = 'IT_HEADER'
          I_TABNAME_ITEM                 = 'IT_ITEM'
      I_STRUCTURE_NAME_HEADER        =
      I_STRUCTURE_NAME_ITEM          =
          IS_KEYINFO                     = IT_KEYINFO
      IS_PRINT                       =
      IS_REPREP_ID                   =
      I_BUFFER_ACTIVE                =
      I_BYPASSING_BUFFER             =
    IMPORTING
      E_EXIT_CAUSED_BY_CALLER        =
      ES_EXIT_CAUSED_BY_USER         =
        TABLES
          T_OUTTAB_HEADER                = IT_HEADER
          T_OUTTAB_ITEM                  = IT_ITEM
       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.                    " FO_MOSTRAR_ALV_JER
    *&      Form  FO_KEY_INFO
    FORM FO_KEY_INFO.
      REFRESH IT_KEYINFO. CLEAR IT_KEYINFO.
      IT_KEYINFO-header01 = 'TIPO'.
      IT_KEYINFO-item01 = 'TIPO'.
      APPEND IT_KEYINFO.
    ENDFORM.                    " FO_KEY_INFO
    *&      Form  FO_IMPRIMIR_CABECERA
    FORM FO_IMPRIMIR_CABECERA USING    TEXTO_REPORT TYPE SLIS_T_LISTHEADER.
      CLEAR: LS_line, text.
      LS_line-typ  = 'H'.
      WRITE: sy-title TO text.
      LS_line-info = text.
      APPEND LS_line TO TEXTO_REPORT.
      CLEAR: LS_line, text.
      LS_line-typ  = 'A'.
      WRITE: 'Fecha de Ejecución:' to text,
              sy-DATUM TO text+20(20).
      LS_line-info = text.
      APPEND LS_line TO TEXTO_REPORT.
      CLEAR: LS_line, text.
      LS_line-typ  = 'A'.
      WRITE: 'Usuario:' to text,
      sy-uname TO text+20(20).
      LS_line-info = text.
      APPEND LS_line TO TEXTO_REPORT.
      CLEAR LS_LINE.
      APPEND LS_line TO TEXTO_REPORT.
    ENDFORM.                    " FO_IMPRIMIR_CABECERA
    *&      Form  FO_SORT
    FORM FO_SORT.
      IT_SORT-FIELDNAME = 'TIPO'.
      IT_SORT-TABNAME = 'IT_HEADER'.
      IT_SORT-GROUP   = 'X'.
      IT_SORT-UP      = 'X'.
      IT_SORT-DOWN    = ' '.
      IT_SORT-SUBTOT  = ' '.
      APPEND IT_SORT. CLEAR  IT_SORT.
    ENDFORM.                    " FO_SORT
    *&      Form  FO_FIELDCAT
    FORM FO_FIELDCAT.
      CLEAR IT_FIELD.
      IT_FIELD-TABNAME = 'IT_ITEM'.
      IT_FIELD-FIELDNAME = 'TIPO'.
      IT_FIELD-COL_POS = '1'.
      IT_FIELD-JUST = 'L'.
      IT_FIELD-SELTEXT_L = 'Tipo Material'.
      IT_FIELD-KEY = 'X'.
      APPEND  IT_FIELD.
      CLEAR IT_FIELD.
      IT_FIELD-TABNAME = 'IT_ITEM'.
      IT_FIELD-FIELDNAME = 'MATERIAL'.
      IT_FIELD-COL_POS = '2'.
      IT_FIELD-JUST = 'L'.
      IT_FIELD-SELTEXT_L = 'Codigo Material'.
      APPEND  IT_FIELD.
      CLEAR IT_FIELD.
      IT_FIELD-TABNAME = 'IT_ITEM'.
      IT_FIELD-FIELDNAME = 'MATKL'.
      IT_FIELD-COL_POS = '3'.
      IT_FIELD-JUST = 'L'.
      IT_FIELD-SELTEXT_L = 'Grupo De Articulos'.
      APPEND  IT_FIELD.
      CLEAR IT_FIELD.
      IT_FIELD-TABNAME = 'IT_ITEM'.
      IT_FIELD-FIELDNAME = 'MEINS'.
      IT_FIELD-COL_POS = '4'.
      IT_FIELD-JUST = 'L'.
      IT_FIELD-SELTEXT_L = 'Uni. Med. Base'.
      APPEND  IT_FIELD.
      CLEAR IT_FIELD.
      IT_FIELD-TABNAME = 'IT_ITEM'.
      IT_FIELD-FIELDNAME = 'MAKTX'.
      IT_FIELD-COL_POS = '5'.
      IT_FIELD-JUST = 'L'.
      IT_FIELD-outputlen = '40'.
      IT_FIELD-SELTEXT_L = 'Descriptivo'.
      APPEND  IT_FIELD.
    ENDFORM.                    " FO_FIELDCAT
    *&      Form  FO_EVENTOS
    FORM FO_EVENTOS  USING PIT_EVENTS type slis_t_event.
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
           EXPORTING
                I_LIST_TYPE     = 0
           IMPORTING
                ET_EVENTS       = PIT_EVENTS
           EXCEPTIONS
                LIST_TYPE_WRONG = 1
                OTHERS          = 2.
      read table PIT_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 pIT_EVENTS.
      endif.
      CLEAR LS_EVENT.
    ENDFORM.                    " FO_EVENTOS
    *&       FORM top_of_page                                              *
    FORM TOP_OF_PAGE.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
           EXPORTING
               i_logo             = 'ZLOGO_GRUPO_POLAR'
                IT_LIST_COMMENTARY = IT_LIST_TOP_OF_PAGE.
    ENDFORM.                    "TOP_OF_PAGE
    *&      Form  FO_FILTRAR
    FORM FO_FILTRAR.
    *IT_FILTER-FIELDNAME = 'TIPO'.
    *IT_FILTER-TABNAME = 'IT_HEADER'.
    *APPEND IT_FILTER. CLEAR IT_FILTER.
    ENDFORM.                    " FO_FILTRAR
    *&      Form  USER_COMMAND
    FORM USER_COMMAND  USING ucomm LIKE sy-ucomm
                         selfield TYPE slis_selfield.
    READ TABLE IT_ITEM INDEX SELFIELD-TABINDEX.
    IF SY-SUBRC EQ 0.
    ENDIF.
    ENDFORM.                    " USER_COMMAND
    Regards
    Gregory

  • I can't do Subtotal_text in REUSE_ALV_HIERSEQ_LIST_DISPLAY

    I'm using FM: REUSE_ALV_HIERSEQ_LIST_DISPLAY in my program and I need to display the subtotal text
    Previously, there is only 1 subtotal text, so I can use layout-subtotals_text = 'ABCDEF'
    Now users want to have more subtotal.
    I tried to use
    FORM SUBTOTAL_TEXT USING Header STRUCTURE TT_HEADER
                             IN_SUBTOTAL_TEXT TYPE slis_subtot_text.
    ENDFORM.
    But it doesn't work.
    How can I solve this problem.

    Hi Juhi,
    You can use the field catalog  the to do sum .  The using do-sum.
    lw_fcat-do_sum = 'X'.
    and using the   sort table    you can use to do sub total.
      lw_sort-tabname = 'IT_FINAL'.
      lw_sort-fieldname = 'BRNCH'.
      lw_sort-up        = 'X'.
      lw_sort-subtot  = 'X'.
      append lw_sort to it_sort.
    pass it to Reuse_alv_hierseq_list_display
    CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
        EXPORTING
       i_callback_program             =  sy-repid
       is_layout                      = gs_layout
       it_fieldcat                    = it_fcat
       it_sort                        = it_sort
       i_default                      = 'X'
       i_save                         = 'A'
       is_variant                     =  wa_variant
       it_events                      = it_events
        i_tabname_header               =  g_tabname_header
        i_tabname_item                 =  g_tabname_item
         is_keyinfo                     = gs_keyinfo
        TABLES
          t_outtab_header                = it_final
          t_outtab_item                  = it_final1
       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.
    Regards .
    Nilesh

  • Sub Total in REUSE_ALV_HIERSEQ_LIST_DISPLAY

    Hello Guys,
      I am using the FM  REUSE_ALV_HIERSEQ_LIST_DISPLAY to display my final Ouptut.
    At present my output is:
    MATNR  KUNNR     LABST
      002         212         50
      002         212              100
                                        150
    002          213         50
    002          213              100
                                        150
    Total                             300
    +And my required Output is : +
    MATNR  KUNNR     LABST
      002         212         50
      002         212              100
                                        150
    002          213         50
    002          213              100
                                        150
    Total                             150.
    Difference in the above two result is written in BOLD. 
    NOTE: Total is done for each MATERIAL.
    Please revert back to me ,if u need any further explanations.
    Regards,
    Najam

    HI,
    Check this link..
    REUSE_ALV_HIERSEQ_LIST_DISPLAY subtotal
    subtotal for line item in REUSE_ALV_HIERSEQ_LIST_DISPLAY
    Edited by: Avinash Kodarapu on Feb 27, 2009 1:00 PM

  • REGARDING alv sUBTOTAL

    hi friends,
    in alv grid display output on toolbar how to get button of Subtotal,Expand and Colapse
    pls,reply...........

    hi,
    try this.
    <b>DATA: gt_subtot TYPE slis_t_sortinfo_alv,
            subtot LIKE LINE OF gt_subtot.</b>
    subtot-spos = 1.
      subtot-fieldname = 'NAME1'.
      subtot-tabname = 'ITAB_HEAD'.
      subtot-up = 'X'.
      subtot-group = 'X'.
      subtot-subtot = 'X'.
      subtot-expa = 'X'.
      APPEND subtot TO gt_subtot.
      CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
        EXPORTING
          i_callback_program = 'ZRAW_COST'
          it_fieldcat        = fcat
         <b> it_sort            = gt_subtot</b>
          it_events          = eve
          i_tabname_header   = 'ITAB_HEAD'
          i_tabname_item     = 'ITAB_ITM'
          is_keyinfo         = alv_keyinfo
        TABLES
          t_outtab_header    = itab_head
          t_outtab_item      = itab_itm
        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.
    reward if useful.
    this is whole report for better understanding.
    REPORT  ZRAW_COST.
    TYPE-POOLS:slis.
    TABLES:mseg,
           lfa1,
           mkpf,
           ekpo,
           mara,
           j_1iexchdr,
           mbew.
    DATA:BEGIN OF itab_vend OCCURS 0,
          lifnr LIKE lfa1-lifnr,                      "Vendor Code
         END OF itab_vend.
    DATA:BEGIN OF itab_data OCCURS 0,
          lifnr LIKE mseg-lifnr,                      "Vendor Code
          mblnr LIKE mseg-mblnr,                      "Material Doc.
          charg LIKE mseg-charg,                      "Batch
          matnr LIKE mseg-matnr,                      "Material
          maktx LIKE makt-maktx,                      "Description
          menge LIKE mseg-menge,                      "Quantity
          dmbtr LIKE mseg-dmbtr,                      "Amount
          budat LIKE mkpf-budat,                      "G.R.Date
          xblnr LIKE mkpf-xblnr,                      "Delivery Note(Bill No.)
          frbnr LIKE mkpf-frbnr,                      "Bill of Lading(Bill Date)
          netpr LIKE ekpo-netpr,                      "Basic Rate
          matkl LIKE ekpo-matkl,                      "Material Group
         END OF itab_data.
    DATA:BEGIN OF itab_itm OCCURS 0,
          lifnr LIKE mseg-lifnr,                      "Vendor Code
          name1 LIKE lfa1-name1,                      "Vendor Name
          matkl LIKE ekpo-matkl,                      "Material Group
          wgbez LIKE t023t-wgbez,                     "Material Group Name
          mblnr LIKE mseg-mblnr,                      "Material Doc.
          matnr LIKE mseg-matnr,                      "Material
          maktx LIKE makt-maktx,                      "Description
          xblnr LIKE mkpf-xblnr,                      "Delivery Note(Bill No.)
          frbnr LIKE mkpf-frbnr,                      "Bill of lading(Bill Date)
          budat LIKE mkpf-budat,                      "G.R.Date
          exnum LIKE j_1iexchdr-exnum,                "Ex.Bill No.
          exdat LIKE j_1iexchdr-exdat,                "Ex.Bill Date
          charg LIKE mseg-charg,                      "Batch
          menge LIKE mseg-menge,                      "Quantity
          netpr LIKE ekpo-netpr,                      "Basic Rate
          verpr LIKE mbew-verpr,                      "Costing Rate
          dmbtr LIKE mseg-dmbtr,                      "Amount
         END OF itab_itm.
    DATA:BEGIN OF itab_head OCCURS 0,
          lifnr LIKE mseg-lifnr,                      "Vendor Code
          name1 LIKE lfa1-name1,                      "Vendor Name
          matkl LIKE ekpo-matkl,                      "Material Group
          wgbez LIKE t023t-wgbez,                     "Material Group Name
         END OF itab_head.
    DATA:fcat TYPE slis_t_fieldcat_alv,
         eve TYPE slis_t_event,
         alv_keyinfo  TYPE slis_keyinfo_alv,
         gt_subtot TYPE slis_t_sortinfo_alv,
         subtot LIKE LINE OF gt_subtot.
    DATA:ex_doc LIKE j_1iexchdr-exnum,
         ex_dat LIKE j_1iexchdr-exdat,
         mov_pr LIKE mbew-verpr,
         name LIKE lfa1-name1,
         gr_nm LIKE t023t-wgbez,
         t_mblnr LIKE mseg-mblnr,
         yr LIKE mseg-mjahr.
    DATA: BEGIN OF record OCCURS 0,
            act(003),
            rfd(003),
            matdoc(010),
            docyr(004),
          END OF record.
    DATA: bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE.
    SELECTION-SCREEN:BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
    SELECT-OPTIONS:dt FOR mkpf-budat OBLIGATORY,
                   vend FOR lfa1-lifnr,
                   mat_gr FOR mara-matkl.
    SELECTION-SCREEN:END OF BLOCK blk1.
    INITIALIZATION.
      PERFORM build_cat USING fcat.
    START-OF-SELECTION.
      PERFORM get_data.
      PERFORM dis_data.
    *&      Form  build_cat
          text
         -->T_FCAT     text
    FORM build_cat USING t_fcat TYPE slis_t_fieldcat_alv.
      DATA:wa_fcat TYPE slis_fieldcat_alv.
      wa_fcat-tabname = 'ITAB_HEAD'.
      wa_fcat-fieldname = 'NAME1'.
      wa_fcat-seltext_m = 'Vendor Name'.
      wa_fcat-outputlen = '30'.
    wa_fcat-just = 'C'.
      APPEND wa_fcat TO t_fcat.
      CLEAR wa_fcat.
      wa_fcat-tabname = 'ITAB_HEAD'.
      wa_fcat-fieldname = 'WGBEZ'.
      wa_fcat-seltext_m = 'Material Group Name'.
      wa_fcat-outputlen = '30'.
      wa_fcat-just = 'C'.
      APPEND wa_fcat TO t_fcat.
      CLEAR wa_fcat.
      wa_fcat-tabname = 'ITAB_ITM'.
      wa_fcat-fieldname = 'MBLNR'.
      wa_fcat-seltext_m = 'Material Doc.'.
      wa_fcat-outputlen = '15'.
      APPEND wa_fcat TO t_fcat.
      CLEAR wa_fcat.
      wa_fcat-tabname = 'ITAB_ITM'.
      wa_fcat-fieldname = 'MAKTX'.
      wa_fcat-seltext_m = 'Product Name'.
      wa_fcat-outputlen = '40'.
      wa_fcat-just = 'L'.
      APPEND wa_fcat TO t_fcat.
      CLEAR wa_fcat.
      wa_fcat-tabname = 'ITAB_ITM'.
      wa_fcat-fieldname = 'XBLNR'.
      wa_fcat-seltext_m = 'Bill.No.'.
      wa_fcat-just = 'C'.
      APPEND wa_fcat TO t_fcat.
      CLEAR wa_fcat.
      wa_fcat-tabname = 'ITAB_ITM'.
      wa_fcat-fieldname = 'FRBNR'.
      wa_fcat-seltext_m = 'Bill Date'.
      wa_fcat-just = 'C'.
      APPEND wa_fcat TO t_fcat.
      CLEAR wa_fcat.
      wa_fcat-tabname = 'ITAB_ITM'.
      wa_fcat-fieldname = 'BUDAT'.
      wa_fcat-seltext_m = 'G.R.Date'.
      wa_fcat-outputlen = '10'.
      wa_fcat-just = 'C'.
      APPEND wa_fcat TO t_fcat.
      CLEAR wa_fcat.
      wa_fcat-tabname = 'ITAB_ITM'.
      wa_fcat-fieldname = 'EXNUM'.
      wa_fcat-seltext_m = 'Ex.Bill.No.'.
      wa_fcat-just = 'C'.
      APPEND wa_fcat TO t_fcat.
      CLEAR wa_fcat.
      wa_fcat-tabname = 'ITAB_ITM'.
      wa_fcat-fieldname = 'EXDAT'.
      wa_fcat-seltext_m = 'Ex.Bill Date'.
      wa_fcat-just = 'C'.
      APPEND wa_fcat TO t_fcat.
      CLEAR wa_fcat.
      wa_fcat-tabname = 'ITAB_ITM'.
      wa_fcat-fieldname = 'CHARG'.
      wa_fcat-seltext_m = 'Batch'.
      wa_fcat-outputlen = '15'.
      wa_fcat-just = 'C'.
      APPEND wa_fcat TO t_fcat.
      CLEAR wa_fcat.
      wa_fcat-tabname = 'ITAB_ITM'.
      wa_fcat-fieldname = 'MENGE'.
      wa_fcat-seltext_m = 'Qty'.
      wa_fcat-do_sum = 'Y'.
      wa_fcat-outputlen = '15'.
      APPEND wa_fcat TO t_fcat.
      CLEAR wa_fcat.
      wa_fcat-tabname = 'ITAB_ITM'.
      wa_fcat-fieldname = 'NETPR'.
      wa_fcat-seltext_m = 'Basic Rate'.
      wa_fcat-do_sum = 'Y'.
      wa_fcat-outputlen = '12'.
      APPEND wa_fcat TO t_fcat.
      CLEAR wa_fcat.
      wa_fcat-tabname = 'ITAB_ITM'.
      wa_fcat-fieldname = 'VERPR'.
      wa_fcat-seltext_m = 'Costing Rate'.
      wa_fcat-do_sum = 'Y'.
      wa_fcat-outputlen = '12'.
      APPEND wa_fcat TO t_fcat.
      CLEAR wa_fcat.
      wa_fcat-tabname = 'ITAB_ITM'.
      wa_fcat-fieldname = 'DMBTR'.
      wa_fcat-seltext_m = 'Amount'.
      wa_fcat-do_sum = 'Y'.
      wa_fcat-outputlen = '15'.
      APPEND wa_fcat TO t_fcat.
      CLEAR wa_fcat.
      subtot-spos = 1.
      subtot-fieldname = 'NAME1'.
      subtot-tabname = 'ITAB_HEAD'.
      subtot-up = 'X'.
      subtot-group = 'X'.
      subtot-subtot = 'X'.
      subtot-expa = 'X'.
      APPEND subtot TO gt_subtot.
      subtot-spos = 2.
      subtot-fieldname = 'WGBEZ'.
      subtot-tabname = 'ITAB_HEAD'.
      subtot-up = 'X'.
      subtot-group = 'X'.
      subtot-subtot = 'X'.
      subtot-expa = 'X'.
      APPEND subtot TO gt_subtot.
    ENDFORM.                    "build_cat
    *&      Form  get_data
          text
    FORM get_data.
      SELECT DISTINCT mseg~lifnr INTO CORRESPONDING FIELDS OF TABLE itab_vend
      FROM mseg INNER JOIN mkpf
      ON msegmblnr = mkpfmblnr
      WHERE mkpfbudat IN dt AND mseglifnr IN vend.
      LOOP AT itab_vend.
        SELECT mseglifnr msegmblnr msegmatnr maktmaktx msegcharg msegmenge msegdmbtr mkpfbudat  mkpfxblnr mkpffrbnr ekponetpr ekpomatkl
        INTO CORRESPONDING FIELDS OF TABLE itab_data
        FROM mseg INNER JOIN mkpf ON
        msegmblnr = mkpfmblnr
        INNER JOIN ekpo ON
        msegebeln = ekpoebeln AND msegmatnr = ekpomatnr
        INNER JOIN makt ON
        msegmatnr = maktmatnr
        WHERE mkpfbudat IN dt AND mseglifnr IN vend AND msegbwart = '101' AND msegebeln <> '' AND ekpo~matkl IN mat_gr.
      ENDLOOP.
      SORT itab_data BY lifnr matkl matnr mblnr.
      LOOP AT itab_data.
        CLEAR: ex_doc,ex_dat,mov_pr,name,gr_nm.
        MOVE-CORRESPONDING itab_data TO itab_itm.
        SELECT SINGLE name1 FROM lfa1 INTO name WHERE lifnr = itab_data-lifnr.
        SELECT SINGLE wgbez FROM t023t INTO gr_nm WHERE matkl = itab_data-matkl.
        SELECT SINGLE exnum exdat FROM j_1iexchdr INTO (ex_doc,ex_dat) WHERE rdoc = itab_data-mblnr.
        SELECT SINGLE verpr INTO mov_pr FROM mbew WHERE matnr = itab_data-matnr AND bwtar = itab_data-charg.
        itab_itm-exnum = ex_doc.
        itab_itm-exdat = ex_dat.
        itab_itm-verpr = mov_pr.
        itab_itm-name1 = name.
        itab_itm-wgbez = gr_nm.
        APPEND itab_itm.
      ENDLOOP.
      SORT itab_itm .  "BY lifnr matkl mblnr matnr charg.
      DELETE ADJACENT DUPLICATES FROM itab_itm.
    ENDFORM.                    "get_data
    *&      Form  dis_data
          text
    FORM dis_data.
      alv_keyinfo-header01 = 'LIFNR'.
      alv_keyinfo-item01   = 'LIFNR'.
      alv_keyinfo-header02 = 'MATKL'.
      alv_keyinfo-item02   = 'MATKL'.
      REFRESH itab_head.
      LOOP AT itab_itm.
        ON CHANGE OF itab_itm-lifnr OR itab_itm-matkl .
          MOVE-CORRESPONDING itab_itm TO itab_head.
          APPEND itab_head.
        ENDON.
      ENDLOOP.
      CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
        EXPORTING
          i_callback_program = 'ZRAW_COST'
          it_fieldcat        = fcat
          it_sort            = gt_subtot
          i_tabname_header   = 'ITAB_HEAD'
          i_tabname_item     = 'ITAB_ITM'
          is_keyinfo         = alv_keyinfo
        TABLES
          t_outtab_header    = itab_head
          t_outtab_item      = itab_itm
        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.                    "dis_data

  • Subtotal in hirarchical alv

    Hi,
    I've a header table with PERSG field and Item table with a FTE field which is numeric.
    In the alv for every PERSG field for which there are multiple records in itam table I want to display subtotals.
    And if there are no items for the Header Data the record should not be displayed in the Header as well.
    find below is my fieldcatalog.
        W_FCAT-COL_POS = 1.
        W_FCAT-FIELDNAME = 'PERSG'.
        W_FCAT-SELTEXT_M = 'EmployeeGroup'.
        W_FCAT-TABNAME = 'WT_T501T'.
        APPEND W_FCAT TO T_FCAT.
        W_FCAT-COL_POS = 2.
        W_FCAT-FIELDNAME = 'PTEXT'.
        W_FCAT-SELTEXT_M = 'Description'.
        W_FCAT-TABNAME = 'WT_T501T'.
        APPEND W_FCAT TO T_FCAT.
        W_FCAT-COL_POS = 3.
        W_FCAT-FIELDNAME = 'PERNR'.
        W_FCAT-SELTEXT_M = 'PersonnelNo'.
        W_FCAT-TABNAME = 'WT_FINAL_TAB'.
        APPEND W_FCAT TO T_FCAT.
        W_FCAT-COL_POS = 4.
        W_FCAT-FIELDNAME = 'BEGDA'.
        W_FCAT-SELTEXT_M = 'StartDate'.
        W_FCAT-TABNAME = 'WT_FINAL_TAB'.
        APPEND W_FCAT TO T_FCAT.
        W_FCAT-COL_POS = 5.
        W_FCAT-FIELDNAME = 'ENDDA'.
        W_FCAT-SELTEXT_M = 'EndDate'.
        W_FCAT-TABNAME = 'WT_FINAL_TAB'.
        APPEND W_FCAT TO T_FCAT.
        W_FCAT-COL_POS = 6.
        W_FCAT-FIELDNAME = 'PERSK'.
        W_FCAT-SELTEXT_M = 'EmployeeSubgroup'.
        W_FCAT-TABNAME = 'WT_FINAL_TAB'.
        APPEND W_FCAT TO T_FCAT.
        W_FCAT-COL_POS = 7.
        W_FCAT-FIELDNAME = 'CTTYP'.
        W_FCAT-SELTEXT_M = 'ContractType'.
        W_FCAT-TABNAME = 'WT_FINAL_TAB'.
        APPEND W_FCAT TO T_FCAT.
        W_FCAT-COL_POS = 8.
        W_FCAT-FIELDNAME = 'PROZT'.
        W_FCAT-SELTEXT_M = 'WeightagePercentage'.
        W_FCAT-TABNAME = 'WT_FINAL_TAB'.
        APPEND W_FCAT TO T_FCAT.
        W_FCAT-COL_POS = 9.
        W_FCAT-FIELDNAME = 'ANSVH'.
        W_FCAT-SELTEXT_M = 'WorkContract'.
        W_FCAT-TABNAME = 'WT_FINAL_TAB'.
        APPEND W_FCAT TO T_FCAT.
        W_FCAT-COL_POS = 10.
        W_FCAT-FIELDNAME = 'ATX'.
        W_FCAT-SELTEXT_M = 'WorkContractText'.
        W_FCAT-TABNAME = 'WT_FINAL_TAB'.
        APPEND W_FCAT TO T_FCAT.
        W_FCAT-COL_POS = 11.
        W_FCAT-FIELDNAME = 'VORNA'.
        W_FCAT-SELTEXT_M = 'FirstName'.
        W_FCAT-TABNAME = 'WT_FINAL_TAB'.
        APPEND W_FCAT TO T_FCAT.
        W_FCAT-COL_POS = 12.
        W_FCAT-FIELDNAME = 'NACHN'.
        W_FCAT-SELTEXT_M = 'LastName'.
        W_FCAT-TABNAME = 'WT_FINAL_TAB'.
        APPEND W_FCAT TO T_FCAT.
        W_FCAT-COL_POS = 13.
        W_FCAT-FIELDNAME = 'AFTEVA'.
        W_FCAT-SELTEXT_M = 'ActiveFTE'.
        W_FCAT-DO_SUM = 'X'.
        W_FCAT-TABNAME = 'WT_FINAL_TAB'.
        APPEND W_FCAT TO T_FCAT.
        W_FCAT-COL_POS = 14.
        W_FCAT-FIELDNAME = 'AFTEVI'.
        W_FCAT-SELTEXT_M = 'InactiveFTE'.
        W_FCAT-DO_SUM = 'X'.
        W_FCAT-TABNAME = 'WT_FINAL_TAB'.
        APPEND W_FCAT TO T_FCAT.
    fs_sort_data-fieldname = 'PERSG'.
    fs_sort_data-tabname = 'wt_t501t'.
    fs_sort_data-spos = 1.
    fs_sort_data-up = 'X'.
    fs_sort_data-subtot = 'X'.
    fs_sort_data-group = 'X'.
    APPEND fs_sort_data TO tsort_data.
    CLEAR fs_sort_data.
    fs_sort_data-fieldname = 'AFTEVA'.
    fs_sort_data-tabname = 'wt_final_tab'.
    fs_sort_data-spos = 2.
    fs_sort_data-up = 'X'.
    fs_sort_data-subtot = 'X'.
    APPEND fs_sort_data TO tsort_data.
    CLEAR fs_sort_data.
    fs_sort_data-fieldname = 'AFTEVI'.
    fs_sort_data-tabname = 'wt_final_tab'.
    fs_sort_data-spos = 3.
    fs_sort_data-up = 'X'.
    fs_sort_data-subtot = 'X'.
    APPEND fs_sort_data TO tsort_data.
    CLEAR fs_sort_data.
    Kindly suggest.
    full points rewarded for the solution
    kumar

    Check this sample program
      TYPE-POOLS: slis.
      DATA: BEGIN OF itab OCCURS 0,
              vbeln TYPE vbeln,
              expand,
            END OF itab.
      DATA: BEGIN OF itab1 OCCURS 0,
              vbeln TYPE vbeln,
              posnr TYPE posnr,
              matnr TYPE matnr,
              netpr TYPE netpr,
            END OF itab1.
      DATA: t_fieldcatalog TYPE slis_t_fieldcat_alv.
      DATA: s_fieldcatalog TYPE slis_fieldcat_alv.
      s_fieldcatalog-col_pos = '1'.
      s_fieldcatalog-fieldname = 'VBELN'.
      s_fieldcatalog-tabname   = 'ITAB'.
      s_fieldcatalog-rollname  = 'VBELN'.
      s_fieldcatalog-outputlen = '12'.
      APPEND s_fieldcatalog TO t_fieldcatalog.
      CLEAR: s_fieldcatalog.
      s_fieldcatalog-col_pos = '1'.
      s_fieldcatalog-fieldname = 'VBELN'.
      s_fieldcatalog-tabname   = 'ITAB1'.
      s_fieldcatalog-rollname  = 'VBELN'.
      s_fieldcatalog-outputlen = '12'.
      APPEND s_fieldcatalog TO t_fieldcatalog.
      CLEAR: s_fieldcatalog.
      s_fieldcatalog-col_pos = '2'.
      s_fieldcatalog-fieldname = 'POSNR'.
      s_fieldcatalog-tabname   = 'ITAB1'.
      s_fieldcatalog-rollname  = 'POSNR'.
      APPEND s_fieldcatalog TO t_fieldcatalog.
      CLEAR: s_fieldcatalog.
      s_fieldcatalog-col_pos = '3'.
      s_fieldcatalog-fieldname = 'MATNR'.
      s_fieldcatalog-tabname   = 'ITAB1'.
      s_fieldcatalog-rollname  = 'MATNR'.
      APPEND s_fieldcatalog TO t_fieldcatalog.
      CLEAR: s_fieldcatalog.
      s_fieldcatalog-col_pos = '4'.
      s_fieldcatalog-fieldname = 'NETPR'.
      s_fieldcatalog-tabname   = 'ITAB1'.
      s_fieldcatalog-rollname  = 'NETPR'.
      s_fieldcatalog-do_sum    = 'X'.
      APPEND s_fieldcatalog TO t_fieldcatalog.
      CLEAR: s_fieldcatalog.
      DATA: s_layout TYPE slis_layout_alv.
      s_layout-subtotals_text            = 'SUBTOTAL TEXT'.
      s_layout-key_hotspot = 'X'.
      s_layout-expand_fieldname = 'EXPAND'.
      SELECT vbeln UP TO 100 ROWS
             FROM vbak
             INTO TABLE itab.
      IF NOT itab[] IS INITIAL.
        SELECT vbeln posnr matnr netpr
               FROM vbap
               INTO TABLE itab1
               FOR ALL ENTRIES IN itab
               WHERE vbeln = itab-vbeln.
      ENDIF.
      DATA: v_repid TYPE syrepid.
      v_repid = sy-repid.
      DATA: s_keyinfo TYPE slis_keyinfo_alv.
      s_keyinfo-header01 = 'VBELN'.
      s_keyinfo-item01   = 'VBELN'.
      CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
           EXPORTING
                i_callback_program = v_repid
                is_layout          = s_layout
                it_fieldcat        = t_fieldcatalog
                i_tabname_header   = 'ITAB'
                i_tabname_item     = 'ITAB1'
                is_keyinfo         = s_keyinfo
           TABLES
                t_outtab_header    = itab
                t_outtab_item      = itab1
           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.

  • Field should not display in the subtotal row in ALV report after sorting .

    we have a requirement, after sorting and subtotaling, the output in ALV is -
    vbeln        amount1  amount2  amount3
    123           11              12            13
    123           12             13             14
    123           23             25             27 
    133           11              12            13
    133           12             13             14
    133           23             25             27
    Now the customer wants the ALV outpput in this fashion -
    123           11              12            13
    123           12             13             14
                     23             25             27    --->123 (vbeln) should not come in subtotaling row
    133           11              12            13
    133           12             13             14
                      23             25             27--->133(vbeln) should not come in subtotaling row

    Hi,
    if it helps you could create a hierachy. In this way you can define the field catalog for the lines and for the subtotal columns. The only thing is that you would always show the subtotal rows.
    You have references of hierachy alvs in
    http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/c060fcb4-2c62-2b10-d2b2-f32407a5cc6f
    ALV Hierarchy
    alv hierarchy
    In this case it also sorts
    Sorting for ALV hierarchy
    I hope it helps.
    Edited by: Oscar Pecharroman on Aug 2, 2010 1:13 PM

  • Goods receipt subtotal is showing zero instead sum of quantity..!

    Hi Guys,
    1. Goods movement subtotal showing 0 instead of the total of the quantity.
    The check throwing the following error message.
    Update control of movement type is incorrect (entry 122 X X)
    Message no. M7226
    2. Purchase order data tab not showing item details for variance items but showing the message
    "This item has not been ordered."  But the PO items are ordered and present in the PO.
    Please find the screen shots.
    Thanks
    Sam

    Hi Sam,
    Kindly  Check table T156SC entries there is a entry missing in the table.
    And if required so kindly Maintain the missing entries in table.
    If entries of movement type 101 are prefect then
    Goto Transaction  -- SE37 ,
    Function module -- MB_CONTROL_MOVETYPE_GET_SINGLE
    Kindly do Set a break point to select statement which is failing at the table above at both the systems.You should be able to crack the error.
    Hope this will help you to solve the issue.
    And if not Kindly let us know.
    Thanks & Regards
    Ritesh Kumar

  • Transfer from Subtotal in one table to another sheet.

    Hi, about a year ago i made a salary application for my production company. This works quite well, but when I supposed to report amounts for each employed to the swedish tax authorities I am still not automatic because I haven't solved how to transfer a subtotal sum to a specific cell in another sheet. I am sure that this has been discussed earlier, but in the searches I have done I can't find a similar question. So if someone has an idea where to look or knows if it is possible.
    What I would need is to have a formula like LOOKUP (I guess that is the english formula for looking up references) or similar so that I can identify a Subtotal for a specific class of rows (i.e. salaries for one person).

    Thanks for the reply. If I understand you correctly the approach is simple an genial. I am all the time using and thinking within the frame of the elegant sorting functions that you find in the tables. Very easy to use when you need a quick result, though as far as I can see impossible to bring with you. But of course just put the conditions i a Sum.if. Simple!
    Thanks.
    Leif

Maybe you are looking for