‎2008 Dec 16 10:41 AM
Hi All,
How do we display a report output using OOPs concept in in ALV?
‎2008 Dec 16 10:43 AM
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.
‎2008 Dec 16 10:43 AM
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.
‎2008 Dec 16 10:46 AM
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
‎2008 Dec 16 11:05 AM
Hi,
Use this link , Really helpful for any kind of OOPs ALV.
http://www.sapdev.co.uk/reporting/alv/alvscr.htm
Thanks & Regards,
‎2008 Dec 16 11:34 AM
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
‎2008 Dec 16 11:38 AM
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...