Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

ALV OOPs

Former Member
0 Likes
745

Hi All,

How do we display a report output using OOPs concept in in ALV?

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
695

Hi,

we have a method named as SET_TABLE_FIRSTDIsplay which is used to display the alv report.

CALL METHOD grid->set_table_for_first_display

EXPORTING

  • I_BUFFER_ACTIVE =

  • I_BYPASSING_BUFFER =

  • I_CONSISTENCY_CHECK =

  • I_STRUCTURE_NAME =

  • IS_VARIANT =

i_save = 'A'

  • I_DEFAULT = 'X'

is_layout = gs_layo

  • IS_PRINT =

  • IT_SPECIAL_GROUPS =

  • IT_TOOLBAR_EXCLUDING =

  • IT_HYPERLINK =

  • IT_ALV_GRAPHICS =

  • IT_EXCEPT_QINFO =

  • IR_SALV_ADAPTER =

CHANGING

it_outtab = gt_final

it_fieldcatalog = gt_field

it_sort = gt_sort

  • IT_FILTER =

EXCEPTIONS

invalid_parameter_combination = 1

program_error = 2

too_many_lines = 3

OTHERS = 4.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

5 REPLIES 5
Read only

Former Member
0 Likes
696

Hi,

we have a method named as SET_TABLE_FIRSTDIsplay which is used to display the alv report.

CALL METHOD grid->set_table_for_first_display

EXPORTING

  • I_BUFFER_ACTIVE =

  • I_BYPASSING_BUFFER =

  • I_CONSISTENCY_CHECK =

  • I_STRUCTURE_NAME =

  • IS_VARIANT =

i_save = 'A'

  • I_DEFAULT = 'X'

is_layout = gs_layo

  • IS_PRINT =

  • IT_SPECIAL_GROUPS =

  • IT_TOOLBAR_EXCLUDING =

  • IT_HYPERLINK =

  • IT_ALV_GRAPHICS =

  • IT_EXCEPT_QINFO =

  • IR_SALV_ADAPTER =

CHANGING

it_outtab = gt_final

it_fieldcatalog = gt_field

it_sort = gt_sort

  • IT_FILTER =

EXCEPTIONS

invalid_parameter_combination = 1

program_error = 2

too_many_lines = 3

OTHERS = 4.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

Read only

Former Member
0 Likes
695

Hi ,

For displaying report output using OOP's ALV,you can check this demo program

SALV_DEMO_TABLE_EVENTS.

Hope this may be helpful.

Regards,

Sravanthi

Read only

Former Member
0 Likes
695

Hi,

Use this link , Really helpful for any kind of OOPs ALV.

http://www.sapdev.co.uk/reporting/alv/alvscr.htm

Thanks & Regards,

Read only

I355602
Product and Topic Expert
Product and Topic Expert
0 Likes
695

Hi Jean,

First add a container on the screen to hold the ALV Grid and name it 'PO_CONTAINER'.

Now, use this demo code:-


REPORT  z_alv_oops02.
*&---------------------------------------------------------------------*
*          TABLES
*&---------------------------------------------------------------------*
TABLES : ekpo.
*&---------------------------------------------------------------------*
*          PARAMETERS DECLARATION
*&---------------------------------------------------------------------*
PARAMETERS : z_ebeln TYPE ekpo-ebeln.

*&---------------------------------------------------------------------*
*          TYPE DECLARATION
*&---------------------------------------------------------------------*
TYPES : BEGIN OF t_ekpo,
        ebeln TYPE ekpo-ebeln,
        ebelp TYPE ekpo-ebelp,
        matnr TYPE ekpo-matnr,
        werks TYPE ekpo-werks,
        menge TYPE ekpo-menge,
        END OF t_ekpo.

*&---------------------------------------------------------------------*
*          DATA DECLARATION
*&---------------------------------------------------------------------*

DATA : rep_name TYPE sy-repid,
       check(1),
       rep(25),
       ok_code TYPE sy-ucomm.

*INTERNAL TABLE
DATA : it_ekpo TYPE STANDARD TABLE OF t_ekpo.

*NAME OF CUSTOM CONTAINER ADDED ON SCREEN
DATA : z_container TYPE scrfname VALUE 'PO_CONTAINER'.

DATA : z_custom_container TYPE REF TO cl_gui_custom_container.

*ALV GRID CONTAINER
DATA : z_grid TYPE REF TO cl_gui_alv_grid.

*FIELD CATALOG
DATA : it_fieldcat TYPE lvc_t_fcat,
       wa_fieldcat TYPE lvc_s_fcat.

*LAYOUT
DATA : wa_layout TYPE lvc_s_layo.

*&---------------------------------------------------------------------*
*          INITIALIZATION
*&---------------------------------------------------------------------*
INITIALIZATION.
  rep_name = sy-repid.
  check = 'X'.
  CONCATENATE text-001 rep_name INTO rep SEPARATED BY space.

*----------------------------------------------------------------------*
*       CLASS lcl_oo_alv DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_oo_alv DEFINITION.
  PUBLIC SECTION.
    METHODS populate_itab IMPORTING ebeln TYPE zekpo-ebeln.
    METHODS create_field_catalog.
    METHODS create_layout.
    METHODS display_alv.
    METHODS refresh_alv.

  PRIVATE SECTION.
    DATA : po TYPE zekpo-ebeln.

ENDCLASS.                    "lcl_oo_alv DEFINITION

*----------------------------------------------------------------------*
*       CLASS lcl_oo_alv IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_oo_alv IMPLEMENTATION.

  METHOD populate_itab.
    me->po = ebeln.

    SELECT ebeln
       ebelp
       matnr
       werks
       menge
       FROM ekpo
       INTO TABLE it_ekpo
       WHERE ebeln EQ po.
  ENDMETHOD.                    "populate_itab

  METHOD create_field_catalog.
    wa_fieldcat-fieldname = 'EBELN'.
    wa_fieldcat-coltext = 'PO #'.
    APPEND wa_fieldcat TO it_fieldcat.
    CLEAR wa_fieldcat.

    wa_fieldcat-fieldname = 'EBELP'.
    wa_fieldcat-coltext = 'Item'.
    APPEND wa_fieldcat TO it_fieldcat.
    CLEAR wa_fieldcat.

    wa_fieldcat-fieldname = 'MATNR'.
    wa_fieldcat-coltext = 'Material'.
    APPEND wa_fieldcat TO it_fieldcat.
    CLEAR wa_fieldcat.

    wa_fieldcat-fieldname = 'WERKS'.
    wa_fieldcat-coltext = 'Plant'.
    APPEND wa_fieldcat TO it_fieldcat.
    CLEAR wa_fieldcat.

    wa_fieldcat-fieldname = 'MENGE'.
    wa_fieldcat-coltext = 'Qty.'.
    APPEND wa_fieldcat TO it_fieldcat.
    CLEAR wa_fieldcat.
  ENDMETHOD.                    "create_field_catalog

  METHOD create_layout.
    wa_layout-grid_title = rep.
    wa_layout-zebra = check.
  ENDMETHOD.                    "create_layout

  METHOD display_alv.

    CALL METHOD z_grid->set_table_for_first_display
    EXPORTING
*    i_buffer_active               =
*    i_bypassing_buffer            =
*    i_consistency_check           =
*    i_structure_name              =
*    is_variant                    =
*    i_save                        =
*    i_default                     = 'X'
      is_layout                     = wa_layout
*    is_print                      =
*    it_special_groups             =
*    it_toolbar_excluding          =
*    it_hyperlink                  =
*    it_alv_graphics               =
*    it_except_qinfo               =
*    ir_salv_adapter               =
    CHANGING
      it_outtab                     = it_ekpo
      it_fieldcatalog               = it_fieldcat
*    it_sort                       =
*    it_filter                     =
*  EXCEPTIONS
*    invalid_parameter_combination = 1
*    program_error                 = 2
*    too_many_lines                = 3
*    others                        = 4
          .
    IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.

  ENDMETHOD.                    "display_alv

  METHOD refresh_alv.

    REFRESH it_ekpo.
    SELECT ebeln
           ebelp
           matnr
           werks
           menge
           FROM ekpo
           INTO TABLE it_ekpo.

    CALL METHOD z_grid->refresh_table_display
*  EXPORTING
*    is_stable      =
*    i_soft_refresh =
*  EXCEPTIONS
*    finished       = 1
*    others         = 2
            .
    IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
  ENDMETHOD.                    "refresh_alv
ENDCLASS.                    "lcl_oo_alv IMPLEMENTATION

*&---------------------------------------------------------------------*
*          CLASS INSTANCE VARIABLE
*&---------------------------------------------------------------------*
DATA : obj1 TYPE REF TO lcl_oo_alv.

*&---------------------------------------------------------------------*
*          START OF SELECTION
*&---------------------------------------------------------------------*
START-OF-SELECTION.

*CREATE OBJECT
  CREATE OBJECT : obj1.

  CALL METHOD obj1->populate_itab
    EXPORTING
      ebeln = z_ebeln.

*&---------------------------------------------------------------------*
*          CALL SCREEN
*&---------------------------------------------------------------------*
  CALL SCREEN 1011.

*&---------------------------------------------------------------------*
*&      Module  STATUS_1010  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE status_1011 OUTPUT.
  SET PF-STATUS '1011'.
*  SET TITLEBAR 'xxx'.

*CUSTOM CONTAINER INSTANCE
  CREATE OBJECT z_custom_container
    EXPORTING
*           parent                      =
      container_name              = z_container
*           style                       =
*           lifetime                    = lifetime_default
*           repid                       =
*           dynnr                       =
*           no_autodef_progid_dynnr     =
*         EXCEPTIONS
*           cntl_error                  = 1
*           cntl_system_error           = 2
*           create_error                = 3
*           lifetime_error              = 4
*           lifetime_dynpro_dynpro_link = 5
*           others                      = 6
      .
  IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.

*ALV GRID INSTANCE
  CREATE OBJECT z_grid
    EXPORTING
*    i_shellstyle      = 0
*    i_lifetime        =
      i_parent          = z_custom_container
*    i_appl_events     = space
*    i_parentdbg       =
*    i_applogparent    =
*    i_graphicsparent  =
*    i_name            =
*    i_fcat_complete   = space
*  EXCEPTIONS
*    error_cntl_create = 1
*    error_cntl_init   = 2
*    error_cntl_link   = 3
*    error_dp_create   = 4
*    others            = 5
      .
  IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.

  CALL METHOD obj1->create_field_catalog.
  CALL METHOD obj1->create_layout.
  CALL METHOD obj1->display_alv.

ENDMODULE.                 " STATUS_1010  OUTPUT

*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_1010  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE user_command_1011 INPUT.
  ok_code = sy-ucomm.
  CASE ok_code.
    WHEN 'REFRESH'.
      CALL METHOD obj1->refresh_alv.
    WHEN 'BACK'.
      LEAVE TO SCREEN 0.
    WHEN 'EXIT'.
      LEAVE PROGRAM.
  ENDCASE.
ENDMODULE.                 " USER_COMMAND_1010  INPUT

Hope this solves your problem.

Thanks & Regards

Tarun Gambhir

Read only

Subhankar
Active Contributor
0 Likes
695

Hi

Please check the code....

types: begin of x_ftab,

name type char20,

position type char10,

robjs type char7,

end of x_ftab.

  • Internal table

data: i_ftab type standard table of x_ftab initial size 0,

  • work area

wa_ftab type x_ftab.

  • Class data

data: v_oref_table type ref to cl_salv_table.

"Basis Class for Simple Tables

start-of-selection.

*Populate the internal table

wa_ftab-name = 'Amitava'.

wa_ftab-position = 'Syst. Engg.'.

wa_ftab-robjs = 'RDD0333'.

append wa_ftab to i_ftab.

wa_ftab-name = 'Rajeev'.

wa_ftab-position = 'Appl. Devl.'.

wa_ftab-robjs = 'RDD0207'.

append wa_ftab to i_ftab.

wa_ftab-name = 'Apan'.

wa_ftab-position = 'Appl. Devl.'.

wa_ftab-robjs = 'IDD0301'.

append wa_ftab to i_ftab.

wa_ftab-name = 'Sayak'.

wa_ftab-position = 'Appl. Devl.'.

wa_ftab-robjs = 'DCD0334'.

append wa_ftab to i_ftab.

end-of-selection.

call method cl_salv_table=>factory

importing

r_salv_table = v_oref_table

changing

t_table = i_ftab.

v_oref_table->display( ).

Thanks

Subhankar...