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

interactive alv using oops-check my code

Former Member
0 Likes
402

this is aprogram to demonstrate interactive alv using oops so ,when i click back from the secondary list the first list is getting overloded on the second list.

this is the code that i have written please find the mistake.

&----


*& Report ZG_ALVOOPS_INTER *

*& *

&----


*& *

*& *

&----


REPORT zg_alvoops_inter.

************************************************************************

  • TABLES *

************************************************************************

TABLES : vbak.

************************************************************************

  • TYPES *

************************************************************************

TYPES: BEGIN OF ty_vbak, "Sales Document: Header Data

vbeln TYPE vbak-vbeln, "Sales Document

erdat TYPE vbak-erdat, "Date created

audat TYPE vbak-audat, "Document date

netwr TYPE vbak-netwr, "Net Value

END OF ty_vbak,

BEGIN OF ty_vbap, "Sales Document: Item Data

vbeln TYPE vbap-vbeln, "Sales Document

posnr TYPE vbap-posnr, "Sales Document Item

matnr TYPE vbap-matnr, "Material Number

matkl TYPE vbap-matkl,

END OF ty_vbap.

************************************************************************

  • DATA DECLARATIONS *

************************************************************************

DATA : i_vbak TYPE TABLE OF ty_vbak, "Internal table refering vbak type

i_vbap TYPE TABLE OF ty_vbap, "Internal table refering vbap type

i_fcat TYPE lvc_t_fcat, "Internal table fro field catalog

wa_vbak TYPE ty_vbak, "Work area refering vbak types

wa_vbap TYPE ty_vbap, "Work area refering vbap types

wa_fcat TYPE lvc_s_fcat, "Work area refering fro field catalog

alvgrid TYPE REF TO cl_gui_alv_grid, "Creating an instance of a grid class

container TYPE REF TO cl_gui_custom_container, "Creating an instance of container class

************************************************************************

  • DATA DECLARATION FOR INTERACTIVE LIST *

************************************************************************

i_fcat1 TYPE lvc_t_fcat, "Internal table for field catalog

wa_fcat1 TYPE lvc_s_fcat, "Work area refering fro field catalog

alvgrid1 TYPE REF TO cl_gui_alv_grid, "Creating an instance of a grid class

container1 TYPE REF TO cl_gui_custom_container. "Creating an instance of container class

************************************************************************

  • SELECTION SCREEN *

************************************************************************

SELECT-OPTIONS s_vbeln FOR vbak-vbeln obligatory. "Creating selectuion screen fields

************************************************************************

  • START-OF-SELECTION *

************************************************************************

START-OF-SELECTION.

*perform selectin screen validations

perform validate_svbeln.

*fetch data into table and field characteristics

PERFORM fetch_data.

*ALV display for output

PERFORM alv_output.

CALL SCREEN 100.

end-of-selection.

&----


*& Form validate_svbeln

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


form validate_svbeln .

select single vbeln

into vbak-vbeln

from vbak

where vbeln in s_vbeln.

if sy-subrc ne 0.

message e000(oo) with 'NO records in the given range'.

endif.

endform. " validate_svbeln

&----


*& Form fetch_data

&----


  • text

----


FORM fetch_data .

SELECT vbeln

erdat

audat

netwr

FROM vbak

INTO TABLE i_vbak

WHERE vbeln IN s_vbeln.

if sy-subrc <> 0.

message i000(00) with 'no data for given selection'.

endif.

ENDFORM. " fetch_data

&----


*& Form alv_output

&----


  • text

----


FORM alv_output .

IF container IS INITIAL.

*Creating object of container

CREATE OBJECT container

EXPORTING

container_name = 'CONTAINER'

.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

*Creating object of alv

CREATE OBJECT alvgrid

EXPORTING

i_parent = container

.

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 field catalogue

PERFORM fieldcat.

*Displaying the ALV grid

CALL METHOD alvgrid->set_table_for_first_display

CHANGING

it_outtab = i_vbak[]

it_fieldcatalog = i_fcat[].

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

  • Create object of the event class and setting handler for double click

PERFORM register_event_handlers.

ELSE.

CALL METHOD alvgrid->refresh_table_display.

ENDIF.

ENDFORM. " alv_output

&----


*& Form FIELDCAT

&----


  • text

----


  • Field catalog creation

FORM fieldcat .

wa_fcat-col_pos = 1.

wa_fcat-fieldname = 'VBELN'.

wa_fcat-coltext = 'SALES DOCUMENT'.

APPEND wa_fcat TO i_fcat.

wa_fcat-col_pos = 2.

wa_fcat-fieldname = 'ERDAT'.

wa_fcat-coltext = 'DATE OF CREATION'.

APPEND wa_fcat TO i_fcat.

wa_fcat-col_pos = 3.

wa_fcat-fieldname = 'AUDAT'.

wa_fcat-coltext = 'DOCUMENT DATE'.

APPEND wa_fcat TO i_fcat.

wa_fcat-col_pos = 4.

wa_fcat-fieldname = 'NETWR'.

wa_fcat-coltext = 'NET VALUE'.

APPEND wa_fcat TO i_fcat.

ENDFORM. " FIELDCAT

&----


*& Module STATUS_100 OUTPUT

&----


  • text

----


MODULE status_100 OUTPUT.

SET PF-STATUS 'ZSTANDARD1'.

ENDMODULE. " STATUS_100 OUTPUT

&----


*& Module USER_COMMAND_100 INPUT

&----


  • text

----


MODULE user_command_100 INPUT.

CASE sy-ucomm.

WHEN '&F15' OR '&F12'.

SET SCREEN '0'.

WHEN '&F03'.

SET SCREEN '0'.

ENDCASE.

ENDMODULE. " USER_COMMAND_100 INPUT

----


  • CLASS lcl_event_receiver DEFINITION

----


CLASS lcl_gui_alv_event_receiver DEFINITION.

PUBLIC SECTION.

METHODS:

*" Double-click control

handle_double_click FOR EVENT double_click OF cl_gui_alv_grid

IMPORTING e_row e_column es_row_no.

ENDCLASS. "lcl_gui_alv_event_receiver DEFINITION

DATA : g_alv_event_ref TYPE REF TO lcl_gui_alv_event_receiver.

----


  • CLASS lcl_event_receiver IMPLEMENTATION

----


*Class implementation

CLASS lcl_gui_alv_event_receiver IMPLEMENTATION.

METHOD handle_double_click .

CALL METHOD alvgrid->refresh_table_display.

*here you code your desired behavior after double clicking

DATA: l_mess TYPE string,

l_row(2) TYPE c.

WRITE es_row_no-row_id TO l_row.

IF e_column EQ 'VBELN'.

READ TABLE i_vbak INTO wa_vbak INDEX l_row.

PERFORM alv_output1 USING wa_vbak-vbeln.

CALL SCREEN 101.

ENDIF.

ENDMETHOD. "handle_double_click

ENDCLASS. "lcl_gui_alv_event_receiver IMPLEMENTATION.

&----


*& Form alv_output1

&----


  • text

----


FORM alv_output1 USING wa_vbak-vbeln.

refresh i_vbap.

SELECT vbeln

posnr

matnr

matkl

FROM vbap

INTO TABLE i_vbap

WHERE vbeln = wa_vbak-vbeln .

if sy-subrc <> 0.

message i000(oo) with 'No item details'.

endif.

*Creating object of alv

CREATE OBJECT alvgrid1

EXPORTING

i_parent = container1

.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

*Creating object of container

CREATE OBJECT container

EXPORTING

container_name = 'CONTAINER1'

.

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 field catalogue

PERFORM fieldcat1.

*Displaying the ALV grid

CALL METHOD alvgrid1->set_table_for_first_display

CHANGING

it_outtab = i_vbap[]

it_fieldcatalog = i_fcat1[].

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ENDFORM. " alv_output1

&----


*& Form fieldcat1

&----


  • text

----


FORM fieldcat1 .

wa_fcat1-col_pos = 1.

wa_fcat1-fieldname = 'VBELN'.

wa_fcat1-coltext = 'SALES DOCUMENT'.

APPEND wa_fcat1 TO i_fcat1.

wa_fcat1-col_pos = 2.

wa_fcat1-fieldname = 'POSNR'.

wa_fcat1-coltext = 'ITEM'.

APPEND wa_fcat1 TO i_fcat1.

wa_fcat1-col_pos = 3.

wa_fcat1-fieldname = 'MATNR'.

wa_fcat1-coltext = 'MATERIALNO'.

APPEND wa_fcat1 TO i_fcat1.

wa_fcat1-col_pos = 4.

wa_fcat1-fieldname = 'MATKL'.

wa_fcat1-coltext = 'MATERIAL GROUP'.

APPEND wa_fcat1 TO i_fcat1.

ENDFORM. " fieldcat1

*SET EVENT HANDLER

FORM register_event_handlers.

CREATE OBJECT g_alv_event_ref.

SET HANDLER g_alv_event_ref->handle_double_click FOR alvgrid."g_alv_grid_ref.

ENDFORM. "register_event_handlers

&----


*& Module STATUS_0101 OUTPUT

&----


  • text

----


module STATUS_0101 output.

SET PF-STATUS 'ZSTANDARD1'.

  • SET TITLEBAR 'xxx'.

endmodule. " STATUS_0101 OUTPUT

&----


*& Module USER_COMMAND_0101 INPUT

&----


  • text

----


module USER_COMMAND_0101 input.

CASE sy-ucomm.

WHEN '&F15' OR '&F12'.

SET SCREEN '0'.

WHEN '&F03'.

SET SCREEN '0'.

call screen 100.

ENDCASE.

endmodule. " USER_COMMAND_0101 INPUT

Edited by: anjali b on Nov 8, 2008 11:47 AM

Edited by: anjali b on Nov 8, 2008 12:34 PM

2 REPLIES 2
Read only

uwe_schieferstein
Active Contributor
0 Likes
360

Hello Anjali

If you need to have a working example have a look at my sample report ZUS_SDN_TWO_ALV_GRIDS_2SCR in thread

Regards

Uwe

Read only

Former Member
0 Likes
360

Hi,

Try to Replace your existing Method Call for Set_table_for_first_display by

CALL METHOD alv_grid->set_table_for_first_display

EXPORTING

i_save = 'A'

is_layout = w_layo

CHANGING

it_outtab = it_data[]

it_fieldcatalog = wt_fieldcat

EXCEPTIONS

invalid_parameter_combination = 1

program_error = 2

too_many_lines = 3

OTHERS = 4.

This nay work