Application Development Blog Posts
Learn and share on deeper, cross technology development topics such as integration and connectivity, automation, cloud extensibility, developing at scale, and security.
cancel
Showing results for 
Search instead for 
Did you mean: 
RobinV
Participant

Why

When using the ALV class CL_SALV_TABLE you always have to type some code that is the same for every ALV. I have created an ALV wrapper class for this that is really simple and fast to use. You only have to insert the global class ZCL_ALV_OM and you can build fast and easy ALV's.

Setup

You can add the class ZCL_ALV_OM with the program SAPLINK
The link to the class is: ZCL_ALV_OM

Because SAPLINK does not provide export of a class textpool, you can insert your own message in the class textpool.

Simple example

Example for the most simple way to create an ALV:

DATA lt_sflight   TYPE TABLE OF sflight.

DATA lo_alv       TYPE REF TO zcl_alv_om.


"Get sflight data to insert in ALV

SELECT *  FROM  sflight

          INTO  TABLE lt_sflight

          WHERE carrid = 'AA'.


"Create and display ALV

CREATE OBJECT lo_alv.

lo_alv->set_data( CHANGING ct_data = lt_sflight ).

lo_alv->display( ).


Advanced example

Example with advanced ALV options.
First create the local class LCL_ALV_OM that is inherited from the global class ZCL_ALV_OM and redefine the methods you want to use

*----------------------------------------------------------------------*

* CLASS lcl_alv_om DEFINITION

*----------------------------------------------------------------------*

CLASS lcl_alv_om DEFINITION INHERITING FROM zcl_alv_om.

  PROTECTED SECTION.

    METHODS set_header      REDEFINITION.

    METHODS set_column      REDEFINITION.

    METHODS on_double_click REDEFINITION.

ENDCLASS.                    "lcl_alv_om DEFINITION


*----------------------------------------------------------------------*

* CLASS lcl_alv_om IMPLEMENTATION

*----------------------------------------------------------------------*

CLASS lcl_alv_om IMPLEMENTATION.

  "Set header

  METHOD set_header.

    io_header->create_text( EXPORTING row     = 1

                                      column  = 1

                                      text    = 'Test' ).

  ENDMETHOD.                    "set_header


 
"Set column

  METHOD set_column.

    IF  iv_column_name <> 'CARRID'

    AND iv_column_name <> 'CONNID'

    AND iv_column_name <> 'FLDATE'.

      io_column->set_visible( value = abap_false ).

    ENDIF.

  ENDMETHOD.                    "set_column


 
"On double click

  METHOD on_double_click.

    "Do something. You have the row data in variable is_row_data

  ENDMETHOD.                    "on_double_click

ENDCLASS.                    "lcl_alv_om IMPLEMENTATION


Then create and display the ALV

DATA lt_sflight   TYPE TABLE OF sflight.

DATA lo_alv       TYPE REF TO lcl_alv_om.


"Get sflight data to insert in ALV

SELECTFROM  sflight

          INTO  TABLE lt_sflight

          WHERE carrid = 'AA'.


"Create and display ALV

CREATE OBJECT lo_alv

       EXPORTING  iv_double_click  = abap_true.


lo_alv->set_data(
CHANGING ct_data = lt_sflight ).

lo_alv->display( ).

UML

Regards,

Robin Vleeschhouwer
RV SAP Consultancy

DATA lt_sflight   TYPE TABLE OF sflight.

DATA lo_alv       TYPE REF TO zcl_alv_om.

"Get sflight data to insert in ALV

SELECT *  FROM  sflight

          INTO  TABLE lt_sflight

          WHERE carrid = 'AA'.

         

"Create and display ALV

CREATE OBJECT lo_alv.

lo_alv->set_data( CHANGING ct_data = lt_sflight ).

lo_alv->display( ).

14 Comments