Wednesday, 4 December 2013

OO ALV By CL_SALV_TABLE factory Method.

Case 1. Go to SE38 and create a report program. Provide below code. Execute it.
_____________________________________________________________________________
REPORT zsalv_table_diaplay.

CLASS sales_order_disp DEFINITION.

  PUBLIC SECTION.
    DATA o_salv TYPE REF TO cl_salv_table.
    METHODS build_salesorder,
                        disp_salesorder.

  PRIVATE SECTION.
    DATA lt_vbak TYPE TABLE OF vbak.

ENDCLASS.

CLASS sales_order_disp IMPLEMENTATION.

  METHOD build_salesorder.
    SELECT FROM vbak INTO TABLE lt_vbak UP TO 50 ROWS.
  ENDMETHOD.

  METHOD disp_salesorder.
    try.
    cl_salv_table=>factory(
      IMPORTING
        r_salv_table   o_salv    " Basis Class Simple ALV Tables
      CHANGING
        t_table        lt_vbak
    ).

     CATCH cx_salv_msg
     endtry.

     o_salv->display).

  ENDMETHOD.

ENDCLASS.

START-OF-SELECTION.
  DATAo_salesord TYPE REF TO sales_order_disp.
  CREATE OBJECT o_salesord.
  o_salesord->build_salesorder).
  o_salesord->disp_salesorder).
_______________________________________________________________________________
O/P: The report output is as follows:















_______________________________________________________________________________
Case 2: Making Hot Spot on for a particular column(VBELN: Sales Document)

REPORT zsalv_table_diaplay.

CLASS sales_order_disp DEFINITION.
  PUBLIC SECTION.
    DATA o_salv TYPE REF TO cl_salv_table.
    METHODS build_salesorder,
                       disp_salesorder.
  PRIVATE SECTION.
    DATA lt_vbak TYPE TABLE OF vbak.

ENDCLASS.

CLASS sales_order_disp IMPLEMENTATION.
  METHOD build_salesorder.
    SELECT FROM vbak INTO TABLE lt_vbak UP TO 50 ROWS.
  ENDMETHOD.

  METHOD disp_salesorder.
    DATA o_cols TYPE REF TO cl_salv_columns_table,
                o_col  TYPE REF TO cl_salv_column_table.
    TRY.
        cl_salv_table=>factory(
          IMPORTING
            r_salv_table   o_salv    " Basis Class Simple ALV Tables
          CHANGING
            t_table        lt_vbak
        ).
      CATCH cx_salv_msg.    
    ENDTRY.

**********START OF HOT SPOT ON ***************
    o_cols o_salv->get_columns).
    TRY.
        o_col ?= o_cols->get_column'VBELN' )" sales reder number
      CATCH cx_salv_not_found.
    ENDTRY.
    o_col->set_cell_typeif_salv_c_cell_type=>hotspot ).
*   o_col->set_cell_type( value =  5 ).
**********END OF HOT SPOT ON ****************

    o_salv->display).

  ENDMETHOD.
ENDCLASS.

START-OF-SELECTION.
  DATAo_salesord TYPE REF TO sales_order_disp.
  CREATE OBJECT o_salesord.
  o_salesord->build_salesorder).
  o_salesord->disp_salesorder).

______________________________________________________________________________
O/P: The report output is as follows:





















______________________________________________________________________________

Case 3: Hiding a particular column (ERZET: Entry time

REPORT zsalv_table_diaplay.

CLASS sales_order_disp DEFINITION.
  PUBLIC SECTION.
    DATA o_salv TYPE REF TO cl_salv_table.
    METHODS build_salesorder,
                        disp_salesorder.
  PRIVATE SECTION.
    DATA lt_vbak TYPE TABLE OF vbak.

ENDCLASS.

CLASS sales_order_disp IMPLEMENTATION.
  METHOD build_salesorder.
    SELECT FROM vbak INTO TABLE lt_vbak UP TO 50 ROWS.
  ENDMETHOD.

  METHOD disp_salesorder.
    DATA o_cols TYPE REF TO cl_salv_columns_table,
               o_col  TYPE REF TO cl_salv_column_table.
    TRY.
        cl_salv_table=>factory(
          IMPORTING
            r_salv_table   o_salv    " Basis Class Simple ALV Tables
          CHANGING
            t_table        lt_vbak
        ).
      CATCH cx_salv_msg.  
    ENDTRY.

**********START OF HOT SPOT ON ***************
    o_cols o_salv->get_columns).
    TRY.
        o_col ?= o_cols->get_column'VBELN' )" sales reder number
      CATCH cx_salv_not_found.
    ENDTRY.
    o_col->set_cell_typeif_salv_c_cell_type=>hotspot ).
*   o_col->set_cell_type( value =  5 ).
**********END OF HOT SPOT ON ****************
**********START OF HIDING A COLUMN ***************
    TRY.
        o_col ?= o_cols->get_column'ERZET' )" Entry time
      CATCH cx_salv_not_found.
    ENDTRY.
    o_col->set_visiblevalue if_salv_c_bool_sap=>false ).
**********END OF HIDING A COLUMN ****************
    o_salv->display).
  ENDMETHOD.
ENDCLASS.

START-OF-SELECTION.
  DATAo_salesord TYPE REF TO sales_order_disp.
  CREATE OBJECT o_salesord.
  o_salesord->build_salesorder).
  o_salesord->disp_salesorder).

___________________________________________________________________________
O/P: The report output is as follows:


















______________________________________________________________________________
Case 4: Adding top-of-page and end-of-page

REPORT zsalv_table_diaplay.

CLASS sales_order_disp DEFINITION.
  PUBLIC SECTION.
    DATA o_salv TYPE REF TO cl_salv_table.
    METHODS build_salesorder,
              disp_salesorder.
  PRIVATE SECTION.
    DATA lt_vbak TYPE TABLE OF vbak.
    METHODS build_top_of_page CHANGING obj_salv TYPE REF TO cl_salv_table,
              build_end_of_page CHANGING obj_salv TYPE REF TO cl_salv_table.

ENDCLASS.

CLASS sales_order_disp IMPLEMENTATION.
  METHOD build_salesorder.
    SELECT FROM vbak INTO TABLE lt_vbak UP TO 10 ROWS.
  ENDMETHOD.

  METHOD disp_salesorder.
    TRY.
        cl_salv_table=>factory(
          IMPORTING
            r_salv_table   o_salv    " Basis Class Simple ALV Tables
          CHANGING
            t_table        lt_vbak
        ).
      CATCH cx_salv_msg.
    ENDTRY.
    me->build_top_of_page(
      CHANGING
        obj_salv o_salv ).

        me->build_end_of_page(
      CHANGING
        obj_salv o_salv ).

    o_salv->display).
  ENDMETHOD.

  METHOD build_top_of_page.
    DATA o_top TYPE REF TO cl_salv_form_layout_grid,
           o_label  TYPE REF TO cl_salv_form_label,
           o_flow   TYPE REF TO cl_salv_form_layout_flow.
    CREATE OBJECT o_top.
    o_top->create_label(
      EXPORTING
        row         =  1   " Natural Number
        column      =  1   " Natural Number
      RECEIVING
        r_value     =  o_label ).
    o_label->set_textvalue 'Sales Order Details' ).

    o_top->create_flow(
      EXPORTING
        row     2    " Natural Number
        column  =  1   " Natural Number
      RECEIVING
        r_value o_flow ).
   o_flow->create_text(
     EXPORTING
       text    'For the Month of Dec-2013' ).

    obj_salv->set_top_of_listvalue =  o_top ).
  ENDMETHOD.

  METHOD build_end_of_page.
    DATA o_end TYPE REF TO cl_salv_form_layout_grid,
           o_label  TYPE REF TO cl_salv_form_label,
           o_flow   TYPE REF TO cl_salv_form_layout_flow.
    CREATE OBJECT o_end.
    o_end->create_label(
      EXPORTING
        row         =  1   " Natural Number
        column      =  1   " Natural Number
      RECEIVING
        r_value     =  o_label ).
    o_label->set_textvalue 'SAP Labs India.' ).

    o_end->create_flow(
      EXPORTING
        row     2    " Natural Number
        column  =  1   " Natural Number
      RECEIVING
        r_value o_flow ).
   o_flow->create_text(
     EXPORTING
       text    'All rights reserved.' ).

    obj_salv->set_end_of_listvalue o_end ).
  ENDMETHOD.
ENDCLASS.

START-OF-SELECTION.
  DATAo_salesord TYPE REF TO sales_order_disp.
  CREATE OBJECT o_salesord.
  o_salesord->build_salesorder).
  o_salesord->disp_salesorder).


_______________________________________________________________________________
O/P: The report output is as follows:






















No comments:

Comments system

Disqus Shortname