SAP has introduced a new programming model to devleop Object Oriented ALV (OO ALV) using class CL_SALV family class. This class family is avaliable in the SAP Netweaver 04.
Prior to SAP Netweaver, we have so many different starting point to start the ALV. The starting point entirly depends of the flavour of ALV (Tabular, Tree, Hierarchical), Type of ALV (List or Grid) etc. If we want to use the Control framework, than we need to start the ALV by using the class CL_GUI_ALV_GRID. Moreover to this, we need to make different calles for TOP-OF-PAGE, END-OF-PAGE etc. To avoid this SAP has developed common model - which is entirely based on the object oriented.
These new ALV object oriented model has many advantages:
- Simplified design: This Model uses a highly integrated object oriented design which provides the simplicity to programmers to develop the ALV.
- Unified Object models: This model has only one main class which will get and set the parameters of entire layout.
The main classes for the different flavour of ALV:
ALV Flavour | Class |
---|
Simple 2D table display | CL_SALV_TABLE |
Hierarchical ALV display | CL_SALV_HIERSEQU_TABLE |
Tree ALV using class | CL_SALV_TREE |
All Classes has static method FACTORY which will get back the instance of the ALV. Like for the simple table dispaly we must call the method CL_SALV_TABLE=>FACTORY to get the instance of the ALV.
In this post we will see how we can cretae a simple table output just by calling two methods.
Code Snippet to generate ALV using class CL_SALV_TABLE |
*&---------------------------------------------------------------------* *& This code snippet will show how to use the CL_SALV_TABLE to *& generate the ALV *&---------------------------------------------------------------------* REPORT ztest_oo_alv_main. * *----------------------------------------------------------------------* * CLASS lcl_report DEFINITION *----------------------------------------------------------------------* CLASS lcl_report DEFINITION. * PUBLIC SECTION. * * Final output table TYPES: BEGIN OF ty_vbak, vbeln TYPE vbak-vbeln, erdat TYPE erdat, auart TYPE auart, kunnr TYPE kunnr, END OF ty_vbak. * DATA: t_vbak TYPE STANDARD TABLE OF ty_vbak. * * ALV reference DATA: o_alv TYPE REF TO cl_salv_table. * METHODS: * data selection get_data, * * Generating output generate_output. * *$*$*.....CODE_ADD_1 - Begin..................................1..*$*$* * * In this section we will define the private methods which can * be implemented to set the properties of the ALV and can be * called in the * *$*$*.....CODE_ADD_1 - End....................................1..*$*$* * ENDCLASS. "lcl_report DEFINITION * * START-OF-SELECTION. DATA: lo_report TYPE REF TO lcl_report. * CREATE OBJECT lo_report. * lo_report->get_data( ). * lo_report->generate_output( ). * *----------------------------------------------------------------------* * CLASS lcl_report IMPLEMENTATION *----------------------------------------------------------------------* CLASS lcl_report IMPLEMENTATION. * METHOD get_data. * data selection SELECT vbeln erdat auart kunnr INTO TABLE t_vbak FROM vbak UP TO 20 ROWS. * ENDMETHOD. "get_data * *....................................................................... METHOD generate_output. * New ALV instance * We are calling the static Factory method which will give back * the ALV object reference. * * exception class DATA: lx_msg TYPE REF TO cx_salv_msg. TRY. cl_salv_table=>factory( IMPORTING r_salv_table = o_alv CHANGING t_table = t_vbak ). CATCH cx_salv_msg INTO lx_msg. ENDTRY. * *$*$*.....CODE_ADD_2 - Begin..................................2..*$*$* * * In this area we will call the methods which will set the * different properties to the ALV * *$*$*.....CODE_ADD_2 - End....................................2..*$*$* * * * Displaying the ALV * Here we will call the DISPLAY method to get the output on the screen o_alv->display( ). * ENDMETHOD. "generate_output * *$*$*.....CODE_ADD_3 - Begin..................................3..*$*$* * * In this area we will implement the methods which are defined in * the class definition * *$*$*.....CODE_ADD_3 - End....................................3..*$*$* * * ENDCLASS. "lcl_report IMPLEMENTATION
|
I had tried to build the report in the object oriented fashion. UML of that report is as follow. This design will give us flexibility to add more methods which will set and get the different properties of the O_ALV object. For example, if we need to change the Heading, we will add one private method SET_COLUMN_NAME and write our logic to change the O_ALV object. Than we will call that method just before calling the DISPLAY method.
0 comments
Post a Comment