Thursday, 6 April 2017

ALV Using CL_SALV_TABLE

The following program creates and displays ALV using CL_SALV_TABLE class.
*&---------------------------------------------------------------------*
*& Report  ZDEMO11
*&
*&---------------------------------------------------------------------*
*&
*& ALV Using CL_SALV_TABLE
*&---------------------------------------------------------------------*
REPORT zdemo11.

TYPES:BEGIN OF gty_emp,
        id   TYPE char10,
        name TYPE char10,
      END OF gty_emp.

DATA: gt_emp  TYPE TABLE OF gty_emp,
      gv_data TYPE REF TO data
      .
FIELD-SYMBOLS: <fs_emp> LIKE LINE OF gt_emp.

START-OF-SELECTION.
  REFRESH: gt_emp.
  CLEAR: gv_data.

  PERFORM populate_record.
  PERFORM create_display_alv.

*&---------------------------------------------------------------------*
*&      Form  POPULATE_RECORD
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM populate_record .

  CREATE DATA gv_data LIKE LINE OF gt_emp.
  ASSIGN gv_data->* TO <fs_emp>.

  <fs_emp>-id   = '1'.
  <fs_emp>-name = 'A'.
  APPEND <fs_emp> TO gt_emp.

  <fs_emp>-id   = '2'.
  <fs_emp>-name = 'B'.
  APPEND <fs_emp> TO gt_emp.

ENDFORM.

*----------------------------------------------------------------------*
*       CLASS cl_event_handler DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS cl_event_handler DEFINITION.
  PUBLIC SECTION.
    CLASS-METHODS on_added_function               " ADDED_FUNCTION FOR USER_COMMAND
      FOR EVENT if_salv_events_functions~added_function
                  OF cl_salv_events_table
      IMPORTING e_salv_function.
ENDCLASS.                    "cl_event_handler DEFINITION

*----------------------------------------------------------------------*
*       CLASS cl_event_handler IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS cl_event_handler IMPLEMENTATION.
  METHOD on_added_function.

*    ADD USER COMMAND HERE: FOR EXAMPLE IF THERE IS AN EXPORT BUTTON FOR XLS
*    YOU CAN WRITE THE CODE LIKE THIS:

*    IF e_salv_function EQ '&XLS'.  "&XLS IS THE BUTTON FUNCTION CODE
*      PERFORM export_xls.          "WRITE ALL THE FUNCTIONALITY IN THE PERFORM
*    ENDIF.

  ENDMETHOD.                    "on_added_function
ENDCLASS.                    "cl_event_handler IMPLEMENTATION

*&---------------------------------------------------------------------*
*&      Form  CREATE_DISPLAY_ALV
*&---------------------------------------------------------------------*
*       CREATING AND DISPLAYING ALV (NON-EDITABLE)
*----------------------------------------------------------------------*
FORM create_display_alv .

  DATA: lv_col_msg TYPE REF TO cx_salv_not_found,
        lv_alv_msg TYPE REF TO cx_salv_msg,
        lo_alv     TYPE REF TO cl_salv_table,
        lo_columns TYPE REF TO cl_salv_columns_table,
        lo_column  TYPE REF TO cl_salv_column,
        lo_events  TYPE REF TO cl_salv_events_table
        .
  TRY .
      CALL METHOD cl_salv_table=>factory
        IMPORTING
          r_salv_table = lo_alv
        CHANGING
          t_table      = gt_emp.

**********************************************************************
      lo_events = lo_alv->get_event( ).
      SET HANDLER cl_event_handler=>on_added_function FOR lo_events.
**********************************************************************


*********************** SETTING THE FIELDCATALOG ***********************
      TRY .
          lo_columns  = lo_alv->get_columns( ).
          lo_columns->set_optimize( ).

          lo_column = lo_columns->get_column( 'ID' ). "COLUMN NAME
          lo_column->set_short_text( 'ID' ).          "SHORT TEXT
          lo_column->set_medium_text( 'EMP. ID' ).    "MEDIUM TEXT
          lo_column->set_long_text( 'Employee ID' ).  "LONG TEXT

          lo_column = lo_columns->get_column( 'NAME' ). "COLUMN NAME
          lo_column->set_short_text( 'Name' ).          "SHORT TEXT
          lo_column->set_medium_text( 'EMP. Name' ).    "MEDIUM TEXT
          lo_column->set_long_text( 'Employee Name' ).  "LONG TEXT

        CATCH cx_salv_not_found INTO lv_col_msg.
*          IMPLEMENT ERROR HANDLING MECHANISM
      ENDTRY.
********************** #SETTING THE FIELDCATALOG ***********************

************************* SETTING PF_STATUS ***************************
      TRY.
          CALL METHOD lo_alv->set_screen_status
            EXPORTING
              report        = sy-repid
              pfstatus      = 'PF_STATUS'
              set_functions = lo_alv->c_functions_all.
      ENDTRY.
************************* #SETTING PF_STATUS **************************

      lo_alv->display( ).

    CATCH cx_salv_msg INTO lv_alv_msg.
*     IMPLEMENT ERROR HANDLING MECHANISM
  ENDTRY.
ENDFORM.                    " DISPLAY_ALV

For a detail understanding, you can visit the following links:

http://www.kerum.pl/infodepot/00007

http://abapmentor.expertise-team.com/post/display-alv-list-easily-in-abap-using-cl-salv-table-part-ii-enable-layout-settings.aspx

http://abapmentor.expertise-team.com/post/display-alv-list-easily-in-abap-using-cl-salv-table-part-v-set-toolbar.aspx




3 comments:

  1. casino online【WG】online slot game
    【WG98.vip】⚡,casino 우리카지노 마틴 online,casino 코인카지노 online,casino online,casino online,casino 카지노사이트 online,casino online,casino online,casino online,casino online,casino online,casino online,casino online,casino online,casino

    ReplyDelete
  2. Trusted online betting site that is easy to win on the website GAJIAN123

    ReplyDelete

Report to find CDS view of Standard Table

A small change has been made to the original program ( SAP YARD Article ) so that it can also display the common CDS used by multiple table...