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

oops ABAP interactive alv 2 grids on single screen.

Former Member
0 Likes
2,183

I have created a programme on int alv on oops ABAP using 2 grids on a single screen. I have used a double click event for connecting the second grid. It's working good but I have an issue with the second double click. It's displaying the correct information for the first double click. but for the second double click, there is no change in the second grid.

How to clear the records in the second grid for the second double click?

I have created a programme on int alv on oops ABAP using 2 grids on a single screen. I have used a double click event for connecting the second grid. It's working good but I have an issue with the second double click. It's displaying the correct information for the first double click. but for the second double click, there is no change in the second grid.

How to clear the records in the second grid for the second double click?

6 REPLIES 6
Read only

MateuszAdamus
Active Contributor
2,016

Hello

You need to show your code if you want to get any help.

Kind regards,
Mateusz
Read only

Former Member
0 Likes
2,016

this is the code I have written.

*&---------------------------------------------------------------------*

*& Report Z_R020_OOPS_ABAP_ALV *&

*&---------------------------------------------------------------------* *& *&

*&---------------------------------------------------------------------

* REPORT Z_R020_OOPS_ABAP_ALV.

CLASS CL_EVENT_HANDLER DEFINITION DEFERRED.

PARAMETERS: P_MATNR TYPE MATNR,

P_MTART TYPE MTART.

TYPES: BEGIN OF TY_MARA,

MATNR TYPE MARA-MATNR,

MTART TYPE MARA-MTART,

MBRSH TYPE MARA-MBRSH,

MEINS TYPE MARA-MEINS,

END OF TY_MARA.

TYPES: BEGIN OF TY_MAKT,

MATNR TYPE MAKT-MATNR,

SPRAS TYPE MAKT-SPRAS,

MAKTX TYPE MAKT-MAKTX,

END OF TY_MAKT.

DATA: ALV_COUNT TYPE REF TO CL_GUI_CUSTOM_CONTAINER,

ALV_COUNT2 TYPE REF TO CL_GUI_CUSTOM_CONTAINER,

ALV_GRID TYPE REF TO CL_GUI_ALV_GRID,

ALV_GRID2 TYPE REF TO CL_GUI_ALV_GRID,

IT_MARA TYPE TABLE OF TY_MARA,

WA_MARA TYPE TY_MARA,

IT_MAKT TYPE TABLE OF TY_MAKT,

WA_MAKT TYPE TY_MAKT,

IT_FCAT TYPE LVC_T_FCAT,

IT_FCAT2 TYPE LVC_T_FCAT,

WA_FCAT TYPE LVC_S_FCAT,

WA_FCAT2 TYPE LVC_S_FCAT,

OBJ TYPE REF TO CL_EVENT_HANDLER.

CLASS CL_EVENT_HANDLER DEFINITION.

PUBLIC SECTION.

METHODS: HANDLE_DOUBLE_CLICK FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID IMPORTING E_ROW.

ENDCLASS.

CLASS CL_EVENT_HANDLER IMPLEMENTATION.

METHOD: HANDLE_DOUBLE_CLICK.

CLEAR IT_MAKT.

READ TABLE IT_mara INTO wa_mara INDEX e_row-index.

SELECT MATNR SPRAS MAKTX FROM makt INTO TABLE iT_makt

WHERE matnr = wa_mara-matnr.

CLEAR WA_MARA.

CALL SCREEN 9000.

ENDMETHOD.

ENDCLASS.

START-OF-SELECTION.

CALL SCREEN 9000.

*&---------------------------------------------------------------------*

*& MODULE STATUS_9000 OUTPUT

*&---------------------------------------------------------------------*

* TEXT *----------------------------------------------------------------------*

MODULE STATUS_9000 OUTPUT.

SET PF-STATUS 'ZMENU'.

SET TITLEBAR 'ZTITLE'.

IF ALV_COUNT IS INITIAL.

PERFORM CREATE_OBJECT. PERFORM GET_DATA.

PERFORM CREATE_FCAT.

PERFORM DISPLAY_ALV.

CREATE OBJECT OBJ.

SET HANDLER OBJ->HANDLE_DOUBLE_CLICK FOR ALV_GRID.

ELSE.

PERFORM CREATE_OBJECT2.

PERFORM CREATE_FCAT2.

PERFORM DISPLAY_ALV2.

ENDIF.

ENDMODULE. " STATUS_9000 OUTPUT

*&---------------------------------------------------------------------*

*& MODULE USER_COMMAND_9000 INPUT *

&---------------------------------------------------------------------*

* TEXT *----------------------------------------------------------------------

*MODULE USER_COMMAND_9000 INPUT.

CASE SY-UCOMM.

WHEN 'BACK' OR 'EXIT' OR 'CANCEL'. LEAVE TO SCREEN 0.

WHEN OTHERS.

ENDCASE.

ENDMODULE. " USER_COMMAND_9000 INPUT

*&---------------------------------------------------------------------*

*& FORM CREATE_OBJECT

*&---------------------------------------------------------------------*

* TEXT *----------------------------------------------------------------------*

* --> P1 TEXT * <-- P2 TEXT *----------------------------------------------------------------------

* FORM CREATE_OBJECT .

CREATE OBJECT ALV_COUNT

EXPORTING

CONTAINER_NAME = 'ALV_COUNT_M'.

IF SY-SUBRC <> 0.

ENDIF.

CREATE OBJECT ALV_GRID

EXPORTING

I_PARENT = ALV_COUNT.

IF SY-SUBRC <> 0.

ENDIF.

ENDFORM. " CREATE_OBJECT

*&---------------------------------------------------------------------*

*& FORM GET_DATA *

&---------------------------------------------------------------------*

* TEXT *----------------------------------------------------------------------*

* --> P1 TEXT * <-- P2 TEXT *----------------------------------------------------------------------*

FORM GET_DATA.

IF P_MTART IS NOT INITIAL.

SELECT MATNR MTART MBRSH MEINS FROM MARA INTO TABLE IT_MARA

WHERE MTART = P_MTART.

IF SY-SUBRC <> 0.

MESSAGE 'ENTERED MATERIAL TYPE DOES NOT EXIST' TYPE 'I'.

ENDIF. ELSE. MESSAGE 'PLEASE ENTER MATERIAL TYPE' TYPE 'I'.

ENDIF.

ENDFORM. " GET_DATA

*&---------------------------------------------------------------------*

*& FORM DISPLAY_ALV *&---------------------------------------------------------------------*

* TEXT *----------------------------------------------------------------------*

* --> P1 TEXT * <-- P2 TEXT *----------------------------------------------------------------------*

FORM DISPLAY_ALV.

CALL METHOD ALV_GRID->SET_TABLE_FOR_FIRST_DISPLAY

EXPORTING

I_STRUCTURE_NAME = 'TY_MARA'

CHANGING

IT_OUTTAB = IT_MARA

IT_FIELDCATALOG = IT_FCAT.

IF SY-SUBRC <> 0.

ENDIF.

ENDFORM. " DISPLAY_ALV

*&---------------------------------------------------------------------*

*& FORM CREATE_FCAT

*&---------------------------------------------------------------------*

* TEXT *----------------------------------------------------------------------*

* --> P1 TEXT * <-- P2 TEXT *----------------------------------------------------------------------*

FORM CREATE_FCAT.

WA_FCAT-COL_POS = '1'.

WA_FCAT-FIELDNAME = 'MATNR'.

WA_FCAT-TABNAME = 'IT_MARA' .

WA_FCAT-SCRTEXT_M = 'MATERIAL NO' .

APPEND WA_FCAT TO IT_FCAT.

CLEAR WA_FCAT.

WA_FCAT-COL_POS = '2'.

WA_FCAT-FIELDNAME = 'MTART'.

WA_FCAT-TABNAME = 'IT_MARA' .

WA_FCAT-SCRTEXT_M = 'MATERIAL TYPE' .

APPEND WA_FCAT TO IT_FCAT.

CLEAR WA_FCAT.

WA_FCAT-COL_POS = '3'.

WA_FCAT-FIELDNAME = 'MBRSH'.

WA_FCAT-TABNAME = 'IT_MARA' .

WA_FCAT-SCRTEXT_M = 'INDUSTRY SECTOR' .

APPEND WA_FCAT TO IT_FCAT.

CLEAR WA_FCAT.

WA_FCAT-COL_POS = '4'.

WA_FCAT-FIELDNAME = 'MEINS'.

WA_FCAT-TABNAME = 'IT_MARA' .

WA_FCAT-SCRTEXT_M = 'UNIT' .

APPEND WA_FCAT TO IT_FCAT.

CLEAR WA_FCAT.

WA_FCAT-COL_POS = '5'.

WA_FCAT-FIELDNAME = 'ERNAM'.

WA_FCAT-TABNAME = 'IT_MARA' .

WA_FCAT-SCRTEXT_M = 'DATE' .

APPEND WA_FCAT TO IT_FCAT.

CLEAR WA_FCAT.

ENDFORM. " CREATE_FCAT

*&---------------------------------------------------------------------*

*& Form CREATE_OBJECT2

*&---------------------------------------------------------------------*

* text *----------------------------------------------------------------------*

* --> p1 text * <-- p2 text *----------------------------------------------------------------------*

FORM CREATE_OBJECT2.

CREATE OBJECT ALV_COUNT2

EXPORTING

CONTAINER_NAME = 'ALV_COUNT_S'.

IF SY-SUBRC <> 0.

ENDIF.

CREATE OBJECT ALV_GRID2

EXPORTING I_PARENT = ALV_COUNT2.

IF SY-SUBRC <> 0.

ENDIF.

ENDFORM. " CREATE_OBJECT2 " GET_DATA2

*&---------------------------------------------------------------------*

*& Form CREATE_FCAT2

*&---------------------------------------------------------------------*

* text *----------------------------------------------------------------------*

* --> p1 text * <-- p2 text *----------------------------------------------------------------------*

FORM CREATE_FCAT2 .

CLEAR IT_FCAT2.

WA_FCAT2-COL_POS = '1'.

WA_FCAT2-FIELDNAME = 'MATNR'.

WA_FCAT2-TABNAME = 'IT_MAKT' .

WA_FCAT2-SCRTEXT_M = 'MATERIAL NO' .

APPEND WA_FCAT2 TO IT_FCAT2.

CLEAR WA_FCAT2.

WA_FCAT2-COL_POS = '2'.

WA_FCAT2-FIELDNAME = 'SPRAS'.

WA_FCAT2-TABNAME = 'IT_MAKT' .

WA_FCAT2-SCRTEXT_M = 'LANG KEY' .

APPEND WA_FCAT2 TO IT_FCAT2.

CLEAR WA_FCAT2.

WA_FCAT2-COL_POS = '3'.

WA_FCAT2-FIELDNAME = 'MAKTX'.

WA_FCAT2-TABNAME = 'IT_MAKT' .

WA_FCAT2-SCRTEXT_M = 'DISCRIPTION' .

APPEND WA_FCAT2 TO IT_FCAT2.

CLEAR WA_FCAT2.

ENDFORM. " CREATE_FCAT2

*&---------------------------------------------------------------------*

*& Form DISPLAY_ALV2

*&---------------------------------------------------------------------*

* text *----------------------------------------------------------------------*

* --> p1 text * <-- p2 text *----------------------------------------------------------------------*

FORM DISPLAY_ALV2.

CALL METHOD ALV_GRID2->SET_TABLE_FOR_FIRST_DISPLAY

EXPORTING

I_STRUCTURE_NAME = 'TY_MAKT'

CHANGING

IT_OUTTAB = IT_MAKT

IT_FIELDCATALOG = IT_FCAT2.

IF SY-SUBRC <> 0.

MESSAGE 'MATERIAL DETAILS NOT FOUND' TYPE 'E'.

ENDIF.

ENDFORM. " DISPLAY_ALV2

Read only

Sandra_Rossi
Active Contributor
2,016

Please use the CODE button to format it. Moreover don't forget to paste again your code so that it keeps indented. Otherwise I won't do the effort of reading it.

Read only

Former Member
0 Likes
2,016
*&---------------------------------------------------------------------*
*& Report  Z_R020_OOPS_ABAP_ALV
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*


REPORT  Z_R020_OOPS_ABAP_ALV.
CLASS CL_EVENT_HANDLER DEFINITION DEFERRED.
PARAMETERS: P_MATNR TYPE MATNR,
            P_MTART TYPE MTART.
TYPES: BEGIN OF TY_MARA,
        MATNR TYPE MARA-MATNR,
        MTART TYPE MARA-MTART,
        MBRSH TYPE MARA-MBRSH,
        MEINS TYPE MARA-MEINS,
      END OF TY_MARA.
TYPES: BEGIN OF TY_MAKT,
        MATNR TYPE MAKT-MATNR,
        SPRAS TYPE MAKT-SPRAS,
        MAKTX TYPE MAKT-MAKTX,
      END OF TY_MAKT.
DATA: ALV_COUNT TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
      ALV_COUNT2 TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
      ALV_GRID TYPE REF TO CL_GUI_ALV_GRID,
      ALV_GRID2 TYPE REF TO CL_GUI_ALV_GRID,
      IT_MARA TYPE TABLE OF TY_MARA,
      WA_MARA TYPE TY_MARA,
      IT_MAKT TYPE TABLE OF TY_MAKT,
      WA_MAKT TYPE TY_MAKT,
      IT_FCAT TYPE LVC_T_FCAT,
      IT_FCAT2 TYPE LVC_T_FCAT,
      WA_FCAT TYPE LVC_S_FCAT,
      WA_FCAT2 TYPE LVC_S_FCAT,
      OBJ TYPE REF TO CL_EVENT_HANDLER.
CLASS CL_EVENT_HANDLER DEFINITION.
  PUBLIC SECTION.
  METHODS: HANDLE_DOUBLE_CLICK FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID
      IMPORTING E_ROW.
   ENDCLASS.


CLASS CL_EVENT_HANDLER IMPLEMENTATION.
  METHOD: HANDLE_DOUBLE_CLICK.
CLEAR IT_MAKT.
CLEAR ALV_COUNT2.
     READ TABLE IT_mara INTO wa_mara INDEX e_row-index.
    SELECT MATNR SPRAS MAKTX FROM makt
             INTO TABLE iT_makt
             WHERE matnr = wa_mara-matnr.
      CLEAR WA_MARA.
      CALL SCREEN 9000.
   ENDMETHOD.
    ENDCLASS.


START-OF-SELECTION.
  CALL SCREEN 9000.
*&---------------------------------------------------------------------*
*&      MODULE  STATUS_9000  OUTPUT
*&---------------------------------------------------------------------*
*       TEXT
*----------------------------------------------------------------------*
MODULE STATUS_9000 OUTPUT.
  SET PF-STATUS 'ZMENU'.
  SET TITLEBAR 'ZTITLE'.
  IF ALV_COUNT IS INITIAL.
  PERFORM CREATE_OBJECT.
  PERFORM GET_DATA.
  PERFORM CREATE_FCAT.
  PERFORM DISPLAY_ALV.
   CREATE OBJECT OBJ.
  SET HANDLER OBJ->HANDLE_DOUBLE_CLICK FOR ALV_GRID.
  ELSE.
    PERFORM CREATE_OBJECT2.
    PERFORM CREATE_FCAT2.
    PERFORM DISPLAY_ALV2.
    ENDIF.
ENDMODULE.                 " STATUS_9000  OUTPUT
*&---------------------------------------------------------------------*
*&      MODULE  USER_COMMAND_9000  INPUT
*&---------------------------------------------------------------------*
*       TEXT
*----------------------------------------------------------------------*
MODULE USER_COMMAND_9000 INPUT.
  CASE SY-UCOMM.
    WHEN 'BACK' OR 'EXIT' OR 'CANCEL'.
      LEAVE TO SCREEN 0.
    WHEN OTHERS.
  ENDCASE.
ENDMODULE.                 " USER_COMMAND_9000  INPUT
*&---------------------------------------------------------------------*
*&      FORM  CREATE_OBJECT
*&---------------------------------------------------------------------*
*       TEXT
*----------------------------------------------------------------------*
*  -->  P1        TEXT
*  <--  P2        TEXT
*----------------------------------------------------------------------*
FORM CREATE_OBJECT .
  CREATE OBJECT ALV_COUNT
    EXPORTING
      CONTAINER_NAME              = 'ALV_COUNT_M'.
  IF SY-SUBRC <> 0.
  ENDIF.
  CREATE OBJECT ALV_GRID
    EXPORTING
      I_PARENT          = ALV_COUNT.
  IF SY-SUBRC <> 0.
  ENDIF.
ENDFORM.                    " CREATE_OBJECT
*&---------------------------------------------------------------------*
*&      FORM  GET_DATA
*&---------------------------------------------------------------------*
*       TEXT
*----------------------------------------------------------------------*
*  -->  P1        TEXT
*  <--  P2        TEXT
*----------------------------------------------------------------------*
FORM GET_DATA .
  IF P_MTART IS NOT INITIAL.
    SELECT  MATNR
            MTART
            MBRSH
            MEINS
       FROM MARA INTO TABLE IT_MARA WHERE
*       MATNR = P_MATNR.
      MTART = P_MTART.
    IF SY-SUBRC <> 0.
      MESSAGE 'ENTERED MATERIAL TYPE DOES NOT EXIST' TYPE 'I'.
    ENDIF.
  ELSE.
    MESSAGE 'PLEASE ENTER MATERIAL TYPE' TYPE 'I'.
  ENDIF.
ENDFORM.                    " GET_DATA
*&---------------------------------------------------------------------*
*&      FORM  DISPLAY_ALV
*&---------------------------------------------------------------------*
*       TEXT
*----------------------------------------------------------------------*
*  -->  P1        TEXT
*  <--  P2        TEXT
*----------------------------------------------------------------------*
FORM DISPLAY_ALV .
  CALL METHOD ALV_GRID->SET_TABLE_FOR_FIRST_DISPLAY
    EXPORTING
      I_STRUCTURE_NAME              =  'TY_MARA'
    CHANGING
      IT_OUTTAB                     = IT_MARA
      IT_FIELDCATALOG               = IT_FCAT.
  IF SY-SUBRC <> 0.
  ENDIF.
ENDFORM.                    " DISPLAY_ALV
*&---------------------------------------------------------------------*
*&      FORM  CREATE_FCAT
*&---------------------------------------------------------------------*
*       TEXT
*----------------------------------------------------------------------*
*  -->  P1        TEXT
*  <--  P2        TEXT
*----------------------------------------------------------------------*
FORM CREATE_FCAT .
  WA_FCAT-COL_POS = '1'.
  WA_FCAT-FIELDNAME = 'MATNR'.
  WA_FCAT-TABNAME  = 'IT_MARA' .
  WA_FCAT-SCRTEXT_M  = 'MATERIAL NO' .
  APPEND WA_FCAT TO IT_FCAT.
  CLEAR WA_FCAT.


  WA_FCAT-COL_POS = '2'.
  WA_FCAT-FIELDNAME = 'MTART'.
  WA_FCAT-TABNAME  = 'IT_MARA' .
  WA_FCAT-SCRTEXT_M  = 'MATERIAL TYPE' .
  APPEND WA_FCAT TO IT_FCAT.
  CLEAR WA_FCAT.


  WA_FCAT-COL_POS = '3'.
  WA_FCAT-FIELDNAME = 'MBRSH'.
  WA_FCAT-TABNAME  = 'IT_MARA' .
  WA_FCAT-SCRTEXT_M  = 'INDUSTRY SECTOR' .
  APPEND WA_FCAT TO IT_FCAT.
  CLEAR WA_FCAT.


  WA_FCAT-COL_POS = '4'.
  WA_FCAT-FIELDNAME = 'MEINS'.
  WA_FCAT-TABNAME  = 'IT_MARA' .
  WA_FCAT-SCRTEXT_M  = 'UNIT' .
  APPEND WA_FCAT TO IT_FCAT.
  CLEAR WA_FCAT.


  WA_FCAT-COL_POS = '5'.
  WA_FCAT-FIELDNAME = 'ERNAM'.
  WA_FCAT-TABNAME  = 'IT_MARA' .
  WA_FCAT-SCRTEXT_M  = 'DATE' .
  APPEND WA_FCAT TO IT_FCAT.
  CLEAR WA_FCAT.
ENDFORM.                    " CREATE_FCAT


*&---------------------------------------------------------------------*
*&      Form  CREATE_OBJECT2
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM CREATE_OBJECT2.


  CREATE OBJECT ALV_COUNT2
  EXPORTING
    CONTAINER_NAME              = 'ALV_COUNT_S'.
IF SY-SUBRC <> 0.
ENDIF.
CREATE OBJECT ALV_GRID2
  EXPORTING
    I_PARENT          = ALV_COUNT2.
*CLEAR ALV_GRID2.
IF SY-SUBRC <> 0.
ENDIF.
ENDFORM.                    " CREATE_OBJECT2
                  " GET_DATA2
*&---------------------------------------------------------------------*
*&      Form  CREATE_FCAT2
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM CREATE_FCAT2 .
   CLEAR IT_FCAT2.
   WA_FCAT2-COL_POS = '1'.
  WA_FCAT2-FIELDNAME = 'MATNR'.
  WA_FCAT2-TABNAME  = 'IT_MAKT' .
  WA_FCAT2-SCRTEXT_M  = 'MATERIAL NO' .
  APPEND WA_FCAT2 TO IT_FCAT2.
  CLEAR WA_FCAT2.




  WA_FCAT2-COL_POS = '2'.
  WA_FCAT2-FIELDNAME = 'SPRAS'.
  WA_FCAT2-TABNAME  = 'IT_MAKT' .
  WA_FCAT2-SCRTEXT_M  = 'LANGUAEGE KEY' .
  APPEND WA_FCAT2 TO IT_FCAT2.
  CLEAR WA_FCAT2.


  WA_FCAT2-COL_POS = '3'.
  WA_FCAT2-FIELDNAME = 'MAKTX'.
  WA_FCAT2-TABNAME  = 'IT_MAKT' .
  WA_FCAT2-SCRTEXT_M  = 'DISCRIPTION' .
  APPEND WA_FCAT2 TO IT_FCAT2.
  CLEAR WA_FCAT2.
ENDFORM.                    " CREATE_FCAT2
*&---------------------------------------------------------------------*
*&      Form  DISPLAY_ALV2
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM DISPLAY_ALV2 .
CALL METHOD ALV_GRID2->SET_TABLE_FOR_FIRST_DISPLAY
  EXPORTING
    I_STRUCTURE_NAME              = 'TY_MAKT'
  CHANGING
    IT_OUTTAB                     = IT_MAKT
    IT_FIELDCATALOG               = IT_FCAT2.
IF SY-SUBRC <> 0.
  MESSAGE 'MATERIAL DETAILS NOT FOUND' TYPE 'E'.
ENDIF.
ENDFORM.                    " DISPLAY_ALV2




this is the code I have written in programme.
Read only

MateuszAdamus
Active Contributor
0 Likes
2,016

Hello

When double clicked for the first time you create a new ALV2 object. When double clicked second and next times, you also create ALV2 object.

Try to rewrite your code/logic so that you can reuse the ALV2 object created already.

Kind regards,
Mateusz
Read only

touzik_itc
Active Participant
2,016

It is wrong to create every time a new dynpro screen calling CALL SCREEN in the event handler.

The ALV should be updated using

ALV_COUNT2->REFRESH( REFRESH_MODE = IF_SALV_C_REFRESH=>FULL ).