You are on page 1of 4

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

*&  Include           ZOOPS_INTERACTIVE_2ALVS_TOP
*&---------------------------------------------------------------------*
CLASS LCL_ABAP DEFINITION DEFERRED .
DATA : I_ZVBAK04 TYPE TABLE OF ZVBAK04.
DATA : WA_ZVBAK04 TYPE  ZVBAK04 .
DATA : I_ZVBAP04 TYPE TABLE OF  ZVBAP04 .
DATA : WA_ZVBAP04 TYPE  ZVBAP04 .
DATA : ALV_CONT TYPE REF TO  CL_GUI_CUSTOM_CONTAINER.    "FOR VBAK
DATA : ALV_GRID TYPE REF TO CL_GUI_ALV_GRID.
DATA : ALV_CONT2 TYPE REF TO  CL_GUI_CUSTOM_CONTAINER.   " FOR VBAP
DATA : ALV_GRID2 TYPE REF TO CL_GUI_ALV_GRID.
DATA : OBJ TYPE REF TO LCL_ABAP .

***************************************************************************
" SELECT OPTIONS.
************************************************************************

*&---------------------------------------------------------------------*
*&  Include           ZOOPS_INTERACTIVE_2ALVS_SEL
*&---------------------------------------------------------------------*
TABLES: ZVBAK04,ZVBAP04.
SELECT-OPTIONS SO_VBELN FOR ZVBAK04-VBELN.

*----------------------------------------------------------------------*
*       CLASS LCL_EVENT_HANDLER DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS LCL_ABAP DEFINITION .
  PUBLIC SECTION .
    METHODS : ZVBAK04_METHOD
      FOR EVENT DOUBLE_CLICK
                OF CL_GUI_ALV_GRID
      IMPORTING E_ROW .
ENDCLASS.                    "LCL_EVENT_HANDLER DEFINITION

START-OF-SELECTION.
  CALL SCREEN 9001.     " CREATE TWO CONTAINER

*&---------------------------------------------------------------------*
*&      Module  STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE STATUS_9001 OUTPUT.
  SET PF-STATUS '9001'.
  SET TITLEBAR 'Sales order'.
  IF ALV_CONT IS INITIAL .
    PERFORM CREATE_OBJ.
    PERFORM GET_DATA.
    PERFORM DISPLAY_ALV.

    CREATE OBJECT OBJ.
    SET HANDLER OBJ->ZVBAK04_METHOD FOR ALV_GRID .

  ELSE.
    PERFORM CREATE_OBJ2.
    PERFORM DISPLAY_ALV2.
  ENDIF .

ENDMODULE.   " STATUS_0100  OUTPUT

*&---------------------------------------------------------------------*
*&      Form  create_obj
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM CREATE_OBJ.
  CREATE OBJECT ALV_CONT
    EXPORTING
      CONTAINER_NAME = 'ALV_CONT'.
  CREATE OBJECT ALV_GRID
    EXPORTING
      I_PARENT = ALV_CONT. "GIVE CONTAINER INSTANCE

ENDFORM.                    " create_obj

*&---------------------------------------------------------------------*
*&      Form  get_data
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM GET_DATA.

  SELECT * FROM ZVBAK04
     INTO CORRESPONDING FIELDS OF TABLE I_ZVBAK04
     WHERE VBELN IN SO_VBELN.
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 = 'ZVBAK04'
    CHANGING
      IT_OUTTAB        = I_ZVBAK04.
ENDFORM.                    " display_alv
*&---------------------------------------------------------------------*
*&      Form  create_obj2
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM CREATE_OBJ2 .
  IF ALV_CONT2 IS INITIAL . "CREATE ONLY FOR FIRST TIME
    CREATE OBJECT ALV_CONT2
      EXPORTING
        CONTAINER_NAME = 'ALV_CONT2'.
    CREATE OBJECT ALV_GRID2
      EXPORTING
        I_PARENT = ALV_CONT2. "GIVE CONTAINER INSTANCE
  ENDIF .
ENDFORM.                    " create_obj2
*&---------------------------------------------------------------------*
*&      Form  display_alv2
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM DISPLAY_ALV2 .
  CALL METHOD ALV_GRID2->SET_TABLE_FOR_FIRST_DISPLAY
    EXPORTING
      I_STRUCTURE_NAME = 'ZVBAP04'
    CHANGING
      IT_OUTTAB        = I_ZVBAP04.
*
ENDFORM.                    " display_alv2
*----------------------------------------------------------------------*
*       CLASS LCL_EVENT_HANDLER IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS LCL_ABAP IMPLEMENTATION .

METHOD   ZVBAK04_METHOD .
  CLEAR WA_ZVBAK04.
  READ TABLE I_ZVBAK04 INTO WA_ZVBAK04 INDEX E_ROW-INDEX .
  SELECT * FROM ZVBAP04
  INTO CORRESPONDING FIELDS OF TABLE I_ZVBAP04
  WHERE VBELN = WA_ZVBAK04-VBELN .
    CALL SCREEN 100.
  ENDMETHOD .                    "HANDLE_DC_EVENT

ENDCLASS   .                    "LCL_EVENT_HANDLER IMPLEMENTATION

You might also like