Skip to Content
author's profile photo Former Member
Former Member

ALV - Sort

HI All,

I want to do Total sum and Sub total ZRATE(CURR) with respect to ZCLIENT(Char10).

Can you please what is wrong in my code.

Correct me if i am wrong.

Even DOSUM is also not working....

DEFINE m_fieldcat.

add 1 to ls_fieldcat-col_pos.

ls_fieldcat-fieldname = &1.

ls_fieldcat-tabname = 'IT_PIPE'.

ls_fieldcat-seltext_l = &2.

ls_fieldcat-do_sum = &3.

append ls_fieldcat to lt_fieldcat.

END-OF-DEFINITION.

m_fieldcat 'ZCLIENT' 'Client' ' '.

m_fieldcat 'ZRATE' 'Rate' 'X'.

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.

m_sort 'ZCLIENT ' 'X' .

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

i_callback_program = sy-repid

it_fieldcat = lt_fieldcat

it_sort = lt_sort

TABLES

t_outtab = it_pipe.

Thanks,

Ashok...

Add a comment
10|10000 characters needed characters exceeded

Assigned Tags

Related questions

5 Answers

  • author's profile photo Former Member
    Former Member
    Posted on Jan 19, 2008 at 04:17 PM

    hi,

    can you try like this.

    DEFINE m_fieldcat.

    add 1 to ls_fieldcat-col_pos.

    ls_fieldcat-fieldname = &1.

    ls_fieldcat-tabname = 'IT_PIPE'.

    ls_fieldcat-seltext_l = &2.

    ls_fieldcat-do_sum = &3.

    append ls_fieldcat to lt_fieldcat.

    END-OF-DEFINITION.

    m_fieldcat 'ZCLIENT' 'Client' ' '.

    m_fieldcat 'ZRATE' 'Rate' 'X'.

    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.

    m_sort 'ZCLIENT ' ' ' .

    m_sort 'ZRATE' 'X'.

    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

    EXPORTING

    i_callback_program = sy-repid

    it_fieldcat = lt_fieldcat

    it_sort = lt_sort

    TABLES

    t_outtab = it_pipe.

    Add a comment
    10|10000 characters needed characters exceeded

  • author's profile photo Former Member
    Former Member
    Posted on Jan 20, 2008 at 05:33 AM

    Hi Ashok,

    The macro is fine. check the code below.

    SORT-SPOS = &1.

    SORT-FIELDNAME = &2.

    SORT-TABNAME = 'TT_ITAB'.

    SORT-UP = 'X'.

    APPEND SORT.

    CLEAR SORT.

    END-OF-DEFINITION.

    MACROS1 '1' 'EBELN'.

    MACROS1 '2' 'AEDAT'.

    MACROS1 '3' 'LIFNR'.

    MACROS1 '4' 'EKGRP'.

    This code is to sort 4 fields.

    cheers,

    Hema.

    Add a comment
    10|10000 characters needed characters exceeded

  • author's profile photo Former Member
    Former Member
    Posted on Jan 20, 2008 at 05:41 AM

    Hi Ashok , I am giving u a similar sorting problem and solution.pls go through it so that u will get some idea.

    Q: I need to sort the alv after displaying the output.The requirement is the user will select any column in the output and when he presses the sort(Custom Button) Button the entire output has to be displayed in the sort order of that column.Here I am using OOPs Concept.

    Sol: problem solved using the methods set_sort_criteria and get_selected_columns.

    Please find the related code.

    any way thank you for all u r replys.

    METHOD handle_user_command.

    • define local data

    data:i_col type standard table of LVC_S_COL,

    wa_col type LVC_S_COL,

    wa_sort TYPE LVC_S_SORT.

    CASE e_ucomm.

    WHEN 'SORT_COL'.

    REFRESH: mt_sort.

    CALL METHOD sender->get_selected_columns

    IMPORTING

    ET_INDEX_COLUMNS = i_COL.

    loop at i_col into wa_col .

    wa_sort-spos = sy-tabix.

    wa_sort-fieldname = wa_col-fieldname.

    wa_sort-up = 'X'.

    append wa_sort to mt_sort.

    endloop.

    CALL METHOD sender->set_sort_criteria

    EXPORTING

    it_sort = mt_sort

    • EXCEPTIONS

    • NO_FIELDCATALOG_AVAILABLE = 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.

    *

    CALL METHOD go_grid->set_table_for_first_display

    EXPORTING

    i_structure_name = 'VBAK'

    is_layout = g_layout

    CHANGING

    it_outtab = g_outtab

    it_sort = mt_sort

    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.

    WHEN OTHERS.

    ENDCASE.

    cheers,

    Hema.

    Add a comment
    10|10000 characters needed characters exceeded

  • author's profile photo Former Member
    Former Member
    Posted on Jan 20, 2008 at 06:38 AM

    Hi

    In order to display an ALV report with specific columns already sorted by default you will need to build a

    sort catalogue. This is fairly straight forward and is done in the following way:

    Step 1. Add data declaration for sort catalogue

    Step 2. Add code to build sort catalogue table

    Step 3. Update 'REUSE_ALV_GRID_DISPLAY' FM call to include parameter 'it_sort'

    ALV data declarations

    data: it_sortcat type slis_sortinfo_alv occurs 1,

    wa_sort like line of it_sortcat.

    perform build_sortcat.

    &----


    *& Form build_sortcat

    &----


    Build Sort catalog

    -


    FORM build_sortcat .

    wa_sort-spos = 1.

    wa_sort-fieldname = 'EBELN'.

    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 = 'EBELP'.

    gd_sortcat-tabname

    APPEND wa_sort TO it_sortcat.

    ENDFORM. " build_sortcat

    call function 'REUSE_ALV_GRID_DISPLAY'

    exporting

    i_callback_program = gd_repid

    i_callback_top_of_page = 'TOP-OF-PAGE'

    is_layout = gd_layout

    it_fieldcat = fieldcatalog[]

    it_sort = it_sortcat

    i_save = 'X'

    tables

    t_outtab = it_ekko

    exceptions

    program_error = 1

    others = 2.

    Add a comment
    10|10000 characters needed characters exceeded

  • author's profile photo Former Member
    Former Member
    Posted on Jan 20, 2008 at 06:38 AM

    You have to use ls_fieldcat-do_sum statement in your coding

    Check this sample coding

    code&----


    *& Report ZALVTOTAL *

    *& *

    &----


    *& *

    *& *

    &----


    REPORT ZALVTOTAL .

    TYPES :

    BEGIN OF ty_vbak,

    vkorg TYPE vbak-vkorg, " Sales organization

    kunnr TYPE vbak-kunnr, " Sold-to party

    vbeln TYPE vbak-vbeln, " Sales document

    netwr TYPE vbak-netwr, " Net Value of the Sales Order

    waerk TYPE vbak-waerk, " Document currency

    END OF ty_vbak.

    DATA:

    vbak TYPE vbak,

    gt_vbak TYPE TABLE OF ty_vbak.

    SELECT-OPTIONS :

    s_vkorg FOR vbak-vkorg, " Sales organization

    s_kunnr FOR vbak-kunnr, " Sold-to party

    s_vbeln FOR vbak-vbeln. " Sales document

    SELECTION-SCREEN :

    SKIP, BEGIN OF LINE,COMMENT 5(27) v_1 FOR FIELD p_max.

    PARAMETERS p_max(2) TYPE n DEFAULT '20' OBLIGATORY.

    SELECTION-SCREEN END OF LINE.

    -


    INITIALIZATION.

    v_1 = 'Maximum of records to read'.

    -


    START-OF-SELECTION.

    PERFORM f_read_data.

    PERFORM f_display_data.

    -


    Form f_read_data

    -


    FORM f_read_data.

    SELECT vkorg kunnr vbeln netwr waerk

    UP TO p_max ROWS

    INTO TABLE gt_vbak

    FROM vbak

    WHERE kunnr IN s_kunnr

    AND vbeln IN s_vbeln

    AND vkorg IN s_vkorg.

    ENDFORM. " F_READ_DATA

    -


    Form f_display_data

    -


    FORM f_display_data.

    TYPE-POOLS: slis. " ALV Global types

    DEFINE m_fieldcat.

    add 1 to ls_fieldcat-col_pos.

    ls_fieldcat-fieldname = &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[/code]

    Add a comment
    10|10000 characters needed characters exceeded

Before answering

You should only submit an answer when you are proposing a solution to the poster's problem. If you want the poster to clarify the question or provide more information, please leave a comment instead, requesting additional details. When answering, please include specifics, such as step-by-step instructions, context for the solution, and links to useful resources. Also, please make sure that you answer complies with our Rules of Engagement.
You must be Logged in to submit an answer.

Up to 10 attachments (including images) can be used with a maximum of 1.0 MB each and 10.5 MB total.