2021 Mar 25 2:43 PM
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?
2021 Mar 25 3:00 PM
Hello
You need to show your code if you want to get any help.
Kind regards,2021 Mar 26 4:25 PM
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
2021 Mar 26 7:32 PM
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.
2021 Mar 27 12:42 PM
*&---------------------------------------------------------------------*
*& 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.
2021 Mar 27 1:17 PM
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,2021 Mar 27 2:12 PM
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 ).