Only Subtotal in ALV

Dear all,
I am using  fieldcat-do_sum = 'x' and sort-subtot = 'x'. for displaying subtotal. but in this alv output total has been also displayed. My requirement is that i only want to display subtotal only not total value of column. If anybody is having any idea , than please help me for same.........
Thanks

Hi TVC,
not sure how it works with CL_GUI_ALV_GRID,
with CL_SALV_TABLE ist is like
METHOD set_layout_properties.
  DATA:
    lo_aggregations          TYPE REF TO cl_salv_aggregations,
    lo_columns               TYPE REF TO cl_salv_columns,
    lo_display_settings      TYPE REF TO cl_salv_display_settings,
    lo_sort                  TYPE REF TO cl_salv_sort,
    lo_sorts                 TYPE REF TO cl_salv_sorts,
    lr_data                  TYPE REF TO data,
    lt_column_ref            TYPE salv_t_column_ref,
    lv_colname               TYPE fieldname,
    lv_p_day                 TYPE flag,
    lv_p_hour                TYPE flag,
    lv_p_month               TYPE flag.
  FIELD-SYMBOLS:
    <column_ref>             TYPE LINE OF salv_t_column_ref,
    <table>                  TYPE table,
    <any>                    TYPE ANY.
  lo_display_settings        = mo_salv->get_display_settings( ).
  lo_aggregations            = mo_salv->get_aggregations( ).
  lr_data                    = get_ref_2_t_column( ).
* subtotal compressed
                TRY.
                    lo_sort = lo_sorts->add_sort( <column_ref>-columnname ).
                    lo_sort->set_sequence( )." IF_SALV_C_SORT=>SORT_UP
                    lo_sort->set_subtotal( )." IF_SALV_C_BOOL_SAP=>TRUE
                    lo_sorts->set_compressed_subtotal( <column_ref>-columnname ).
                  CATCH cx_root INTO mo_exception.
                ENDTRY.
But because SALV internally uses CL_GUI_ALV_GRID, there is a way for sure.
Regards,
Clemens

Similar Messages

  • SUBTOTAL  IN  ALV   REPORT

    hello freinds,
    I am facing problem of subtotal in alv report.
    I am explaining my problem.....................
    In my report there are 8 columns...
    in first colum there is <b>'Acount Number'</b> field. I have to sort out it.and I have done it succesfully. Now in my seventh and eighth column there are fields 'PAYMENT GROSS AMOUNT' and ' IVA AMOUNT' respectively.
    Now I have to do subtotal of these two columns (7th & 8th) according to first column value i.e Acount Number.
    Please send me solution.
    Thanks in Advance........

    Hi,
    try this code ,hope usefull to u, please reward point if usefull to u.
    *& Report  ZALV_SUBTOTAL
    This program lists orders (VBAK) with sort and sub-total for        *
    'sold-to-party' (KUNNR) and 'Sales organization' (VKORG)            *
    REPORT  ZALV_SUBTOTAL.
    TABLES : vbak.
    TYPE-POOLS: slis.                      " ALV Global types
    SELECT-OPTIONS :
      s_vkorg FOR vbak-vkorg,              " Sales organization
      s_kunnr FOR vbak-kunnr,              " Sold-to party
      s_vbeln FOR vbak-vbeln.              " Sales document
    SELECTION-SCREEN :
      SKIP, BEGIN OF LINE,COMMENT 5(27) v_1 FOR FIELD p_max.
    PARAMETERS p_max(2) TYPE n DEFAULT '20' OBLIGATORY.
    SELECTION-SCREEN END OF LINE.
    DATA:
      BEGIN OF gt_vbak OCCURS 0,
        vkorg LIKE vbak-vkorg,             " Sales organization
        kunnr LIKE vbak-kunnr,             " Sold-to party
        vbeln LIKE vbak-vbeln,             " Sales document
        netwr LIKE vbak-netwr,             " Net Value of the Sales Order
        waerk LIKE vbak-waerk,             " Document currency
      END OF gt_vbak.
    INITIALIZATION.
      v_1 = 'Maximum of records to read'.
    START-OF-SELECTION.
      PERFORM f_read_data.
      PERFORM f_display_data.
         Form  f_read_data
    FORM f_read_data.
      SELECT * INTO CORRESPONDING FIELDS OF TABLE gt_vbak
               FROM vbak
                 UP TO p_max ROWS
              WHERE kunnr IN s_kunnr
                AND vbeln IN s_vbeln
                AND vkorg IN s_vkorg.
    ENDFORM.                               " F_READ_DATA
         Form  f_display_data
    FORM f_display_data.
      DEFINE m_fieldcat.
        add 1 to ls_fieldcat-col_pos.
        ls_fieldcat-fieldname   = &1.
        ls_fieldcat-ref_tabname = 'VBAK'.
        ls_fieldcat-do_sum      = &2.
        ls_fieldcat-cfieldname  = &3.
        append ls_fieldcat to lt_fieldcat.
      END-OF-DEFINITION.
      DEFINE m_sort.
        add 1 to ls_sort-spos.
        ls_sort-fieldname = &1.
        ls_sort-up        = 'X'.
        ls_sort-subtot    = &2.
        append ls_sort to lt_sort.
      END-OF-DEFINITION.
      DATA:
        ls_fieldcat TYPE slis_fieldcat_alv,
        lt_fieldcat TYPE slis_t_fieldcat_alv,
        lt_sort     TYPE slis_t_sortinfo_alv,
        ls_sort     TYPE slis_sortinfo_alv,
        ls_layout   TYPE slis_layout_alv.
      m_fieldcat 'VKORG' ''  ''.
      m_fieldcat 'KUNNR' ''  ''.
      m_fieldcat 'VBELN' ''  ''.
      m_fieldcat 'NETWR' 'X' 'WAERK'.
      m_fieldcat 'WAERK' ''  ''.
      m_sort 'VKORG' 'X'.                  " Sort by vkorg and subtotal
      m_sort 'KUNNR' 'X'.                  " Sort by kunnr and subtotal
      m_sort 'VBELN' ''.                   " Sort by vbeln
      ls_layout-cell_merge = 'X'.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
           EXPORTING
                is_layout   = ls_layout
                it_fieldcat = lt_fieldcat
                it_sort     = lt_sort
           TABLES
                t_outtab    = gt_vbak.
    ENDFORM.                               " F_DISPLAY_DATA
    END OF PROGRAM Z_DEMO_ALV_SORT **********************
    Regards
    fareedas

  • How to find out the total, subtotal in alv report

    hi dears,
    how to find out the total, subtotal in alv report?
    pls tell me logic ,
    i will be waiting for eply
    regards
    eswar

    Hi,
    <b>ALV Grid List with sub-totals</b>
    REPORT z_demo_alv_sort.
    * This program lists orders (VBAK) with sort and sub-total for        *
    * 'sold-to-party' (KUNNR) and 'Sales organization' (VKORG)            *
    TABLES : vbak.
    TYPE-POOLS: slis.                      " ALV Global types
    SELECT-OPTIONS :
      s_vkorg FOR vbak-vkorg,              " Sales organization
      s_kunnr FOR vbak-kunnr,              " Sold-to party
      s_vbeln FOR vbak-vbeln.              " Sales document
    SELECTION-SCREEN :
      SKIP, BEGIN OF LINE,COMMENT 5(27) v_1 FOR FIELD p_max.
    PARAMETERS p_max(2) TYPE n DEFAULT '20' OBLIGATORY.
    SELECTION-SCREEN END OF LINE.
    DATA:
      BEGIN OF gt_vbak OCCURS 0,
        vkorg LIKE vbak-vkorg,             " Sales organization
        kunnr LIKE vbak-kunnr,             " Sold-to party
        vbeln LIKE vbak-vbeln,             " Sales document
        netwr LIKE vbak-netwr,             " Net Value of the Sales Order
        waerk LIKE vbak-waerk,             " Document currency
      END OF gt_vbak.
    INITIALIZATION.
      v_1 = 'Maximum of records to read'.
    START-OF-SELECTION.
      PERFORM f_read_data.
      PERFORM f_display_data.
    *      Form  f_read_data
    FORM f_read_data.
      SELECT * INTO CORRESPONDING FIELDS OF TABLE gt_vbak
               FROM vbak
                 UP TO p_max ROWS
              WHERE kunnr IN s_kunnr
                AND vbeln IN s_vbeln
                AND vkorg IN s_vkorg.
    ENDFORM.                               " F_READ_DATA
    *      Form  f_display_data
    FORM f_display_data.
      DEFINE m_fieldcat.
        add 1 to ls_fieldcat-col_pos.
        ls_fieldcat-fieldname   = &1.
        ls_fieldcat-ref_tabname = 'VBAK'.
        ls_fieldcat-do_sum      = &2.
        ls_fieldcat-cfieldname  = &3.
        append ls_fieldcat to lt_fieldcat.
      END-OF-DEFINITION.
      DEFINE m_sort.
        add 1 to ls_sort-spos.
        ls_sort-fieldname = &1.
        ls_sort-up        = 'X'.
        ls_sort-subtot    = &2.
        append ls_sort to lt_sort.
      END-OF-DEFINITION.
      DATA:
        ls_fieldcat TYPE slis_fieldcat_alv,
        lt_fieldcat TYPE slis_t_fieldcat_alv,
        lt_sort     TYPE slis_t_sortinfo_alv,
        ls_sort     TYPE slis_sortinfo_alv,
        ls_layout   TYPE slis_layout_alv.
      m_fieldcat 'VKORG' ''  ''.
      m_fieldcat 'KUNNR' ''  ''.
      m_fieldcat 'VBELN' ''  ''.
      m_fieldcat 'NETWR' 'X' 'WAERK'.
      m_fieldcat 'WAERK' ''  ''.
      m_sort 'VKORG' 'X'.                  " Sort by vkorg and subtotal
      m_sort 'KUNNR' 'X'.                  " Sort by kunnr and subtotal
      m_sort 'VBELN' ''.                   " Sort by vbeln
      ls_layout-cell_merge = 'X'.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
           EXPORTING
                is_layout   = ls_layout
                it_fieldcat = lt_fieldcat
                it_sort     = lt_sort
           TABLES
                t_outtab    = gt_vbak.
    ENDFORM.                               " F_DISPLAY_DATA
    ***************** END OF PROGRAM Z_DEMO_ALV_SORT **********************
    Regards
    Sudheer

  • ALV Total and Subtotal in ALV

    Hi,
          I want to display the Total and Subtotal in Alv in Webdynpro Abap, and i am getting this  Error( Access via 'NULL' object reference not possible) and also i have checked the Cardinality also. Please get me a Good Solution.

    I think your node( the node which is binded to data node of alv interface controller ) having collection cardinality of 1:1, if yes, then change it to 0:N,
    i hope this will solve the issue.
    If you still get the error, go to st22, open your error, go down that page (keep pressing pagedown button ), then you will find your code and there find this arrow >>>>> then let me know that code line.
    Regards
    Srinivas

  • How to display lead selection ONLY in the ALV

    HI All,
       User would like display the selected records in ALV . 
       i suggested that add two button - "Display ALL" & "Display Selected" .
       How can i only display the lead selection only in the ALV? or Hide un-selected records.
       Please help.
    Thank you so much
    Gordon

    Hi,
    Pelase have a look.. same requirement.
    get_selected_elements method for ALV
    Re: select rows in alv and show them in another alv in another view
    Web dynpro ALV table copy selected row
    cheers,
    Kris.

  • Display only cell in ALV Grid in OO

    Hi Folks,
    Hope someone can help me with this little issue.  I have a series of columns in my ALV grid that are editable, but I need to a) make some of the cells on specific lines uneditable and b) display time based fields on this line as blank (presently they shoe 00:00:00). 
    For problem a) I have set the layout style frame as 'cellstyles' 
        es_layout-stylefname = 'CELLSTYLES'.
    I have also set the edit flag in the field catalog for the individual columns to 'X' eg     
         WHEN 'CUSTTS_DATE_N'.
              ls_fieldcat-edit = 'X'.
    And coded:
           gwa_stylerow-fieldname = 'CUSTTS_DATE_N'.
          gwa_stylerow-style = cl_gui_alv_grid=>mc_style_disabled.
          APPEND gwa_stylerow TO gt_stylerow.
          wa_delivery_list-cellstyle[] = gt_stylerow[].
          APPEND wa_delivery_list TO it_delivery_list.
    Yet, the ALV cells are still being displayed as editable.  Can't for the life of me figure out what's missing.  The only other thought I had around this is that the wa_delivery_list-cellstyle table is being set in the data extraction code, before the ALV grid is built, and that the cell formats are being overwritten/on not being called by the field catalog entries.  Any thoughts on how to make these fields/cells display only when the ALV is first displayed would be greatly appreciated.
    As for option b) I'm clueless, as the cell style commands are not being picked up (see problem a.).  Again any thoughts would be appreciated, and points will be rewarded for solutions/suggestions that lead to solutions.
    Cheers,
    Stephen Keam

    Hello Stephen
    I have created a simple report ZUS_SDN_ALV_EDITABLE_1B which shows how to use editability on cell level.
    The crucial parts of the coding for your requirements are shown below, followed by the entire report.
      READ TABLE gt_fcat INTO ls_fcat
           WITH KEY fieldname = 'UPTIM'.
      IF ( syst-subrc = 0 ).
        DELETE gt_fcat INDEX syst-tabix.
        ls_fcat-no_zero = abap_true.  " suppresses 00:00:00
        INSERT ls_fcat INTO gt_fcat INDEX 7.
      ENDIF.
    *&      Form  SET_CELL_EDITABLE
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM set_cell_editable .
    * define local data
      DATA: ld_idx      TYPE i,
            ls_outtab   TYPE ty_s_outtab,
            ls_style    TYPE lvc_s_styl.
      LOOP AT gt_outtab INTO ls_outtab.
        ld_idx = syst-tabix.
        REFRESH: ls_outtab-celltab.
        " NOTE: if you change the year of column ERDAT to 2008 then two columns will become non-editable
        IF ( ls_outtab-erdat+0(4) = '2008' ).
          CLEAR: ls_style.
          ls_style-fieldname = 'UPDAT'.
          ls_style-style     = cl_gui_alv_grid=>mc_style_disabled.
          INSERT ls_style INTO TABLE ls_outtab-celltab.
          CLEAR: ls_style.
          ls_style-fieldname = 'UPTIM'.
          ls_style-style     = cl_gui_alv_grid=>mc_style_disabled.
          INSERT ls_style INTO TABLE ls_outtab-celltab.
        ELSE.
        ENDIF.
        MODIFY gt_outtab FROM ls_outtab INDEX ld_idx
          TRANSPORTING celltab.
      ENDLOOP.
    ENDFORM.                    " SET_CELL_EDITABLE
    *& Report  ZUS_SDN_ALV_EDITABLE
    *& Thread: Display only cell in ALV Grid in OO
    *& <a class="jive_macro jive_macro_thread" href="" __jive_macro_name="thread" modifiedtitle="true" __default_attr="765083"></a>
    * Flow logic of screen '100' (no elements, ok-code => gd_okcode ):
    **PROCESS BEFORE OUTPUT.
    **  MODULE STATUS_0100.
    **PROCESS AFTER INPUT.
    **  MODULE USER_COMMAND_0100.
    *& GUI-Status: ok-codes BACK, EXIT, CANC
    REPORT  zus_sdn_alv_editable_1b.
    TYPE-POOLS: abap.
    CONSTANTS:
      gc_tabname       TYPE tabname  VALUE 'KNB1'.
    TYPES: BEGIN OF ty_s_outtab.
    INCLUDE TYPE knb1 AS knb1.
    TYPES: celltab    TYPE lvc_t_styl.
    TYPES: END OF ty_s_outtab.
    TYPES: ty_t_outtab    TYPE STANDARD TABLE OF ty_s_outtab
                          WITH DEFAULT KEY.
    DATA:
      gd_okcode        TYPE ui_func,
      gd_repid         TYPE syst-repid,
      gt_fcat          TYPE lvc_t_fcat,
      gs_layout        TYPE lvc_s_layo,
      gs_variant       TYPE disvariant,
      go_docking       TYPE REF TO cl_gui_docking_container,
      go_grid          TYPE REF TO cl_gui_alv_grid.
    DATA:
      gs_outtab        TYPE ty_s_outtab,
      gt_outtab        TYPE ty_t_outtab,
      gt_outtab_pbo    TYPE ty_t_outtab.
    DATA:
      gd_answer        TYPE c.
    *       CLASS lcl_eventhandler DEFINITION
    CLASS lcl_eventhandler  DEFINITION.
      PUBLIC SECTION.
        CLASS-METHODS:
          handle_data_changed
             FOR EVENT data_changed OF cl_gui_alv_grid
                 IMPORTING er_data_changed.
    ENDCLASS.                    "lcl_eventhandler DEFINITION
    *       CLASS lcl_eventhandler IMPLEMENTATION
    CLASS lcl_eventhandler IMPLEMENTATION.
      METHOD handle_data_changed.
        " Just trigger PAI followed by PBO
        CALL METHOD cl_gui_cfw=>set_new_ok_code
          EXPORTING
            new_code = 'REFRESH'
    *        IMPORTING
    *          rc       =
      ENDMETHOD.                    "handle_data_changed
    ENDCLASS.                    "lcl_eventhandler IMPLEMENTATION
    START-OF-SELECTION.
      SELECT * FROM  (gc_tabname) INTO CORRESPONDING FIELDS
                                  OF TABLE gt_outtab UP TO 99 ROWS.
      gt_outtab_pbo = gt_outtab.  " set PBO data
      PERFORM init_controls.
    * ok-code field = GD_OKCODE
      CALL SCREEN '0100'.
    END-OF-SELECTION.
    *&      Form  INIT_CONTROLS
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM init_controls .
    * Create docking container
      CREATE OBJECT go_docking
        EXPORTING
          parent = cl_gui_container=>screen0
          ratio  = 90
        EXCEPTIONS
          OTHERS = 6.
      IF sy-subrc <> 0.
    *   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    * Create ALV grid
      CREATE OBJECT go_grid
        EXPORTING
          i_parent = go_docking
        EXCEPTIONS
          OTHERS   = 5.
      IF sy-subrc <> 0.
    *   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      " NOTE: not required
    *  set handler:
    *    lcl_eventhandler=>handle_data_changed for go_grid.
    * Build fieldcatalog and set hotspot for field KUNNR
      PERFORM build_fieldcatalog.
      PERFORM set_layout_and_variant.
      PERFORM set_cell_editable.
    *§3.Optionally register ENTER to raise event DATA_CHANGED.
    *   (Per default the user may check data by using the check icon).
      CALL METHOD go_grid->register_edit_event
        EXPORTING
          i_event_id = cl_gui_alv_grid=>mc_evt_enter.
      SET HANDLER: lcl_eventhandler=>handle_data_changed FOR go_grid.
    * Display data
      CALL METHOD go_grid->set_table_for_first_display
        EXPORTING
          is_layout       = gs_layout
          is_variant      = gs_variant
          i_save          = 'A'
        CHANGING
          it_outtab       = gt_outtab
          it_fieldcatalog = gt_fcat
        EXCEPTIONS
          OTHERS          = 4.
      IF sy-subrc <> 0.
    *   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    * NOTE:
    * Documenation of I_SAVE ("An Easy Reference for ALV Grid Control")
    *I_SAVE
    *Determines the options available to the user for saving a layout:
    *? 'X': global saving only
    *? 'U': user-specific saving only
    *? 'A': corresponds to 'X' and 'U'
    *? SPACE: no saving
    * Link the docking container to the target dynpro
      gd_repid = syst-repid.
      CALL METHOD go_docking->link
        EXPORTING
          repid                       = gd_repid
          dynnr                       = '0100'
    *      CONTAINER                   =
        EXCEPTIONS
          OTHERS                      = 4.
      IF sy-subrc <> 0.
    *   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    ENDFORM.                    " INIT_CONTROLS
    *&      Module  STATUS_0100  OUTPUT
    *       text
    MODULE status_0100 OUTPUT.
      SET PF-STATUS 'STATUS_0100'.
    *  SET TITLEBAR 'xxx'.
    ENDMODULE.                 " STATUS_0100  OUTPUT
    *&      Module  USER_COMMAND_0100  INPUT
    *       text
    MODULE user_command_0100 INPUT.
      " NOTE: retrieve changed data from frontend (grid control) into
      "       the backend (itab in ABAP)
      go_grid->check_changed_data( ).
      CASE gd_okcode.
        WHEN 'BACK'  OR
             'EXIT'  OR
             'CANC'.
          SET SCREEN 0. LEAVE SCREEN.
        WHEN 'REFRESH'.
          PERFORM set_cell_editable.
          " NOTE: Refresh required
          CALL METHOD go_grid->refresh_table_display
    *        EXPORTING
    *          is_stable      =
    *          i_soft_refresh =
    *        EXCEPTIONS
    *          finished       = 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.
        WHEN 'SAVE'.
          IF ( gt_outtab = gt_outtab_pbo ).
            MESSAGE 'No data changed' TYPE 'S'.
          ELSE.
            CLEAR: gd_answer.
            CALL FUNCTION 'POPUP_TO_CONFIRM'
              EXPORTING
    *             TITLEBAR                    = ' '
    *             DIAGNOSE_OBJECT             = ' '
                text_question               = 'Save data?'
    *             TEXT_BUTTON_1               = 'Ja'(001)
    *             ICON_BUTTON_1               = ' '
    *             TEXT_BUTTON_2               = 'Nein'(002)
    *             ICON_BUTTON_2               = ' '
    *             DEFAULT_BUTTON              = '1'
    *             DISPLAY_CANCEL_BUTTON       = 'X'
    *             USERDEFINED_F1_HELP         = ' '
    *             START_COLUMN                = 25
    *             START_ROW                   = 6
    *             POPUP_TYPE                  =
    *             IV_QUICKINFO_BUTTON_1       = ' '
    *             IV_QUICKINFO_BUTTON_2       = ' '
              IMPORTING
                answer                      = gd_answer
    *           TABLES
    *             PARAMETER                   =
              EXCEPTIONS
                text_not_found              = 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.
            IF ( gd_answer = '1' ).  " yes
              MESSAGE 'Data successfully saved' TYPE 'S'.
              gt_outtab_pbo = gt_outtab.  " update PBO data !!!
            ELSE.
              MESSAGE 'Action cancelled by user'  TYPE 'S'.
            ENDIF.
          ENDIF.
        WHEN OTHERS.
      ENDCASE.
      CLEAR: gd_okcode.
    ENDMODULE.                 " USER_COMMAND_0100  INPUT
    *&      Form  BUILD_FIELDCATALOG
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM build_fieldcatalog .
    * define local data
      DATA:
        ls_fcat        TYPE lvc_s_fcat.
      CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
        EXPORTING
    *     I_BUFFER_ACTIVE              =
          i_structure_name             = gc_tabname
    *     I_CLIENT_NEVER_DISPLAY       = 'X'
    *     I_BYPASSING_BUFFER           =
    *     I_INTERNAL_TABNAME           =
        CHANGING
          ct_fieldcat                  = gt_fcat
        EXCEPTIONS
          inconsistent_interface       = 1
          program_error                = 2
          OTHERS                       = 3.
      IF sy-subrc <> 0.
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      ls_fcat-edit = abap_true.
      MODIFY gt_fcat FROM ls_fcat
          TRANSPORTING edit
        WHERE ( key NE abap_true ).
      READ TABLE gt_fcat INTO ls_fcat
           WITH KEY fieldname = 'UPTIM'.
      IF ( syst-subrc = 0 ).
        DELETE gt_fcat INDEX syst-tabix.
        ls_fcat-no_zero = abap_true.  " suppresses 00:00:00
        INSERT ls_fcat INTO gt_fcat INDEX 7.
      ENDIF.
      READ TABLE gt_fcat INTO ls_fcat
       WITH KEY fieldname = 'UPDAT'.
      IF ( syst-subrc = 0 ).
        DELETE gt_fcat INDEX syst-tabix.
        INSERT ls_fcat INTO gt_fcat INDEX 7.
      ENDIF.
      LOOP AT gt_fcat INTO ls_fcat.
        ls_fcat-col_pos = syst-tabix.
        MODIFY gt_fcat FROM ls_fcat INDEX syst-tabix.
        IF ( syst-tabix > 10 ).
          DELETE gt_fcat INDEX syst-tabix.
        ENDIF.
      ENDLOOP.
    ENDFORM.                    " BUILD_FIELDCATALOG
    *&      Form  SET_LAYOUT_AND_VARIANT
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM set_layout_and_variant .
      CLEAR: gs_layout,
             gs_variant.
      gs_layout-cwidth_opt = abap_true.
      gs_layout-zebra      = abap_true.
    *§3.Provide the fieldname of the celltab field by using field
    *   STYLEFNAME of the layout structure.
      gs_layout-stylefname = 'CELLTAB'.
      gs_variant-report = syst-repid.
      gs_variant-handle = 'GRID'.
    ENDFORM.                    " SET_LAYOUT_AND_VARIANT
    *&      Form  SET_CELL_EDITABLE
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM set_cell_editable .
    * define local data
      DATA: ld_idx      TYPE i,
            ls_outtab   TYPE ty_s_outtab,
            ls_style    TYPE lvc_s_styl.
      LOOP AT gt_outtab INTO ls_outtab.
        ld_idx = syst-tabix.
        REFRESH: ls_outtab-celltab.
        IF ( ls_outtab-erdat+0(4) = '2008' ).
          CLEAR: ls_style.
          ls_style-fieldname = 'UPDAT'.
          ls_style-style     = cl_gui_alv_grid=>mc_style_disabled.
          INSERT ls_style INTO TABLE ls_outtab-celltab.
          CLEAR: ls_style.
          ls_style-fieldname = 'UPTIM'.
          ls_style-style     = cl_gui_alv_grid=>mc_style_disabled.
          INSERT ls_style INTO TABLE ls_outtab-celltab.
        ELSE.
        ENDIF.
        MODIFY gt_outtab FROM ls_outtab INDEX ld_idx
          TRANSPORTING celltab.
      ENDLOOP.
    ENDFORM.                    " SET_CELL_EDITABLE
    Regards
      Uwe

  • Problem in Subtotal in ALV

    Hi Experts,
    I wanted to do the subtotal in ALV report. For subtotal which data type we need to take. Is it really affect with data type??
    My problem is: I wanted to do the subtotal based on Purchase order number. I need to do the subtotal of field LV_VAR based on purchase order number. The field LV_VAR having TYPE packed decimal.
    Do I need to change the data type of field LV_VAR for getting subtotal?
    For implementing the Subtotal functionality in my alv report, I did following changes
    1. Declared one sort catalog as
    gs_sort-fieldname = 'EBELN'.
    gs_sort-up  = 'X'.
    gs-sort-subtot = 'X'.
    append gs_sort to gt_sort.
    2. In fieldcatalog of field LV_VAR
    i_fieldcatalog-fieldname = 'LV_VAR'.
    i_fieldcatalog-tabname = 'ITAB'.
    i_fieldcatalog-do_sum = 'X'.
    append i_fieldcatalog.
    Then in FM REUSE_ALV_GRID_DISPLAY, I had passed sort catalog as
    it_sort = gt_sort[]
    But I did not get the subtotal functionality.
    Any suggestion pls?

    Hi ,
    I will give you one sample code which has a functionality of subtotal and grand total also .
    And this code will help you in many aspects also.
    *& Report  ZSAND_SUBTOTAL                                              *
    REPORT  ZSAND_SUBTOTAL LINE-COUNT 65                        .
    *& Report ZALV_LIST
    TABLES : mseg.
    TYPE-POOLS : slis.
    DATA : BEGIN OF itab OCCURS 0,
            mblnr LIKE mseg-mblnr,
            matnr LIKE mseg-matnr,
            werks LIKE mseg-werks,
            menge LIKE mseg-menge,
            line_color(4) TYPE c,
           END OF itab.
    DATA : BEGIN OF itab1 OCCURS 0,
            mblnr LIKE mseg-mblnr,
            matnr LIKE mseg-matnr,
            werks LIKE mseg-werks,
            menge LIKE mseg-menge,
            line_color(4) TYPE c,
            END OF itab1.
    data: it_sortcat   type slis_sortinfo_alv occurs 1,
           wa_sort like line of it_sortcat.
    DATA: it_header TYPE slis_t_listheader,
            wa_header TYPE slis_listheader.
    data: var1(1).
    DATA  var2.
    data:mytabix like sy-tabix.
    data:wtab1 like line of itab,
         wtab2 like line of itab.
    DATA : t_fcat TYPE slis_t_fieldcat_alv,
    t_eve TYPE slis_t_event,
    t_subtot TYPE slis_t_sortinfo_alv,
    subtot LIKE LINE OF t_subtot,
    wa_fcat LIKE LINE OF t_fcat,
    gd_layout TYPE slis_layout_alv.
    DATA : gt_menge LIKE mseg-menge,
    st_menge LIKE mseg-menge.
    data:it_extab type SLIS_t_EXTAB,
         wa_extab like line of it_extab.
    SELECTION-SCREEN : BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
    SELECT-OPTIONS : doc FOR mseg-mblnr.
    SELECTION-SCREEN : END OF BLOCK blk1.
    START-OF-SELECTION.
    PERFORM build_cat USING t_fcat.
    PERFORM build_layout.
    PERFORM build_eve.
    perform fill_sort.
    PERFORM get_data.
    PERFORM display.
    *& Form build_cat
    *text
    *-->TEMP_FCAT text
    FORM build_cat USING temp_fcat TYPE slis_t_fieldcat_alv.
    wa_fcat-tabname = 'ITAB'.
    wa_fcat-fieldname = 'MBLNR'.
    wa_fcat-seltext_m = 'Material Doc.'.
    APPEND wa_fcat TO temp_fcat.
    CLEAR wa_fcat.
    wa_fcat-tabname = 'ITAB'.
    wa_fcat-fieldname = 'MATNR'.
    wa_fcat-seltext_m = 'Material'.
    APPEND wa_fcat TO temp_fcat.
    CLEAR wa_fcat.
    wa_fcat-tabname = 'ITAB'.
    wa_fcat-fieldname = 'WERKS'.
    wa_fcat-seltext_m = 'Plant'.
    APPEND wa_fcat TO temp_fcat.
    CLEAR wa_fcat.
    wa_fcat-tabname = 'ITAB'.
    wa_fcat-fieldname = 'MENGE'.
    wa_fcat-seltext_m = 'Quantity'.
    wa_fcat-do_sum = 'Y'.
    APPEND wa_fcat TO temp_fcat.
    CLEAR wa_fcat.
    ENDFORM. "build_cat
    *& Form build_eve
    *text
    FORM build_eve.
    DATA : wa_eve TYPE slis_alv_event.
    data:mytabix type sy-tabix.
    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 = slis_ev_top_of_page.
    *INTO wa_eve.
    IF sy-subrc = 0.
    mytabix = sy-tabix.
    MOVE 'TOP_OF_PAGE' TO wa_eve-form.
    append  wa_eve  to t_eve.
    *modify t_eve from wa_eve index mytabix transporting form.
    ENDIF.
    READ TABLE t_eve  into wa_eve WITH KEY name = slis_ev_end_of_page.
    *INTO wa_eve.
    IF sy-subrc = 0.
    mytabix = sy-tabix.
    MOVE 'END_OF_PAGE' TO wa_eve-form.
    append  wa_eve  to t_eve.
    *modify t_eve from wa_eve index mytabix transporting form.
    ENDIF.
    ENDFORM. "build_eve
    *& Form build_layout
    *text
    FORM build_layout.
    *gd_layout-no_input = 'X'.
    gd_layout-colwidth_optimize = 'X'.
    gd_layout-info_fieldname = 'LINE_COLOR'.
    gd_layout-subtotals_text = 'SUBTOTAL'.
    *gd_layout-totals_text = 'TOTAL'.
    gd_layout-EDIT = 'X'.
    ENDFORM. " BUILD_LAYOUT
    *& Form get_data
    *text
    FORM get_data.
    SELECT mblnr matnr werks menge FROM mseg INTO CORRESPONDING FIELDS OF
    TABLE itab
    WHERE mblnr IN doc.
    SORT itab BY mblnr.
    sort itab by mblnr matnr.
    read table itab into wtab1 index 1.
    mytabix = 1.
    loop at itab into wtab2 from 2.
    if wtab1-mblnr = wtab2-mblnr and wtab1-matnr = wtab2-matnr.
    wtab1-menge = wtab1-menge + wtab2-menge.
    modify itab from wtab1 index mytabix.
    else.
    modify itab from wtab1 index mytabix.
    clear wtab1.
    mytabix = sy-tabix.
    move wtab2 to wtab1.
    endif.
    clear wtab2.
    endloop.
    delete ADJACENT DUPLICATES  from itab comparing mblnr matnr.
    ENDFORM. "get_data
    *& Form display
    *text
    FORM display.
    wa_extab-fcode = '&ETA'.
    append wa_extab to it_extab.
      wa_header-typ  = 'H'.
       wa_header-info = 'SANDY is Great'.
       append wa_header to it_header.
       clear wa_header.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      I_INTERFACE_CHECK                 = ' '
      I_BYPASSING_BUFFER                = ' '
      I_BUFFER_ACTIVE                   = ' '
       I_CALLBACK_PROGRAM                = 'ZSAND_SUBTOTAL'
      I_CALLBACK_PF_STATUS_SET          = ' '
       I_CALLBACK_USER_COMMAND           = 'USERCOMMAND'
       I_CALLBACK_TOP_OF_PAGE            = 'TOP_OF_PAGE'
      I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
      I_CALLBACK_HTML_END_OF_LIST       = ' '
      I_STRUCTURE_NAME                  =
      I_BACKGROUND_ID                   = ' '
      I_GRID_TITLE                      =
      I_GRID_SETTINGS                   =
       IS_LAYOUT                         = gd_layout
       IT_FIELDCAT                       = t_fcat
       IT_EXCLUDING                      = it_extab
      IT_SPECIAL_GROUPS                 =
       IT_SORT                           = it_sortcat
      IT_FILTER                         =
      IS_SEL_HIDE                       =
      I_DEFAULT                         = 'X'
      I_SAVE                            = ' '
      IS_VARIANT                        =
       IT_EVENTS                         = t_eve[]
      IT_EVENT_EXIT                     = 'BUILD_EVE'
      IS_PRINT                          =
      IS_REPREP_ID                      =
      I_SCREEN_START_COLUMN             = 0
      I_SCREEN_START_LINE               = 0
      I_SCREEN_END_COLUMN               = 0
      I_SCREEN_END_LINE                 = 0
      IT_ALV_GRAPHICS                   =
      IT_HYPERLINK                      =
      IT_ADD_FIELDCAT                   =
      IT_EXCEPT_QINFO                   =
      I_HTML_HEIGHT_TOP                 =
      I_HTML_HEIGHT_END                 =
    IMPORTING
      E_EXIT_CAUSED_BY_CALLER           =
      ES_EXIT_CAUSED_BY_USER            =
      TABLES
        t_outtab                          = itab
    EXCEPTIONS
      PROGRAM_ERROR                     = 1
      OTHERS                            = 2
    IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    ENDFORM. "display
    ***& Form top_of_page
    *text
    FORM top_of_page.
    if var1 is initial.
      wa_header-typ  = 'H'.
       wa_header-info = 'SANDY is Great'.
       append wa_header to it_header.
       clear wa_header.
    CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
      EXPORTING
        IT_LIST_COMMENTARY       = it_header
        I_LOGO                   = 'HR_LOGO'
      I_END_OF_LIST_GRID       =
              var1 = 'X'.
    endif.
      ENDFORM. "top_of_page
      FORM end_of_page.
    if var2 is initial.
      wa_header-typ  = 'H'.
       wa_header-info = 'SANDY is Great'.
       append wa_header to it_header.
       clear wa_header.
    CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
      EXPORTING
        IT_LIST_COMMENTARY       = it_header
        I_LOGO                   = 'HR_LOGO'
      I_END_OF_LIST_GRID       =
              var2 = 'X'.
    endif.
      ENDFORM. "top_of_page
    *&      Form  fill_sort
          text
    -->  p1        text
    <--  p2        text
    form fill_sort .
    wa_sort-spos      = 1.
      wa_sort-fieldname = 'MBLNR'.
      wa_sort-SUBTOT    = 'X'. "subtotals any totals column by this field
    gd_sortcat-tabname
      APPEND wa_sort TO it_sortcat.
      wa_sort-spos      = 2.
      wa_sort-fieldname = 'MATNR'.
    gd_sortcat-tabname
      APPEND wa_sort TO it_sortcat.
    endform.                    " fill_sort
    FORM status USING rt_extab TYPE slis_t_extab.
    set pf-status  'ZSTANDARD'.
    endform.
    form USERCOMMAND USING R_UCOMM type sy-ucomm
                           rselfield type slis_selfield .
    set parameter id 'MAT'  field rselfield-value .
    call transaction 'MM03' and  skip first screen.
    endform.
    I hope this program will help you out.
    Help children of U.N World Food Program by rewarding  points and encourage others to answer your queries.

  • Adding row after subtotal in ALV

    Hi Guys,
    can we add one row after the subtotal in ALV.
    Like the below...
    field1 field2 field3 field4
    Sub total. 120 121 125 130
    Test 150
    can you help me about the above...
    Thanks,
    Lingesh

    Hi
    If you use GROUPLEVEL_CHANGE you have to creare a form like this:
    FORM GROUPLEVEL_CHANGE
                   USING P_LINEINFO TYPE SLIS_LINEINFO
                         LS_GROUPS   TYPE KKBLO_GROUPLEVELS.
    ENDFORM.                    "GROUPLEVEL_CHANGE
    In the P_LINEINFO you have details of row and in the LS_GROUPS details of level of sorting.
    For example I used it to re-write subtotal:
    FORM GROUPLEVEL_CHANGE USING P_LINEINFO TYPE SLIS_LINEINFO
                                LS_GROUPS   TYPE KKBLO_GROUPLEVELS.
      PERFORM WRITE_SUB_TOTAL USING LS_GROUPS.
    ENDFORM.                    "GROUPLEVEL_CHANGE
    FORM WRITE_SUB_TOTAL  USING    P_GROUPS TYPE KKBLO_GROUPLEVELS.
      DATA: TOT_SALDO_A     LIKE BSID-DMBTR,
            TOT_FATTURATO_A LIKE BSID-DMBTR,
            TOT_DSO_A       LIKE BSID-DMBTR.
      DATA: WA_GROUP        TYPE KKBLO_GROUPLEVELS.
      DATA: RUN_LEVEL       TYPE I.
      DATA: BEGIN OF T_LEVEL OCCURS 1,
              LEVEL       TYPE I,
              INDEX_FROM  TYPE I,
              INDEX_TO    TYPE I,
            END   OF T_LEVEL.
      T_LEVEL-LEVEL      = P_GROUPS-LEVEL.
      T_LEVEL-INDEX_FROM = P_GROUPS-INDEX_FROM.
      T_LEVEL-INDEX_TO   = P_GROUPS-INDEX_TO.
      APPEND T_LEVEL.
    Check livel:
      CALL FUNCTION 'ALV_GROUPLEVELS_GET'
       IMPORTING
         ET_GROUPS                 = GT_GROUP
        TABLES
          T_OUTTAB                  = <FS_OUTPUT>.
      RUN_LEVEL = P_GROUPS-LEVEL + 1.
      IF RUN_LEVEL <= LEVEL.
        DO.
          LOOP AT GT_GROUP INTO WA_GROUP
                    WHERE INDEX_FROM => P_GROUPS-INDEX_FROM
                      AND INDEX_TO   <= P_GROUPS-INDEX_TO
                      AND LEVEL      = RUN_LEVEL.
            T_LEVEL-LEVEL      = RUN_LEVEL.
            T_LEVEL-INDEX_FROM = WA_GROUP-INDEX_FROM.
            T_LEVEL-INDEX_TO   = WA_GROUP-INDEX_TO.
          ENDLOOP.
          IF SY-SUBRC = 0.
            APPEND T_LEVEL.
          ENDIF.
          RUN_LEVEL = RUN_LEVEL + 1.
          IF RUN_LEVEL > LEVEL. EXIT. ENDIF.
        ENDDO.
      ENDIF.
      SORT T_LEVEL BY LEVEL DESCENDING.
      LOOP AT T_LEVEL.
        TOT_SALDO_A = TOT_FATTURATO_A = 0.
        LOOP AT <FS_OUTPUT> INTO <FS_WA_OUT>
                            FROM T_LEVEL-INDEX_FROM
                              TO   T_LEVEL-INDEX_TO.
          ASSIGN COMPONENT 'ZSALDO'
              OF STRUCTURE <FS_WA_OUT> TO <FS_SALDO>.
          ASSIGN COMPONENT 'ZFATTURATO'
              OF STRUCTURE <FS_WA_OUT> TO <FS_FATTURATO>.
          TOT_SALDO_A     = TOT_SALDO_A     + <FS_SALDO>.
          TOT_FATTURATO_A = TOT_FATTURATO_A + <FS_FATTURATO>.
        ENDLOOP.
        TOT_SALDO     = TOT_SALDO     + TOT_SALDO_A .
        TOT_FATTURATO = TOT_FATTURATO + TOT_FATTURATO_A.
        PERFORM CALCULATE_DSO USING TOT_FATTURATO_A
                                    TOT_SALDO_A TOT_DSO_A.
        PERFORM WRITE_TOT_DSO
                      USING TOT_SALDO_A
                            TOT_FATTURATO_A TOT_DSO_A
                            T_LEVEL-LEVEL T_LEVEL-INDEX_FROM.
      ENDLOOP.
    ENDFORM.                    " WRITE_SUB_TOTAL
    Max

  • Need help in getting subtotal in ALV

    Hi Experts
    I've done subtotal in ALV. I'm getting below output. But i want net value subtotal should come by adding to its previous subtotal.
    Ex :   4969      02.01.1997     CURA         5.500
             4970      03.01.1997     CURA        38.338  (32.838 + 5.500)
    My code :
    type-pools slis.
    data : BEGIN OF ty_vbak OCCURS 0,
              VBELN like vbak-vbeln,
              erdat like vbak-erdat,
              ernam like vbak-ernam,
              netwr like vbak-netwr,
              END OF ty_vbak.
    DATA : it_fcat type SLIS_T_FIELDCAT_ALV,
                WA_FCAT TYPE SLIS_FIELDCAT_ALV,
                IT_SORT TYPE SLIS_T_SORTINFO_ALV,
                WA_SORT TYPE SLIS_SORTINFO_ALV,
                G_VBELN TYPE VBAK-VBELN.
    CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
       EXPORTING
         I_PROGRAM_NAME         = SY-REPID
         I_INTERNAL_TABNAME     = 'TY_VBAK'
    *    I_STRUCTURE_NAME       =
    *   I_CLIENT_NEVER_DISPLAY = 'X'
        I_INCLNAME             = SY-REPID
    *   I_BYPASSING_BUFFER     =
    *   I_BUFFER_ACTIVE        =
       CHANGING
         CT_FIELDCAT            = it_fcat.
    SELECT-OPTIONS S_VBELN FOR G_VBELN.
    SELECT VBELN ERDAT ernam NETWR
       FROM VBAK INTO TABLE ty_vbak WHERE VBELN IN S_VBELN.
    *  WA_FCAT-FIELDNAME = 'VBELN'.
    *  WA_FCAT-SELTEXT_M = 'Sales Document'.
    *  WA_FCAT-OUTPUTLEN = 20.
    *  APPEND WA_FCAT TO IT_FCAT.
    *  WA_FCAT-FIELDNAME = 'ERDAT'.
    *  WA_FCAT-SELTEXT_M = 'DATE'.
    *  APPEND WA_FCAT TO IT_FCAT.
    *  WA_FCAT-FIELDNAME = 'NETWR'.
    *  WA_FCAT-SELTEXT_M = 'NET PRICE'.
    *  WA_FCAT-DO_SUM = 'X'.
    *  WA_FCAT-OUTPUTLEN = 40.
    *  APPEND WA_FCAT TO IT_FCAT.
    *  CLEAR WA_FCAT.
    READ TABLE IT_FCAT INTO WA_FCAT WITH KEY FIELDNAME = 'NETWR'.
    WA_SORT-FIELDNAME = 'ERDAT'.
    WA_SORT-UP        = 'X'.
    WA_SORT-SUBTOT = 'X'.
    APPEND WA_SORT TO IT_SORT.
    WA_FCAT-FIELDNAME = ' '.
    WA_FCAT-DO_SUM = 'X'.
    MODIFY IT_FCAT FROM WA_FCAT TRANSPORTING
           DO_SUM KEY WHERE FIELDNAME = 'NETWR'.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
      EXPORTING
    *   I_INTERFACE_CHECK                 = ' '
    *   I_BYPASSING_BUFFER                = ' '
    *   I_BUFFER_ACTIVE                   = ' '
    *   I_CALLBACK_PROGRAM                = ' '
    *   I_CALLBACK_PF_STATUS_SET          = ' '
    *   I_CALLBACK_USER_COMMAND           = ' '
    *   I_CALLBACK_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                         =
         IT_FIELDCAT                       = IT_FCAT
    *   IT_EXCLUDING                      =
    *   IT_SPECIAL_GROUPS                 =
          IT_SORT                           = IT_SORT
    *   IT_FILTER                         =
    *   IS_SEL_HIDE                       =
    *   I_DEFAULT                         = 'X'
    *   I_SAVE                            = ' '
    *   IS_VARIANT                        =
    *   IT_EVENTS                         =
    *   IT_EVENT_EXIT                     =
    *   IS_PRINT                          =
    *   IS_REPREP_ID                      =
    *   I_SCREEN_START_COLUMN             = 0
    *   I_SCREEN_START_LINE               = 0
    *   I_SCREEN_END_COLUMN               = 0
    *   I_SCREEN_END_LINE                 = 0
    *   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                          = ty_vbak
    * EXCEPTIONS
    *   PROGRAM_ERROR                     = 1
    *   OTHERS                            = 2
    IF SY-SUBRC <> 0.
    * Implement suitable error handling here
    ENDIF.

    Hi,
    Please try the below Sample code once.
    TYPE-POOLS : SLIS.
    types : begin of ty_final,
             vbeln type vbak-vbeln,
             posnr type vbap-posnr,
             ernam type vbak-ernam,
             erdat type vbak-erdat,
             netwr type vbak-netwr,
             COL(4)      TYPE   C,
            end of ty_final.
    data : lt_vbak type table of vbak,
           lt_vbap type table of vbap,
           wa_vbap type vbap,
           wa_vbak type vbak,
           lt_final type table of ty_final,
           wa_final type ty_final,
           LT_FIELDCAT    TYPE            SLIS_T_FIELDCAT_ALV,
           WA_LAYOUT      TYPE            SLIS_LAYOUT_ALV,
           WA_FIELDCAT    TYPE            SLIS_FIELDCAT_ALV,
           L_NETWR TYPE VBAK-NETWR,
           INDEX TYPE SY-INDEX.
       select * from vbak into table lt_vbak up to 100 rows.
    if lt_vbap is not initial.
       select * from vbap into table lt_vbap for all entries in lt_vbak where vbeln = lt_vbak-vbeln.
    endif.
        LOOP AT LT_VBAP INTO WA_VBAP.
        INDEX = INDEX  + 1.
        READ TABLE LT_VBAK INTO WA_VBAK WITH KEY VBELN = WA_VBAP-VBELN.
          WA_FINAL-VBELN = WA_VBAK-VBELN.
          WA_FINAL-POSNR = WA_VBAP-POSNR .
          WA_FINAL-ERNAM = WA_VBAK-ERNAM.
          WA_FINAL-ERDAT = WA_VBAK-ERDAT.
          WA_FINAL-NETWR = WA_VBAP-NETWR.
          APPEND WA_FINAL TO LT_FINAL.
        L_NETWR = L_NETWR + WA_FINAL-NETWR.
        AT END OF VBELN.
          WA_FINAL-VBELN = ' '.
          WA_FINAL-POSNR = ' ' .
          WA_FINAL-ERNAM = 'Sub Total'.
          WA_FINAL-ERDAT = ' '.
          WA_FINAL-NETWR = L_NETWR.
          WA_FINAL-COL   = 'C310'.
          INDEX = INDEX  + 1.
          INSERT WA_FINAL INTO LT_FINAL INDEX INDEX.
          CLEAR : WA_FINAL, WA_VBAK, WA_VBAP.
        ENDAT.
      ENDLOOP.
    *Build fieldcat
        PERFORM BUILDFIELDCAT USING : '1'  'VBELN'   'LT_FINAL' 'VBELN' ,
                                      '2'  'POSNR'   'LT_FINAL' 'POSNR' ,
                                      '3'  'ERNAM'   'LT_FINAL' 'ERNAM' ,
                                      '4'  'ERDAT'   'LT_FINAL' 'ERDAT' ,
                                      '5'  'NETWR'   'LT_FINAL' 'NETWR'.
    * Layout Design
      WA_LAYOUT-ZEBRA             = 'X'.
      WA_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
      WA_LAYOUT-INFO_FIELDNAME  =  'COL'.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          I_CALLBACK_PROGRAM       = SY-CPROG
          I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS'
          I_CALLBACK_USER_COMMAND  = 'USER_COMMAND'
          IS_LAYOUT                = WA_LAYOUT
          IT_FIELDCAT              = LT_FIELDCAT
          I_SAVE                   = 'A'
        TABLES
          T_OUTTAB                 = LT_FINAL.
    *&      Form  BUILDFIELDCAT
    FORM BUILDFIELDCAT  USING    P_COL_POS
                                 P_FIELDNAME
                                 P_REF_TAB
                                 P_SEL_TXT.          "#EC *
      WA_FIELDCAT-COL_POS       = P_COL_POS.
      WA_FIELDCAT-FIELDNAME     = P_FIELDNAME.
      WA_FIELDCAT-SELTEXT_L     = P_SEL_TXT .
      APPEND WA_FIELDCAT TO LT_FIELDCAT.
      CLEAR  WA_FIELDCAT.
    ENDFORM.                    " BUILDFIELDCAT
    Regards,
    Srikanth

  • Multiple level of subtotal in alv

    Hi Experts,
                    Can any one tell me how to get multiple level of subtotal in alv?
    I am using function module to get the output.

    Hi Surajit
    can you explain ur requirement
    Regards
    Prabumanoharan

  • How to do subtotal in alv?

    Hi,
    I have a problem to do the subtotal in alv.
    The outlook of alv now is as following:
    Specimen Adversary Amount
    ZZZ 300100089 1050
    ZZZ 300100089 -1050
    90256243 300100000 193410
    90256242 300100000 173250
    90256241 300100000 173250
    90256240 300100000 173250
    90256239 300100000 173250
    90256238 300100000 173250
    90256237 300100000 173250
    What I need to do it to sum up the amount for same "ADVERSARY"
    The out-come image should be
    Specimen Adversary Amount
    ZZZ 300100089 1050
    ZZZ 300100089 -1050
    subtotal 0
    90256243 300100000 193410
    90256242 300100000 173250
    90256241 300100000 173250
    90256240 300100000 173250
    90256239 300100000 173250
    90256238 300100000 173250
    90256237 300100000 173250
    subtotal 1232910
    Question:
    How can I add the subtotal in alv?
    Please help!!
    The following is the original coding:
    END-OF-SELECTION.
    SORT t.
    LOOP AT t.
    AT NEW bukrs.
    CLEAR anz_dl.
    CLEAR htext-anzahl.
    CLEAR htext-datei.
    htext-text1 = ' records writen in file '.
    CLEAR p_pfad.
    CONCATENATE
    i_pfad
    'CU_CC'
    t-bukrs
    sy-datum+6(2)
    sy-datum+4(2)
    sy-datum(4)
    sy-uzeit
    '.txt'
    INTO p_pfad.
    CLEAR outtab.
    REFRESH outtab.
    REFRESH: gt_outalv. "INS MG020207
    ENDAT.
    IF t-shkzg = 'H'.
    h_betrg = t-wrbtr * -1.
    ELSE.
    h_betrg = t-wrbtr.
    h_dmbtr = t-dmbtr.
    ENDIF.
    s-filler1 = s-filler2 = s-filler3 = s-filler4 = s-filler5 = ';'.
    s-filler6 = s-filler7 = s-filler8 = ';'.
    s-filler9 = s-filler10 = s-filler11 = s-filler12 = s-filler13 = ';'.
    s-filler14 = ';'.
    s-belnr = t-belnr.
    IF t-xblnr NE space. "WD041005a
    s-xblnr = t-xblnr. "WD041005a
    ELSE. "WD041005a
    s-xblnr = t-belnr. "WD041005a
    ENDIF. "WD041005a
    WHILE s-xblnr(1) EQ '0'. "INS MG130606
    SHIFT s-xblnr LEFT. "INS MG130606
    ENDWHILE. "INS MG130606
    WRITE t-kunnr TO s-kunnr NO-ZERO.
    s-lifn2 = s-kunnr.
    shift s-lifn2 RIGHT.
    s-lifn2(1) = 'R'.
    S-KUNNR = T-KUNNR+5(5).
    s-bldat+2(1) = '/'.
    s-bldat+5(1) = '/'.
    s-bldat0(2) = t-bldat4(2).
    s-bldat3(2) = t-bldat6(2).
    s-bldat6(4) = t-bldat0(4).
    s-budat+2(1) = '/'.
    s-budat+5(1) = '/'.
    s-budat0(2) = t-budat4(2).
    s-budat3(2) = t-budat6(2).
    s-budat6(4) = t-budat0(4).
    s-netdt+2(1) = '/'.
    s-netdt+5(1) = '/'.
    s-netdt0(2) = t-netdt4(2).
    s-netdt3(2) = t-netdt6(2).
    s-netdt6(4) = t-netdt0(4).
    s-waers = t-waers.
    s-dmbtr = t-dmbtr.
    s-sgtxt = t-sgtxt.
    CLEAR s-twaer.
    SELECT SINGLE waers INTO s-twaer
    FROM t001
    WHERE bukrs = t-bukrs.
    IF h_betrg < 0.
    hs_betrg+0(1) = '-'.
    ELSE.
    hs_betrg+0(1) = ' '.
    ENDIF.
    WRITE h_betrg CURRENCY t-waers TO hs_betrg+1 NO-GROUPING
    NO-SIGN
    LEFT-JUSTIFIED.
    REPLACE ',' WITH '.' INTO hs_betrg.
    WRITE hs_betrg TO s-betrg.
    IF h_dmbtr < 0.
    hs_betrg+0(1) = '-'.
    ELSE.
    hs_betrg+0(1) = ' '.
    ENDIF.
    WRITE h_dmbtr CURRENCY t-waers TO hs_betrg+1 NO-GROUPING
    NO-SIGN
    LEFT-JUSTIFIED.
    REPLACE ',' WITH '.' INTO hs_betrg.
    WRITE hs_betrg TO s-dmbtr.
    s-compcode = t-bukrs. "fw070905
    IF p_downl = 'X'.
    MOVE s TO outtab-s.
    APPEND outtab.
    ADD 1 TO anz_dl.
    ENDIF.
    gs_outalv-belnr = s-belnr. "INS MG020207
    *<<<< CR01 START ADD as_outalv-zuonr
    gs_outalv-zuonr = s-zuonr. "CR01
    *>>>> CR01 EDD ADD as_outalv-zuonr
    gs_outalv-kunnr = s-kunnr. "INS MG020207
    gs_outalv-bldat = s-bldat. "INS MG020207
    gs_outalv-netdt = s-netdt. "INS MG020207
    gs_outalv-betrg = s-betrg. "INS MG020207
    gs_outalv-waers = s-waers. "INS MG020207
    gs_outalv-compcode = s-compcode. "INS MG020207
    gs_outalv-budat = s-budat. "INS MG020207
    gs_outalv-sgtxt = s-sgtxt.
    gs_outalv-kmmnt = s-kmmnt.
    gs_outalv-vbeln = s-vbeln.
    gs_outalv-xblnr = s-xblnr.
    gs_outalv-lifn2 = s-lifn2.
    gs_outalv-dmbtr = s-dmbtr.
    gs_outalv-twaer = s-twaer.
    APPEND gs_outalv TO gt_outalv. "INS MG020207
    AT END OF bukrs.
    WRITE anz_dl TO htext-anzahl.
    WRITE p_pfad TO htext-datei.
    CONDENSE htext.
    IF p_downl = 'X'.
    SKIP 2.
    WRITE: / htext.
    CALL FUNCTION 'GUI_DOWNLOAD'
    EXPORTING
    filename = p_pfad
    filetype = 'ASC'
    TABLES
    data_tab = outtab
    EXCEPTIONS
    file_write_error = 1
    no_batch = 2
    gui_refuse_filetransfer = 3
    invalid_type = 4
    no_authority = 5
    unknown_error = 6
    header_not_allowed = 7
    separator_not_allowed = 8
    filesize_not_allowed = 9
    header_too_long = 10
    dp_error_create = 11
    dp_error_send = 12
    dp_error_write = 13
    unknown_dp_error = 14
    access_denied = 15
    dp_out_of_memory = 16
    disk_full = 17
    dp_timeout = 18
    file_not_found = 19
    dataprovider_exception = 20
    control_flush_error = 21
    OTHERS = 22.
    IF sy-subrc 0.
    write: / 'Error creating File:', P_Pfad, sy-subrc.
    MESSAGE e405 WITH text-002 p_pfad.
    ENDIF.
    ENDIF.
    *<<<<< INS MG020207
    IF p_alvd EQ 'X'.
    PERFORM build_layout_data.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
    i_callback_program = sy-repid
    i_structure_name = 'GT_OUTALV'
    is_layout = gs_layout
    it_fieldcat = gt_fieldcat[]
    i_callback_top_of_page = 'TOP-OF-PAGE'
    TABLES
    t_outtab = gt_outalv.
    ENDIF.
    *>>>>> INS MG020207
    ENDAT.
    ENDLOOP.

    Check this code....it will help you...reward if useful.
    REPORT  ZPP473_VEHICLE_REVERSAL_REP NO STANDARD PAGE HEADING
                                        MESSAGE-ID ZPP.
    TABLES:ZPP18_RT_CORR.
    TYPE-POOLS:SLIS.
    DATA:BEGIN OF WA_VEH_REV,
    VEHNO TYPE ZPP18_RT_CORR-VEHNO,
    MATNR TYPE ZPP18_RT_CORR-MATNR,
    WERKS TYPE ZPP18_RT_CORR-WERKS,
    MDV01 TYPE ZPP18_RT_CORR-MDV01,
    ENGNO TYPE ZPP18_RT_CORR-ENGNO,
    FRMNO TYPE ZPP18_RT_CORR-FRMNO,
    ERFMG TYPE ZPP18_RT_CORR-ERFMG,
    SHIFT TYPE ZPP18_RT_CORR-SHIFT,
    ZUNAME TYPE ZPP18_RT_CORR-ZUNAME,
    ZDATE TYPE ZPP18_RT_CORR-ZDATE,
    MAKTX TYPE MAKT-MAKTX,
    ZREASON_DES TYPE ZPP17_REASON_COD-ZREASON_DES,
    *VTEXT TYPE T179T-VTEXT,
    END OF WA_VEH_REV.
    DATA:IT_VEH_REV LIKE STANDARD TABLE OF WA_VEH_REV.
    DATA:  ALVFLD TYPE SLIS_FIELDCAT_ALV,
           FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
    DATA:  WK_LAYOUT TYPE SLIS_LAYOUT_ALV,
           I_SORT TYPE SLIS_T_SORTINFO_ALV,
           W_SORT LIKE LINE OF I_SORT.
    SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
    SELECT-OPTIONS:
    SO_ZDATE FOR ZPP18_RT_CORR-ZDATE OBLIGATORY,
    SO_WERKS FOR ZPP18_RT_CORR-WERKS,
    SO_SHIFT FOR ZPP18_RT_CORR-SHIFT,
    SO_MDV01 FOR ZPP18_RT_CORR-MDV01,
    SO_MATNR FOR ZPP18_RT_CORR-MATNR,
    SO_VEHNO FOR ZPP18_RT_CORR-VEHNO,
    SO_ENGNO FOR ZPP18_RT_CORR-ENGNO,
    SO_FRMNO FOR ZPP18_RT_CORR-FRMNO,
    SO_UNAME FOR ZPP18_RT_CORR-ZUNAME.
    SELECTION-SCREEN END OF BLOCK B1.
    START-OF-SELECTION.
    **GET REVERSAL,MATERIAL DESCRIPTIONS, REASON DESCRIPTIONS
      SELECT ZPP18_RT_CORR~VEHNO
             ZPP18_RT_CORR~MATNR
             ZPP18_RT_CORR~WERKS
             ZPP18_RT_CORR~MDV01
             ZPP18_RT_CORR~ENGNO
             ZPP18_RT_CORR~FRMNO
             ZPP18_RT_CORR~ERFMG
             ZPP18_RT_CORR~SHIFT
             ZPP18_RT_CORR~ZUNAME
             ZPP18_RT_CORR~ZDATE
             MAKT~MAKTX
             ZPP17_REASON_COD~ZREASON_DES
      INTO TABLE IT_VEH_REV FROM
      ZPP18_RT_CORR INNER JOIN MAKT
      ON ( ZPP18_RT_CORRMANDT = MAKTMANDT AND
      ZPP18_RT_CORRMATNR = MAKTMATNR )
      INNER JOIN ZPP17_REASON_COD
      ON ( ZPP18_RT_CORRMANDT = ZPP17_REASON_CODMANDT AND
      ZPP18_RT_CORRZREASON = ZPP17_REASON_CODZREASON )
      CLIENT SPECIFIED
      WHERE ZPP18_RT_CORR~MANDT = SY-MANDT
      AND ZPP18_RT_CORR~ZDATE IN SO_ZDATE
      AND ZPP18_RT_CORR~WERKS IN SO_WERKS
      AND ZPP18_RT_CORR~SHIFT IN SO_SHIFT
      AND ZPP18_RT_CORR~MATNR IN SO_MATNR
      AND ZPP18_RT_CORR~MDV01 IN SO_MDV01
      AND ZPP18_RT_CORR~VEHNO IN SO_VEHNO
      AND ZPP18_RT_CORR~ENGNO IN SO_ENGNO
      AND ZPP18_RT_CORR~FRMNO IN SO_FRMNO
      AND ZPP18_RT_CORR~ZUNAME IN SO_UNAME
      AND MAKT~SPRAS = SY-LANGU.
      IF SY-SUBRC = 0.
          SORT IT_VEH_REV ASCENDING BY ZDATE SHIFT WERKS MDV01 MATNR.
      ELSE.
        MESSAGE I961 WITH 'No Data Found...Try Again !!!'.
        STOP.
      ENDIF.
    **BUILD ALV DISPLAY.
      DEFINE ALV_MACRO.
        ALVFLD-FIELDNAME = &1.
        ALVFLD-SELTEXT_M = &2.
        ALVFLD-COL_POS = &3.
        IF &1 = 'ERFMG'.
          ALVFLD-DO_SUM = 'X'.
        ENDIF.
        APPEND ALVFLD TO FIELDCAT.
        CLEAR ALVFLD.
      END-OF-DEFINITION.
      REFRESH FIELDCAT.
      WK_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
      ALV_MACRO 'ZDATE' 'Rev.Date' '1'.
      ALV_MACRO 'SHIFT' 'Shift' '2'.
      ALV_MACRO 'WERKS' 'Plant' '3'.
      ALV_MACRO 'MDV01' 'Conveyor' '4'.
      ALV_MACRO 'MATNR' 'Material.No' '5'.
      ALV_MACRO 'MAKTX' 'Description' '6'.
      ALV_MACRO 'VEHNO' 'Veh.No' '7'.
      ALV_MACRO 'ENGNO' 'Eng.No' '8'.
      ALV_MACRO 'FRMNO' 'Frame.No' '9'.
      ALV_MACRO 'ERFMG' 'Qty' '10'.         <----Do Sum Here
      ALV_MACRO 'ZREASON_DES' 'Reason' '11'.
      ALV_MACRO 'ZUNAME' 'User.Reversed' '12'.
      REFRESH I_SORT.
      W_SORT-SPOS      = 1.
      W_SORT-FIELDNAME = 'ZDATE'.
      W_SORT-UP        = 'X'.
      APPEND W_SORT TO I_SORT.
      CLEAR W_SORT.
      W_SORT-SPOS      = 6.
      W_SORT-FIELDNAME = 'MAKTX'.
      W_SORT-UP        = 'X'.
      W_SORT-SUBTOT      = 'X'.
      APPEND W_SORT TO I_SORT.
      CLEAR W_SORT.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          I_GRID_TITLE  = 'Vehicle Reversal Report'
          IS_LAYOUT     = WK_LAYOUT
          IT_FIELDCAT   = FIELDCAT[]
          IT_SORT       = I_SORT[]
        TABLES
          T_OUTTAB      = IT_VEH_REV[]
        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.
    END-OF-SELECTION.

  • Subtotaling in ALV(urgent)

    Hi experts,
    can anyone tell how to achieve the subtotaling in ALV'S.any pseudo code .points will be awarded.
    Regards,
    nagaraj

    Hello Nagaraj,
    In the sort table use:
      REFRESH IT_SORT.
      CLEAR: G_S_SORT,G_S_SORT.
      G_S_SORT-SPOS      = 1.
      G_S_SORT-FIELDNAME = 'EBELN'.
      G_S_SORT-UP        = 'X'.
      G_S_SORT-DOWN      = ' '.
    <b>  G_S_SORT-SUBTOT    = 'X'.</b> 
    G_S_SORT-EXPA      = ' '.
      APPEND G_S_SORT TO IT_SORT.
    If useful reward.
    Vasanth

  • Subtotal in alv grid output.

    hi experts,
                   i want to display subtotal in the alv output using control break statement, without using alv functionality and layout.
    my code is given below, how can i add subtotal field and display them in alv ,
    *& Report  Y_VARUNSHARMA
    REPORT  Y_VARUNSHARMA.
    TABLES: VBAK.
    TYPE-POOLS: SLIS.
    TYPES: BEGIN OF T_ITAB,
           VBELN LIKE VBAK-VBELN,
           ERDAT LIKE VBAK-ERDAT,
           ERNAM LIKE VBAK-ERNAM,
           ANGDT LIKE VBAK-ANGDT,
           BNDDT LIKE VBAK-BNDDT,
           AUART LIKE VBAK-AUART,
           POSNR LIKE VBAP-POSNR,
           MATNR LIKE VBAP-MATNR,
           CHARG LIKE VBAP-CHARG,
           MAKTX LIKE MAKT-MAKTX,
           NETPR LIKE VBAP-NETPR,
           VGBEL LIKE VBAK-VGBEL,
           MEINS LIKE VBAP-MEINS,
           SMENG LIKE VBAP-SMENG,
            END OF T_ITAB.
    DATA: G_REPID LIKE SY-REPID.
    DATA: WA_LAYOUT TYPE SLIS_LAYOUT_ALV.
    DATA: I_ITAB TYPE T_ITAB OCCURS 0,
          WA_ITAB TYPE T_ITAB.
    DATA: I_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV ,
          WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
    DATA: I_LISTHEADER TYPE SLIS_T_LISTHEADER,
          WA_LISTHEADER TYPE SLIS_LISTHEADER.
    SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
    SELECT-OPTIONS: DOCNO FOR VBAK-VBELN.
    PARAMETER DOCTYPE LIKE VBAK-AUART.
    SELECT-OPTIONS: DATE FOR SY-DATUM.
    SELECTION-SCREEN SKIP 2.
    PARAMETER P_CHECK AS CHECKBOX.
    SELECTION-SCREEN END OF BLOCK B1.
    INITIALIZATION.
    G_REPID = SY-REPID.
    PERFORM BUILD_CATALOGE.
    PERFORM LIST_HEADER.
    PERFORM SET_LAYOUT.
    AT SELECTION-SCREEN.
    IF DOCNO-LOW = '' .
    MESSAGE E000(ZVARUN) .
    elseif DOCNO-HIGH = '' .
    MESSAGE E001(ZVARUN) .
    ENDIF.
    START-OF-SELECTION.
    PERFORM GET_DATA.
    *PERFORM DISPLAY.
    END-OF-SELECTION.
    IF P_CHECK = 'X'.
    PERFORM DOWNLOAD_EXCEL.
    ELSE.
    PERFORM DISPLAY.
    ENDIF.
    FORM DOWNLOAD_EXCEL.
    CALL FUNCTION 'GUI_DOWNLOAD'
      EXPORTING
      BIN_FILESIZE                    =
        FILENAME                        = 'C:\FILE.XLS'
      FILETYPE                        = 'XLS'
      APPEND                          = ' '
      WRITE_FIELD_SEPARATOR           = ' '
      HEADER                          = '00'
      TRUNC_TRAILING_BLANKS           = ' '
      WRITE_LF                        = 'X'
      COL_SELECT                      = ' '
      COL_SELECT_MASK                 = ' '
      DAT_MODE                        = ' '
      CONFIRM_OVERWRITE               = ' '
      NO_AUTH_CHECK                   = ' '
      CODEPAGE                        = ' '
      IGNORE_CERR                     = ABAP_TRUE
      REPLACEMENT                     = '#'
      WRITE_BOM                       = ' '
      TRUNC_TRAILING_BLANKS_EOL       = 'X'
      WK1_N_FORMAT                    = ' '
      WK1_N_SIZE                      = ' '
      WK1_T_FORMAT                    = ' '
      WK1_T_SIZE                      = ' '
    IMPORTING
      FILELENGTH                      =
      TABLES
        DATA_TAB                        = I_ITAB
      FIELDNAMES                      =
    EXCEPTIONS
      FILE_WRITE_ERROR                = 1
      NO_BATCH                        = 2
      GUI_REFUSE_FILETRANSFER         = 3
      INVALID_TYPE                    = 4
      NO_AUTHORITY                    = 5
      UNKNOWN_ERROR                   = 6
      HEADER_NOT_ALLOWED              = 7
      SEPARATOR_NOT_ALLOWED           = 8
      FILESIZE_NOT_ALLOWED            = 9
      HEADER_TOO_LONG                 = 10
      DP_ERROR_CREATE                 = 11
      DP_ERROR_SEND                   = 12
      DP_ERROR_WRITE                  = 13
      UNKNOWN_DP_ERROR                = 14
      ACCESS_DENIED                   = 15
      DP_OUT_OF_MEMORY                = 16
      DISK_FULL                       = 17
      DP_TIMEOUT                      = 18
      FILE_NOT_FOUND                  = 19
      DATAPROVIDER_EXCEPTION          = 20
      CONTROL_FLUSH_ERROR             = 21
      OTHERS                          = 22
    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 BUILD_CATALOGE.
    WA_FIELDCAT-FIELDNAME = 'VBELN'.
    WA_FIELDCAT-SELTEXT_M = 'SALES DOC'.
    *WA_FIELDCAT-OUTPUTLEN = 10.
    APPEND WA_FIELDCAT TO I_FIELDCAT.
    CLEAR WA_FIELDCAT.
    WA_FIELDCAT-FIELDNAME = 'ERDAT'.
    WA_FIELDCAT-SELTEXT_M = 'DATE'.
    *WA_FIELDCAT-OUTPUTLEN = 10.
    APPEND WA_FIELDCAT TO I_FIELDCAT.
    CLEAR WA_FIELDCAT.
    WA_FIELDCAT-FIELDNAME = 'ERNAM'.
    WA_FIELDCAT-SELTEXT_M = 'NAME'.
    *WA_FIELDCAT-OUTPUTLEN = 10.
    APPEND WA_FIELDCAT TO I_FIELDCAT.
    CLEAR WA_FIELDCAT.
    WA_FIELDCAT-FIELDNAME = 'ANGDT'.
    WA_FIELDCAT-SELTEXT_M = 'VALID FR'.
    *WA_FIELDCAT-OUTPUTLEN = 10.
    APPEND WA_FIELDCAT TO I_FIELDCAT.
    CLEAR WA_FIELDCAT.
    WA_FIELDCAT-FIELDNAME = 'BNDDT'.
    WA_FIELDCAT-SELTEXT_M = 'VALID TO'.
    *WA_FIELDCAT-OUTPUTLEN = 10.
    APPEND WA_FIELDCAT TO I_FIELDCAT.
    CLEAR WA_FIELDCAT.
    WA_FIELDCAT-FIELDNAME = 'AUART'.
    WA_FIELDCAT-SELTEXT_M = 'DOC TYPE'.
    *WA_FIELDCAT-OUTPUTLEN = 10.
    APPEND WA_FIELDCAT TO I_FIELDCAT.
    CLEAR WA_FIELDCAT.
    WA_FIELDCAT-FIELDNAME = 'POSNR'.
    WA_FIELDCAT-SELTEXT_M = 'DOC ITEM'.
    *WA_FIELDCAT-OUTPUTLEN = 10.
    APPEND WA_FIELDCAT TO I_FIELDCAT.
    CLEAR WA_FIELDCAT.
    WA_FIELDCAT-FIELDNAME = 'MATNR'.
    WA_FIELDCAT-SELTEXT_M = 'MATERIAL NO'.
    *WA_FIELDCAT-OUTPUTLEN = 10.
    APPEND WA_FIELDCAT TO I_FIELDCAT.
    CLEAR WA_FIELDCAT.
    WA_FIELDCAT-FIELDNAME = 'CHARG'.
    WA_FIELDCAT-SELTEXT_M = 'BATCH NO'.
    *WA_FIELDCAT-OUTPUTLEN = 10.
    APPEND WA_FIELDCAT TO I_FIELDCAT.
    CLEAR WA_FIELDCAT.
    WA_FIELDCAT-FIELDNAME = 'MAKTX'.
    WA_FIELDCAT-SELTEXT_M = 'MATERIAL DESC'.
    WA_FIELDCAT-EDIT = 'X'.
    *WA_FIELDCAT-OUTPUTLEN = 10.
    APPEND WA_FIELDCAT TO I_FIELDCAT.
    CLEAR WA_FIELDCAT.
    WA_FIELDCAT-FIELDNAME = 'NETPR'.
    WA_FIELDCAT-SELTEXT_M = 'UNIT PRICE'.
    *WA_FIELDCAT-OUTPUTLEN = 10.
    APPEND WA_FIELDCAT TO I_FIELDCAT.
    CLEAR WA_FIELDCAT.
    WA_FIELDCAT-FIELDNAME = 'VGBEL'.
    WA_FIELDCAT-SELTEXT_M = 'RFR DOC NO'.
    *WA_FIELDCAT-OUTPUTLEN = 10.
    APPEND WA_FIELDCAT TO I_FIELDCAT.
    CLEAR WA_FIELDCAT.
    WA_FIELDCAT-FIELDNAME = 'MEINS'.
    WA_FIELDCAT-SELTEXT_M = 'UNIT'.
    *WA_FIELDCAT-OUTPUTLEN = 10.
    APPEND WA_FIELDCAT TO I_FIELDCAT.
    CLEAR WA_FIELDCAT.
    WA_FIELDCAT-FIELDNAME = 'SMENG'.
    WA_FIELDCAT-SELTEXT_M = 'QUANTITY'.
    *WA_FIELDCAT-OUTPUTLEN = 10.
    APPEND WA_FIELDCAT TO I_FIELDCAT.
    CLEAR WA_FIELDCAT.
    ENDFORM.
    FORM LIST_HEADER.
    WA_LISTHEADER-TYP = 'H'.
    WA_LISTHEADER-INFO = 'RJT COMPUSOLUTIONS'.
    APPEND WA_LISTHEADER TO I_LISTHEADER.
    CLEAR WA_LISTHEADER.
    ENDFORM.
    FORM SET_LAYOUT.
    WA_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
    ENDFORM.
    FORM DISPLAY.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      I_INTERFACE_CHECK                 = ' '
      I_BYPASSING_BUFFER                = ' '
      I_BUFFER_ACTIVE                   = ' '
       I_CALLBACK_PROGRAM                = G_REPID
      I_CALLBACK_PF_STATUS_SET          = ' '
       I_CALLBACK_USER_COMMAND           = 'USER_COMMAND'
       I_CALLBACK_TOP_OF_PAGE            = 'TOP_OF_PAGE'
      I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
      I_CALLBACK_HTML_END_OF_LIST       = ' '
      I_STRUCTURE_NAME                  =
      I_BACKGROUND_ID                   = ' '
      I_GRID_TITLE                      =
      I_GRID_SETTINGS                   =
       IS_LAYOUT                         = WA_LAYOUT
       IT_FIELDCAT                       = I_FIELDCAT[]
      IT_EXCLUDING                      =
      IT_SPECIAL_GROUPS                 =
      IT_SORT                           =
      IT_FILTER                         =
      IS_SEL_HIDE                       =
      I_DEFAULT                         = 'X'
      I_SAVE                            = ' '
      IS_VARIANT                        =
      IT_EVENTS                         =
      IT_EVENT_EXIT                     =
      IS_PRINT                          =
      IS_REPREP_ID                      =
      I_SCREEN_START_COLUMN             = 0
      I_SCREEN_START_LINE               = 0
      I_SCREEN_END_COLUMN               = 0
      I_SCREEN_END_LINE                 = 0
      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                          = I_ITAB
    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 TOP_OF_PAGE.
    CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
      EXPORTING
        IT_LIST_COMMENTARY       = I_LISTHEADER
       I_LOGO                   = 'RJT'
      I_END_OF_LIST_GRID       =
      I_ALV_FORM               =
    ENDFORM.
    FORM GET_DATA.
    SELECT AVBELN AERDAT AERNAM AANGDT ABNDDT AAUART AVGBEL BPOSNR BMATNR BCHARG BMEINS BSMENG BNETPR CMAKTX  INTO CORRESPONDING FIELDS OF TABLE I_ITAB FROM  ( ( VBAK AS A INNER JOIN VBAP AS B
    ON AVBELN = BVBELN ) INNER JOIN MAKT AS C  ON BMATNR = CMATNR )  WHERE AVBELN IN DOCNO AND AAUART = DOCTYPE .
    ENDFORM.
    FORM USER_COMMAND USING L_UCOMM LIKE SY-UCOMM L_SELFIELD TYPE SLIS_SELFIELD.
    CASE L_UCOMM.
    WHEN '&IC1'.
    IF L_SELFIELD-FIELDNAME  = 'VBELN'.
    CALL TRANSACTION 'VA02'.
    ELSEIF
    L_SELFIELD-FIELDNAME = 'MATNR'.
    CALL TRANSACTION 'MM02'.
    ENDIF.
    ENDCASE.
    ENDFORM.

    Hi,
    That I guess is difficult. Only way is to append a new line with your subtotal to the output table with the subtotal filled in appro. field.
    Santhosh

  • Restriction on subtotal in ALV

    Dear ALL
    I have requirement like for one particular column in ALV report subtotal should not be enable only sorting can be done .
    If user clicks on subtotal button for that particular field then system generated message should come subtotal on this field is not possible.
    Let me know how can I achieve this i tried using
    no-sum field of ALV fieldcat but this is not working .
    Regards
    Sunanda Mandavi

    Hi,
    This doesn't seems to be possible using 'REUSE_ALV_GRID_DISPLAY', though you can use the OOPS ALV and overwrite the SubTotal method to write a custom code to check that the specific column is not selected.
    Regards,
    Nirmal

  • Subtotal in ALV grid for a particular type and Grand total in ALV

    Hi,
    I need to have sub total for a particular type(eg: goods, services).. and grand total at end in ALV grid..
    ALV output required as below:
    Type     VAT registration number     Country      Total Gross Amounts       Total Tax Amounts       Total Amount, ex-tax
    Goods     ATU12345678     AT                  222.42      0         222.42
    Goods     NL123456789B02     NL               3,417.00      0      3,417.00
         Goods Total                    3,639.42                -         3,639.42
    Services     ATU12345678     AT               2,342.34      0      2,342.34
    Services     NL123456789B02     NL                  223.33      0         223.33
         Services Total                    2,565.67                -         2,565.67
         Grand Total                    6,205.09                -         6,205.09
    Let me as to how to achieve the above type in ALV grid...
    Regards
    Shiva

    check this link..
    Grand Totals in ALV grid disply function module
    or do like this..
    REPORT  ZALVTESTFORSUBTOTAL.
    tables:pa0008.
    type-pools:slis.
    types:begin of ty_pa0008,
          pernr like pa0008-pernr,
          begda like pa0008-begda,
          endda like pa0008-endda,
          ansal like pa0008-ansal,
          lga01 like pa0008-lga01,
          bet01 like pa0008-bet01,
          end of ty_pa0008.
    data:it_pa0008 type standard table of ty_pa0008 with header line.
    data:it_fieldcat type SLIS_T_FIELDCAT_ALV,
         wa_fieldcat type slis_fieldcat_alv,
         it_layout type slis_layout_alv,
         WA_events TYPE slis_alv_event,
         it_events TYPE slis_t_event.
    select-options:s_pernr for pa0008-pernr.
    start-of-selection.
    perform getD_data.
    perform disp_alv.
    *&      Form  getD_data
          text
    -->  p1        text
    <--  p2        text
    form getD_data .
    select pernr
           begda
           endda
           ansal
           lga01
           bet01
           from pa0008
           into table it_pa0008
           where pernr in s_pernr.
    sort it_pa0008 by pernr begda descending.
    endform.                    " getD_data
    *&      Form  disp_alv
          text
    -->  p1        text
    <--  p2        text
    form disp_alv .
    wa_fieldcat-fieldname = 'PERNR'.
    wa_FIELDCAT-REPTEXT_DDIC = 'Personnel no'.
    *WA_FIELDCAT-no_subtotals = 'X'.
    append wa_fieldcat to it_fieldcat.
    clear wa_fieldcat.
    wa_fieldcat-fieldname = 'BEGDA'.
    wa_FIELDCAT-REPTEXT_DDIC = 'Start date'.
    append wa_fieldcat to it_fieldcat.
    clear wa_fieldcat.
    wa_fieldcat-fieldname = 'ENDDA'.
    wa_FIELDCAT-REPTEXT_DDIC = 'End date'.
    append wa_fieldcat to it_fieldcat.
    clear wa_fieldcat.
    wa_fieldcat-fieldname = 'ANSAL'.
    wa_FIELDCAT-REPTEXT_DDIC = 'Annula salary'.
    wa_fieldcat-do_sum = 'X'.
    append wa_fieldcat to it_fieldcat.
    clear wa_fieldcat.
    wa_fieldcat-fieldname = 'LGA01'.
    wa_FIELDCAT-REPTEXT_DDIC = 'Wage Type'.
    append wa_fieldcat to it_fieldcat.
    clear wa_fieldcat.
    wa_fieldcat-fieldname = 'BET01'.
    wa_FIELDCAT-REPTEXT_DDIC = 'Amount for wagetype'.
    append wa_fieldcat to it_fieldcat.
    clear wa_fieldcat.
    DATA: sort TYPE slis_sortinfo_alv,
    it_sort TYPE slis_t_sortinfo_alv.
    sort-fieldname = 'PERNR'.
    sort-subtot = 'X'.
    SORT-UP = 'X'.
    APPEND sort TO it_sort.
    *sort-fieldname = 'BEGDA'.
    *SORT-NO_SUBTOTS = 'X'.
    *APPEND sort TO it_sort.
    IT_layout-totals_text = 'total text'.
    IT_layout-subtotals_text = 'Subtotal text'.
    *WA_EVENTS-NAME = 'SUBTOTAL TEXT'.
    *WA_EVENTS-FORM = 'SUBTOTAL TEXT'.
    *APPEND WA_EVENTS TO IT_EVENTS.
    CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
    EXPORTING
       I_CALLBACK_PROGRAM             = sy-repid
       IS_LAYOUT                      = it_LAYOUT
       IT_FIELDCAT                    = IT_FIELDCAT
       it_sort                        = it_sort
      it_events                      = it_events
       TABLES
        t_outtab                       = it_pa0008 .
    endform.                    " disp_alv

Maybe you are looking for

  • Error message when dragging a tv show from iTunes to my nano...

    I get this message when trying to drag in a tv show from iTunes to ny nano... "Pilot (tv show is called 10 things i hate about you) was not copied to the iPod because it cannot be played on this iPod." This tv show was on the nano at some point. I ha

  • Terms and conditions for plugin for B2B?

    Hello Community, we are developing a commercial plugin for Adobe InDesign for B2B. For this purpose we need some information about how to write terms and conditions for Adobe InDesign plugins. Which requirements should we write in the terms and condi

  • Workflow 4.5 Draw backs and observations

    Hi ,    I am a Microsoft .NET evangelist. Following are points i observed over a period of 2 years on workflows. We had a production server with high end configuration like  8 GB ram ,quad core processor. when bulk workflows are created through our a

  • XML Security question.

    Hi I have to develop a database access from MySQL using java at the backend pulling database records and populating it in the form of XML. Once it is done I have to get it to browser. PHP is used by front end. When user clicks it triggers php and the

  • Publishing Content Type InfoPath Form in different Forest

    Hello, I created new SharePoint Farm in new Forest in our organization. (We are moving current SharePoint Farm to a different Forest. ) I restored Site collections in new farm. I have custom InfoPath Forms published as a Content Type. I carried data