‎2009 May 12 1:43 PM
Hi,
I have done an alv grid program using oops (like creating a container,grid into it ,calling a method etc).
Now can any one of you help me in creating the interactive for it to call MM03 screen,as i am new to this concept.
Regards,
Silpa.M
‎2009 May 14 5:44 AM
Hi Silpa,
In Interactive ALV, we have to explicitly handel the events. So we have to create a local class and in that we have to handel each event seperately. so i have created a local class EVENT_HANDEL and handeled the event DOUBLE_CLICK.
Container Object creation should be done in the PBO Of the screen, Now i have done the changes in the below code just check it.
Hope it will solve your problem.
Regards
Kumar M
DATA : GT_VBAK TYPE TABLE OF VBAK,
WA_VBAK TYPE VBAK.
DATA : GT_FCAT TYPE TABLE OF LVC_S_FCAT WITH HEADER LINE.
DATA : MY_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
DATA : GRID TYPE REF TO CL_GUI_ALV_GRID.
*****************************************************************************************
* FOR HANDELING EVENTS WE HAVE TO RAISE THE EVENTS WITH LOCAL CLASS AND SET HANDELERS
*****************************************************************************************
CLASS EVENT_HANDEL DEFINITION.
PUBLIC SECTION.
METHODS : DB_CLICK FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID
IMPORTING E_ROW
E_COLUMN.
ENDCLASS. "EVENT_HANDEL DEFINITION
*----------------------------------------------------------------------*
* CLASS EVENT_HANDEL IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS EVENT_HANDEL IMPLEMENTATION.
METHOD DB_CLICK.
READ TABLE GT_VBAK INTO WA_VBAK INDEX E_ROW-INDEX.
IF SY-SUBRC EQ 0.
SET PARAMETER ID 'AUN' FIELD WA_VBAK-VBELN.
CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.
ENDIF.
ENDMETHOD. "DB_CLICK
ENDCLASS. "EVENT_HANDEL IMPLEMENTATION
DATA : EVENTS TYPE REF TO EVENT_HANDEL.
START-OF-SELECTION.
CALL SCREEN 200.
*&---------------------------------------------------------------------*
*& Form F_GET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM F_GET_DATA .
SELECT * FROM VBAK INTO TABLE GT_VBAK
UP TO 30 ROWS.
CREATE OBJECT EVENTS.
IF GRID IS INITIAL.
CREATE OBJECT MY_CONTAINER
EXPORTING
CONTAINER_NAME = 'CC1'
EXCEPTIONS
CNTL_ERROR = 1
CNTL_SYSTEM_ERROR = 2
CREATE_ERROR = 3
LIFETIME_ERROR = 4
LIFETIME_DYNPRO_DYNPRO_LINK = 5
OTHERS = 6.
CREATE OBJECT GRID
EXPORTING
I_PARENT = MY_CONTAINER
EXCEPTIONS
ERROR_CNTL_CREATE = 1
ERROR_CNTL_INIT = 2
ERROR_CNTL_LINK = 3
ERROR_DP_CREATE = 4
OTHERS = 5.
SET HANDLER : EVENTS->DB_CLICK FOR GRID.
CALL METHOD GRID->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
I_STRUCTURE_NAME = 'VBAK'
CHANGING
IT_OUTTAB = GT_VBAK
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.
ENDIF.
ENDFORM. " F_GET_DATA
*&---------------------------------------------------------------------*
*& Module STATUS_0200 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE STATUS_0200 OUTPUT.
SET PF-STATUS 'ZINTERACTIVE'.
PERFORM F_GET_DATA.
ENDMODULE. " STATUS_0200 OUTPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0200 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_0200 INPUT.
CASE SY-UCOMM.
WHEN 'BACK'.
SET SCREEN 0.
LEAVE SCREEN.
WHEN 'CANCEL'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE. " USER_COMMAND_0200 INPUT
‎2009 May 12 1:49 PM
Hi,
Define a local class and then create an method for hot spot or double click for the material.Handle the events for the same. So that if it is clicked, then mm03 will be displayed.
‎2009 May 12 2:22 PM
‎2009 May 13 1:19 PM
Hi Silpa,
Check the below program, it is similiar
DATA : GT_VBAK TYPE TABLE OF VBAK,
WA_VBAK TYPE VBAK.
DATA : GT_FCAT TYPE TABLE OF LVC_S_FCAT WITH HEADER LINE.
DATA : MY_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
DATA : GRID TYPE REF TO CL_GUI_ALV_GRID.
*****************************************************************************************
* FOR HANDELING EVENTS WE HAVE TO RAISE THE EVENTS WITH LOCAL CLASS AND SET HANDELERS
*****************************************************************************************
CLASS EVENT_HANDEL DEFINITION.
PUBLIC SECTION.
METHODS : DB_CLICK FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID
IMPORTING E_ROW
E_COLUMN.
ENDCLASS. "EVENT_HANDEL DEFINITION
*----------------------------------------------------------------------*
* CLASS EVENT_HANDEL IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS EVENT_HANDEL IMPLEMENTATION.
METHOD DB_CLICK.
READ TABLE GT_VBAK INTO WA_VBAK INDEX E_ROW-INDEX.
IF SY-SUBRC EQ 0.
SET PARAMETER ID 'AUN' FIELD WA_VBAK-VBELN.
CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.
ENDIF.
ENDMETHOD. "DB_CLICK
ENDCLASS. "EVENT_HANDEL IMPLEMENTATION
DATA : EVENTS TYPE REF TO EVENT_HANDEL.
START-OF-SELECTION.
PERFORM F_GET_DATA.
CALL SCREEN 200.
*&---------------------------------------------------------------------*
*& Form F_GET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM F_GET_DATA .
SELECT * FROM VBAK INTO TABLE GT_VBAK
UP TO 30 ROWS.
CREATE OBJECT EVENTS.
IF GRID IS INITIAL.
CREATE OBJECT MY_CONTAINER
EXPORTING
CONTAINER_NAME = 'CC1'
EXCEPTIONS
CNTL_ERROR = 1
CNTL_SYSTEM_ERROR = 2
CREATE_ERROR = 3
LIFETIME_ERROR = 4
LIFETIME_DYNPRO_DYNPRO_LINK = 5
OTHERS = 6.
CREATE OBJECT GRID
EXPORTING
I_PARENT = MY_CONTAINER
EXCEPTIONS
ERROR_CNTL_CREATE = 1
ERROR_CNTL_INIT = 2
ERROR_CNTL_LINK = 3
ERROR_DP_CREATE = 4
OTHERS = 5.
SET HANDLER : EVENTS->DB_CLICK FOR GRID.
CALL METHOD GRID->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
I_STRUCTURE_NAME = 'VBAK'
CHANGING
IT_OUTTAB = GT_VBAK
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.
ENDIF.
ENDFORM. " F_GET_DATA
*&---------------------------------------------------------------------*
*& Module STATUS_0200 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE STATUS_0200 OUTPUT.
SET PF-STATUS 'ZINTERACTIVE'.
ENDMODULE. " STATUS_0200 OUTPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0200 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_0200 INPUT.
CASE SY-UCOMM.
WHEN 'BACK'.
SET SCREEN 0.
LEAVE SCREEN.
WHEN 'CANCEL'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE. " USER_COMMAND_0200 INPUT
Regards
Kumar M.
Edited by: Kumar M on May 13, 2009 2:19 PM
‎2009 May 13 1:49 PM
Hi Kumar ,
I have a small doubt in the program you have sent i.e, in CREATE OBJECT EVENTS.
you have declare he containe name as 'CC1' but you havent declared it and i found after executing the program there is no grid displayed inthe output(1st screen).Canyou kindly explain this.
Regards,
Silpa.
‎2009 May 14 5:44 AM
Hi Silpa,
In Interactive ALV, we have to explicitly handel the events. So we have to create a local class and in that we have to handel each event seperately. so i have created a local class EVENT_HANDEL and handeled the event DOUBLE_CLICK.
Container Object creation should be done in the PBO Of the screen, Now i have done the changes in the below code just check it.
Hope it will solve your problem.
Regards
Kumar M
DATA : GT_VBAK TYPE TABLE OF VBAK,
WA_VBAK TYPE VBAK.
DATA : GT_FCAT TYPE TABLE OF LVC_S_FCAT WITH HEADER LINE.
DATA : MY_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
DATA : GRID TYPE REF TO CL_GUI_ALV_GRID.
*****************************************************************************************
* FOR HANDELING EVENTS WE HAVE TO RAISE THE EVENTS WITH LOCAL CLASS AND SET HANDELERS
*****************************************************************************************
CLASS EVENT_HANDEL DEFINITION.
PUBLIC SECTION.
METHODS : DB_CLICK FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID
IMPORTING E_ROW
E_COLUMN.
ENDCLASS. "EVENT_HANDEL DEFINITION
*----------------------------------------------------------------------*
* CLASS EVENT_HANDEL IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS EVENT_HANDEL IMPLEMENTATION.
METHOD DB_CLICK.
READ TABLE GT_VBAK INTO WA_VBAK INDEX E_ROW-INDEX.
IF SY-SUBRC EQ 0.
SET PARAMETER ID 'AUN' FIELD WA_VBAK-VBELN.
CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.
ENDIF.
ENDMETHOD. "DB_CLICK
ENDCLASS. "EVENT_HANDEL IMPLEMENTATION
DATA : EVENTS TYPE REF TO EVENT_HANDEL.
START-OF-SELECTION.
CALL SCREEN 200.
*&---------------------------------------------------------------------*
*& Form F_GET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM F_GET_DATA .
SELECT * FROM VBAK INTO TABLE GT_VBAK
UP TO 30 ROWS.
CREATE OBJECT EVENTS.
IF GRID IS INITIAL.
CREATE OBJECT MY_CONTAINER
EXPORTING
CONTAINER_NAME = 'CC1'
EXCEPTIONS
CNTL_ERROR = 1
CNTL_SYSTEM_ERROR = 2
CREATE_ERROR = 3
LIFETIME_ERROR = 4
LIFETIME_DYNPRO_DYNPRO_LINK = 5
OTHERS = 6.
CREATE OBJECT GRID
EXPORTING
I_PARENT = MY_CONTAINER
EXCEPTIONS
ERROR_CNTL_CREATE = 1
ERROR_CNTL_INIT = 2
ERROR_CNTL_LINK = 3
ERROR_DP_CREATE = 4
OTHERS = 5.
SET HANDLER : EVENTS->DB_CLICK FOR GRID.
CALL METHOD GRID->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
I_STRUCTURE_NAME = 'VBAK'
CHANGING
IT_OUTTAB = GT_VBAK
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.
ENDIF.
ENDFORM. " F_GET_DATA
*&---------------------------------------------------------------------*
*& Module STATUS_0200 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE STATUS_0200 OUTPUT.
SET PF-STATUS 'ZINTERACTIVE'.
PERFORM F_GET_DATA.
ENDMODULE. " STATUS_0200 OUTPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0200 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_0200 INPUT.
CASE SY-UCOMM.
WHEN 'BACK'.
SET SCREEN 0.
LEAVE SCREEN.
WHEN 'CANCEL'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE. " USER_COMMAND_0200 INPUT
‎2009 May 14 9:25 AM
Hi Kumar,
Thanks for ur post .it has solved my problem.Also thanks to all who tried solve my query.
‎2009 May 14 10:09 AM
Hi Try this code,
DATA: it_index_rows TYPE lvc_t_row,
w_index_rows TYPE LINE OF lvc_t_row.
CALL METHOD grid1->get_selected_rows
IMPORTING
et_index_rows = it_index_rows[].
IF it_index_rows[] IS INITIAL.
MESSAGE s005(umg).
RETURN.
ENDIF.
loop at it_index_rows into wa_index_rows.
read table <final interanl table > into <wa> index wa_index_rows-index.
set parameter id <ID> field <field> .
call transcation <tcode> and skip first screen.
endloop.
OR
FORM form_me23n USING ucomm TYPE sy-ucomm
selfield TYPE slis_selfield.
DATA: wl_ebeln TYPE ekko-ebeln.
CASE selfield-fieldname.
WHEN c_ebeln.
CLEAR: wl_ebeln.
CLEAR wa_my.
READ TABLE i_my INTO wa_my INDEX selfield-tabindex.
IF sy-subrc = 0.
wl_ebeln = wa_my-ebeln.
SET PARAMETER ID c_bes FIELD wl_ebeln.
ENDIF.
CALL TRANSACTION c_me23n AND SKIP FIRST SCREEN.
ENDCASE.
ENDFORM.