Friday, January 13, 2023

ALV Grid Factory Method

 We can display data by factory method which displays like ALV grid. Example is below.


REPORT yft_factory_method.

DATAv_ersda TYPE ersda.

INITIALIZATION.
  SELECT-OPTIONS s_ersda FOR v_ersda.

*----------------------------------------------------------------------*
*       CLASS cl_fact DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS cl_fact DEFINITION.
  PUBLIC SECTION.
    DATAit_mara TYPE TABLE OF mara.
    METHODSm_fact.

  PRIVATE SECTION.
    DATAob_salv TYPE REF TO cl_salv_table,
          ob_disp TYPE REF TO cl_salv_display_settings,
          ob_col  TYPE REF TO cl_salv_columns_table,
          ob_colm TYPE REF TO cl_salv_column,
          ob_func TYPE REF TO cl_salv_functions_list,
          ob_lay  TYPE REF TO cl_salv_layout,
          lv_key  TYPE salv_s_layout_key.

ENDCLASS.                    "cl_fact DEFINITION
*----------------------------------------------------------------------*
*       CLASS cl_fact IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS cl_fact IMPLEMENTATION.
  METHOD m_fact.
    SELECT FROM mara INTO TABLE it_mara
      WHERE ersda IN s_ersda
        AND mtart EQ 'ZPCB'.

    IF sy-subrc 0.
      CALL METHOD cl_salv_table=>factory
        EXPORTING
          list_display abap_false
        IMPORTING
          r_salv_table ob_salv
        CHANGING
          t_table      it_mara.

*-ALV Functions
      ob_func ob_salv->get_functions).
      ob_func->set_all).

*-Zebra Lines
      ob_disp ob_salv->get_display_settings).
      ob_disp->set_striped_patternabap_true ).

*-Column Optimizing
      ob_col ob_salv->get_columns).
      ob_col->set_optimize).

*-ALV Header
      ob_disp->set_list_header'ALV Display with Factory Method' ).

*-Disable fields
      ob_colm ob_col->get_column'ZEINR' ).
      ob_colm->set_visibleabap_false ).

      ob_colm ob_col->get_column'ZEIAR' ).
      ob_colm->set_visibleabap_false ).

      ob_colm ob_col->get_column'ZEIVR' ).
      ob_colm->set_visibleabap_false ).

      ob_colm ob_col->get_column'ZEIFO' ).
      ob_colm->set_visibleabap_false ).

*-Layout Save
      lv_key-report sy-repid.
      ob_lay ob_salv->get_layout).
      ob_lay->set_keylv_key ).
      ob_lay->set_save_restrictioncl_salv_layout=>restrict_none ).

*-Grid Display
      ob_salv->display).

      FREEob_salv.
    ENDIF.
  ENDMETHOD.                    "m_fact
ENDCLASS.                    "cl_fact IMPLEMENTATION

START-OF-SELECTION.
  DATAob_fact TYPE REF TO cl_fact.
  CREATE OBJECTob_fact.
  CALL METHOD:   ob_fact->m_fact.

 

No comments: