Sorting in ALV using CL_SALV_TABLE

1
10333

In this tutorial, we will learn how to sort a column in ALV report using CL_SALV_TABLE.

To sort a column in ALV,

  • Get the Sorting Object of the ALV using the method GET_SORTS().
  • Apply SORT to the column name by using the method ADD_SORT().

Class used :

  1. CL_SALV_TABLE and
  2. CL_SALV_SORTS.

Create a program in SE38 and copy the below code.

REPORT  zsl_oop_salv_sort.
*----------------------------------------------------------------------*
*      Sorting in ALV report using factory class CL_SALV_TABLE         *
*----------------------------------------------------------------------*
*                    www.saplearners.com                               *
*----------------------------------------------------------------------*

*----------------------------------------------------------------------*
*       CLASS lcl_sflight DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_sflight DEFINITION.

  PUBLIC SECTION.
    TYPES: BEGIN OF lty_sflight,
           carrid	         TYPE s_carr_id,
           connid	         TYPE s_conn_id,
           fldate	         TYPE s_date,
           price           TYPE s_price,
           currency	       TYPE s_currcode,
           planetype       TYPE s_planetye,
           seatsmax	       TYPE s_seatsmax,
           seatsocc	       TYPE s_seatsocc,
           END OF lty_sflight.

    METHODS: get_sflight_data,
             get_alv_instance,
             display.

    DATA: lo_alv      TYPE REF TO cl_salv_table,
          gt_sflight TYPE STANDARD TABLE OF lty_sflight.

ENDCLASS.                    "lcl_sflight DEFINITION

*----------------------------------------------------------------------*
*       CLASS lcl_sflight IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_sflight IMPLEMENTATION.

* Get SFLIGHT data
  METHOD get_sflight_data.
    SELECT carrid connid fldate price currency planetype seatsmax
           seatsocc INTO TABLE me->gt_sflight
                    FROM sflight
                    WHERE carrid IN ('AA', 'JL' ).
  ENDMETHOD.                    "get_sflight_data

* Get ALV instance
  METHOD get_alv_instance.
    TRY.
        CALL METHOD cl_salv_table=>factory
          IMPORTING
            r_salv_table = lo_alv
          CHANGING
            t_table      = gt_sflight.
      CATCH cx_salv_msg.
    ENDTRY.

  ENDMETHOD.                    "get_alv_instance

* Display ALV
  METHOD display.
    CALL METHOD lo_alv->display.
  ENDMETHOD.                    "display
ENDCLASS.                    "lcl_sflight IMPLEMENTATION



START-OF-SELECTION.
  DATA: lo_cl_sflight     TYPE REF TO lcl_sflight,
        lo_sorts          TYPE REF TO cl_salv_sorts.

  CREATE OBJECT lo_cl_sflight.

* Get the Data for ALV report
  lo_cl_sflight->get_sflight_data( ).

* Get ALV instance
  lo_cl_sflight->get_alv_instance( ).

*// Sorting
**// 1. Get Sorting Object of the ALV
  CALL METHOD lo_cl_sflight->lo_alv->get_sorts
    RECEIVING
      value = lo_sorts.

**// 2.Specify the column for sorting
  TRY.
      CALL METHOD lo_sorts->add_sort
        EXPORTING
          columnname = 'CARRID'
*         position   =
          sequence   = if_salv_c_sort=>sort_up.
*        subtotal   = IF_SALV_C_BOOL_SAP=>FALSE
*        group      = IF_SALV_C_SORT=>GROUP_NONE
*        obligatory = IF_SALV_C_BOOL_SAP=>FALSE.
    CATCH cx_salv_not_found .
    CATCH cx_salv_existing .
    CATCH cx_salv_data_error .
  ENDTRY.

* Display ALV report
  lo_cl_sflight->display( ).

Output with SORTing applied on Airline field:

alv3
mail

SAPLearners.com is now on Telegram. Click here to join our channel and stay updated with the latest tutorials and updates.

Like us on Facebook and follow us on Twitter

.

Comments are closed.