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

ALV grid using oops concepts

Former Member
0 Likes
451

HI all,

Is it necessary to use container for ALV grid using classes.If not then please help me with a sample code.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
423

Hi,

without creating a container in a screen u can create ALV grid through oops.

for that we have to use docking controller

example


DATA:G_DOCKING_CONTAINER_1 TYPE REF TO CL_GUI_DOCKING_CONTAINER,
     g_grid TYPE REF TO CL_GUI_ALV_GRID.

DATA:itab like sflight occurs 0 with header line,
      okcode like sy-ucomm.

select * from sflight into table itab.

set screen 101.

MODULE STATUS_0101 OUTPUT.
  SET PF-STATUS 'MENU'.
  SET TITLEBAR 'TIT'.
  perform create_and_init_controls.
ENDMODULE.                 " STATUS_0101  OUTPUT


FORM create_and_init_controls .
  CREATE OBJECT G_DOCKING_CONTAINER_1
    EXPORTING
      REPID       = sy-repid
      DYNNR       = '101'
      SIDE        = cl_gui_docking_container=>DOCK_AT_top
      EXTENSION   = 100.

  CREATE OBJECT G_GRID
    EXPORTING
      I_PARENT          = G_DOCKING_CONTAINER_1.

  CALL METHOD G_GRID->SET_TABLE_FOR_FIRST_DISPLAY
    EXPORTING
      I_STRUCTURE_NAME              = 'SFLIGHT'
    CHANGING
    IT_OUTTAB                     = itab[].
ENDFORM.                    " create_and_init_controls


MODULE user_command_0101 INPUT.
  CASE okcode.
    WHEN 'BACK'.
      SET SCREEN 0.
  ENDCASE.
ENDMODULE.                 " user_command_0101  INPUT

flow logic of screen 101:


PROCESS BEFORE OUTPUT.
 MODULE STATUS_0101.

PROCESS AFTER INPUT.
 MODULE user_command_0101.

rgds,

bharat.

3 REPLIES 3
Read only

former_member210123
Active Participant
0 Likes
423

REPORT z_alv_using_oops_conepts MESSAGE-ID z_OOPS.

TABLES: ekko, ekpo.

CLASS lcl_event_receiver DEFINITION DEFERRED.

DATA: ok_code TYPE sy-ucomm,

gx_fcat1 TYPE lvc_s_fcat,

gt_fcat1 TYPE STANDARD TABLE OF lvc_s_fcat,

gx_fcat2 TYPE lvc_s_fcat,

gt_fcat2 TYPE STANDARD TABLE OF lvc_s_fcat,

gx_layout1 TYPE lvc_s_layo,

gx_layout2 TYPE lvc_s_layo,

gx_variant TYPE disvariant,

g_custom_container1 TYPE REF TO cl_gui_custom_container,

g_custom_container2 TYPE REF TO cl_gui_custom_container,

grid1 TYPE REF TO cl_gui_alv_grid,

grid2 TYPE REF TO cl_gui_alv_grid,

g_container1 TYPE scrfname VALUE 'MAIN_REPORT_LIST',

g_container2 TYPE scrfname VALUE 'SECOND_REPORT_LIST',

gv_event_rec1 TYPE REF TO lcl_event_receiver,

gv_event_rec2 TYPE REF TO lcl_event_receiver,

gv_repid TYPE sy-repid,

gt_final1 TYPE STANDARD TABLE OF ekko,

gt_final2 TYPE STANDARD TABLE OF ekpo,

gt_final3 TYPE STANDARD TABLE OF ekpo,

gx_final TYPE ekko,

gx_final1 TYPE ekpo.

INITIALIZATION.

----


  • SELECTION-SCREEN *

----


SELECTION-SCREEN BEGIN OF BLOCK blk3 WITH FRAME .

SELECT-OPTIONS:

s_ebeln FOR ekko-ebeln obligatory,

s_ebelp FOR ekpo-ebelp,

s_bukrs FOR ekko-bukrs,

s_bsart FOR ekko-bsart.

SELECTION-SCREEN END OF BLOCK blk3.

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

  • LOCAL CLASSES: Definition

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

*===============================================================

  • class lcl_event_receiver: local class to

  • define and handle own functions.

*

  • Definition:

  • ~~~~~~~~~~~

CLASS lcl_event_receiver DEFINITION.

PUBLIC SECTION.

METHODS:

hotspot_click1

FOR EVENT hotspot_click OF cl_gui_alv_grid

IMPORTING e_row_id

e_column_id,

hotspot_click2

FOR EVENT hotspot_click OF cl_gui_alv_grid

IMPORTING e_row_id

e_column_id.

PRIVATE SECTION.

ENDCLASS. "lcl_event_receiver DEFINITION

----


  • CLASS lcl_event_receiver IMPLEMENTATION

----


*

----


CLASS lcl_event_receiver IMPLEMENTATION.

*----


METHOD hotspot_click1.

DATA: lv_tabix TYPE sy-tabix,

lx_final TYPE ekko.

READ TABLE gt_final1 INTO gx_final INDEX e_row_id.

IF sy-subrc = 0.

gt_final3 = gt_final2.

DELETE gt_final3 WHERE ebeln NE gx_final-ebeln.

IF NOT g_custom_container2 IS INITIAL.

CALL METHOD grid2->refresh_table_display.

CALL METHOD grid1->refresh_table_display.

ENDIF.

ELSE.

MESSAGE s000 WITH text-003.

LEAVE LIST-PROCESSING.

ENDIF.

ENDMETHOD. "hotspot_click1

METHOD hotspot_click2.

READ TABLE gt_final3 INTO gx_final1 INDEX e_row_id.

IF sy-subrc = 0.

SET PARAMETER ID 'BES' FIELD gx_final-ebeln.

CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.

ENDIF.

ENDMETHOD. "button_click1

ENDCLASS. "lcl_event_receiver IMPLEMENTATION

----


  • START-OF-SELECTION *

----


START-OF-SELECTION.

SELECT * FROM ekko INTO TABLE gt_final1 WHERE ebeln IN s_ebeln

AND bukrs IN s_bukrs

AND bsart IN s_bsart.

IF sy-subrc = 0.

SELECT * FROM ekpo INTO TABLE gt_final2 FOR ALL ENTRIES IN gt_final1

WHERE ebeln = gt_final1-ebeln

AND ebelp IN s_ebelp.

IF sy-subrc = 0.

gt_final3 = gt_final2.

ENDIF.

ENDIF.

PERFORM sub_get_fieldcat CHANGING gt_fcat1.

PERFORM sub_get_fieldcat CHANGING gt_fcat2.

----


  • END-OF-SELECTION *

----


END-OF-SELECTION.

PERFORM display_process.

CALL SCREEN 9000.

----


  • MODULE pbo OUTPUT

----


*

----


MODULE pbo OUTPUT.

SET PF-STATUS 'MAIN100'.

gx_layout1-grid_title = 'Purchase Order Header'.

gx_layout1-zebra = 'X'.

gx_layout1-info_fname = 'COLOR_LINE'.

gx_layout1-sel_mode = 'X'.

gx_layout2-grid_title = 'Purchase Order Items'.

gx_layout2-zebra = 'X'.

gx_layout1-stylefname = 'CB'.

  • gs_layout1-excp_led = gc_check.

  • gs_layout1-excp_group = gc_check.

gv_repid = sy-repid.

gx_variant-report = gv_repid.

READ TABLE gt_final1 INTO gx_final INDEX 1.

IF sy-subrc = 0.

DELETE gt_final3 WHERE ebeln NE gx_final-ebeln.

ENDIF.

IF g_custom_container1 IS INITIAL.

CREATE OBJECT g_custom_container1

EXPORTING

container_name = g_container1.

CREATE OBJECT grid1

EXPORTING

i_parent = g_custom_container1.

CALL METHOD grid1->set_table_for_first_display

EXPORTING

is_layout = gx_layout1

is_variant = gx_variant

i_save = 'U'

i_default = 'X'

i_structure_name = 'EKKO'

CHANGING

it_outtab = gt_final1

it_fieldcatalog = gt_fcat1.

CALL METHOD cl_gui_control=>set_focus

EXPORTING

control = grid1.

ENDIF.

IF g_custom_container2 IS INITIAL.

CREATE OBJECT g_custom_container2

EXPORTING

container_name = g_container2.

CREATE OBJECT grid2

EXPORTING

i_parent = g_custom_container2.

CALL METHOD grid2->set_table_for_first_display

EXPORTING

is_layout = gx_layout2

is_variant = gx_variant

i_save = 'U'

i_default = 'X'

i_structure_name = 'EKPO'

CHANGING

it_outtab = gt_final3

it_fieldcatalog = gt_fcat2.

CALL METHOD cl_gui_control=>set_focus

EXPORTING

control = grid2.

ENDIF.

CREATE OBJECT gv_event_rec1.

SET HANDLER gv_event_rec1->hotspot_click1 FOR grid1.

  • CREATE OBJECT gv_event_rec2.

SET HANDLER gv_event_rec1->hotspot_click2 FOR grid2.

IF gt_final2 IS INITIAL.

MESSAGE i000 WITH 'No Items exist for the Purchase Order'.

ENDIF.

ENDMODULE. "PBO OUTPUT

----


  • MODULE PAI INPUT *

----


MODULE pai INPUT.

  • To react on oi_custom_events:

CALL METHOD cl_gui_cfw=>dispatch.

CASE ok_code.

WHEN 'EXIT'.

PERFORM exit_program.

LEAVE PROGRAM.

WHEN 'BACK'.

LEAVE TO SCREEN 0.

WHEN 'CANCEL'.

LEAVE TO SCREEN 0.

ENDCASE.

CLEAR ok_code.

ENDMODULE. "PAI INPUT

----


  • FORM EXIT_PROGRAM *

----


FORM exit_program.

CALL METHOD grid1->free.

CALL METHOD grid2->free.

CALL METHOD cl_gui_cfw=>flush.

IF sy-subrc NE 0.

CALL FUNCTION 'POPUP_TO_INFORM'

EXPORTING

titel = gv_repid

txt2 = sy-subrc

txt1 = 'Error in Flush'(009).

ENDIF.

ENDFORM. "EXIT_PROGRAM

&----


*& Form display_process

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM display_process .

DATA: a LIKE sy-ucomm.

DO 100 TIMES.

DO 300 TIMES.

GET TIME.

ENDDO.

a(3) = sy-index.a+3 = '%'.

CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'

EXPORTING

percentage = sy-index

text = a.

ENDDO.

ENDFORM. " display_process

&----


*& Form sub_get_fieldcat

&----


  • text

----


  • <--P_GT_FCAT1 text

----


FORM sub_get_fieldcat CHANGING lt_fcat TYPE lvc_t_fcat.

gx_fcat1-fieldname = 'EBELN'.

gx_fcat1-tabname = 'gt_final1'.

gx_fcat1-hotspot = 'X'.

APPEND gx_fcat1 TO lt_fcat.

ENDFORM. " sub_get_fieldcat

Read only

Former Member
0 Likes
424

Hi,

without creating a container in a screen u can create ALV grid through oops.

for that we have to use docking controller

example


DATA:G_DOCKING_CONTAINER_1 TYPE REF TO CL_GUI_DOCKING_CONTAINER,
     g_grid TYPE REF TO CL_GUI_ALV_GRID.

DATA:itab like sflight occurs 0 with header line,
      okcode like sy-ucomm.

select * from sflight into table itab.

set screen 101.

MODULE STATUS_0101 OUTPUT.
  SET PF-STATUS 'MENU'.
  SET TITLEBAR 'TIT'.
  perform create_and_init_controls.
ENDMODULE.                 " STATUS_0101  OUTPUT


FORM create_and_init_controls .
  CREATE OBJECT G_DOCKING_CONTAINER_1
    EXPORTING
      REPID       = sy-repid
      DYNNR       = '101'
      SIDE        = cl_gui_docking_container=>DOCK_AT_top
      EXTENSION   = 100.

  CREATE OBJECT G_GRID
    EXPORTING
      I_PARENT          = G_DOCKING_CONTAINER_1.

  CALL METHOD G_GRID->SET_TABLE_FOR_FIRST_DISPLAY
    EXPORTING
      I_STRUCTURE_NAME              = 'SFLIGHT'
    CHANGING
    IT_OUTTAB                     = itab[].
ENDFORM.                    " create_and_init_controls


MODULE user_command_0101 INPUT.
  CASE okcode.
    WHEN 'BACK'.
      SET SCREEN 0.
  ENDCASE.
ENDMODULE.                 " user_command_0101  INPUT

flow logic of screen 101:


PROCESS BEFORE OUTPUT.
 MODULE STATUS_0101.

PROCESS AFTER INPUT.
 MODULE user_command_0101.

rgds,

bharat.

Read only

p291102
Active Contributor
0 Likes
423

Hi,

Following report is the sample report for OOPS concept.

type-pools : slis.
include <icon>.
TABLES : EKKO,EKPO,MAKT.

DATA : BEGIN OF IEKKO OCCURS 0,
       EBELN LIKE EKKO-EBELN,
       AEDAT LIKE EKKO-AEDAT,
       BEDAT LIKE EKKO-BEDAT,
       END OF IEKKO.

DATA : BEGIN OF IEKPO OCCURS 0,
       EBELN LIKE EKPO-EBELN,
       EBELP LIKE EKPO-EBELP,
       MATNR LIKE EKPO-MATNR,
       MENGE LIKE EKPO-MENGE,
       END OF IEKPO.

DATA : BEGIN OF IMAKT OCCURS 0,
       MATNR LIKE MAKT-MATNR,
       MAKTX LIKE MAKT-MAKTX,
       END OF IMAKT.

DATA : BEGIN OF IFINAL OCCURS 0,
       BOX,
       EBELN LIKE EKKO-EBELN,
       EBELP LIKE EKPO-EBELP,
       AEDAT LIKE EKKO-AEDAT,
       BEDAT LIKE EKKO-BEDAT,
       MATNR LIKE EKPO-MATNR,
       MENGE LIKE EKPO-MENGE,
       MAKTX LIKE MAKT-MAKTX,
       END OF IFINAL.
*DATA : IFINALFUL LIKE STANDARD TABLE OF
DATA : OKCODE LIKE SY-UCOMM,
       CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
       GRID TYPE REF TO CL_GUI_ALV_GRID,
       text TYPE sdydo_text_element,
       o_dd_doc TYPE REF TO cl_dd_document,
       o_top type ref to cl_gui_container,
       split1 type ref to cl_gui_easy_splitter_container.

data : split type ref to cl_gui_splitter_container,
       contaner1 type ref to cl_gui_container,
       contaner2 type ref to cl_gui_container,
       contaner3 type ref to cl_gui_container,
       contaner4 type ref to cl_gui_container,
       grid2     type ref to cl_gui_alv_grid.



CLASS lcl_event_receiver DEFINITION DEFERRED.

DATA: o_event_receiver TYPE REF TO lcl_event_receiver.

DATA : IFIELDCAT TYPE LVC_T_FCAT,
       WFIELDCAT TYPE LVC_S_FCAT,
       ILAYOUT   TYPE LVC_S_LAYO,
       ISORT     TYPE LVC_T_SORT,
       WSORT     TYPE LVC_S_SORT.

data : ilist type slis_t_listheader,
       wlist type slis_listheader.

SELECT-OPTIONS : S_AEDAT FOR EKKO-AEDAT.
CLASS lcl_event_receiver DEFINITION.
PUBLIC SECTION.
METHODS:
handle_top_of_page FOR EVENT top_of_page OF cl_gui_alv_grid
IMPORTING e_dyndoc_id,
handle_user_command for event user_command of cl_gui_alv_grid importing e_ucomm,
handle_toolbar for event toolbar of cl_gui_alv_grid importing e_object e_interactive.
ENDCLASS.


CLASS lcl_event_receiver IMPLEMENTATION.

METHOD handle_top_of_page.

text = 'Test Top of page'.

CALL METHOD e_dyndoc_id->add_text
EXPORTING text = text
sap_fontsize = 'LARGE'
sap_color   = 'LIST_KEY_INV'
*sap_fontstyle = 'LIST_HEADING'
*sap_style = 'HEADING'
.

CALL METHOD E_DYNDOC_ID->UNDERLINE
    .

CALL METHOD E_DYNDOC_ID->NEW_LINE
*  EXPORTING
*    REPEAT =
    .

clear text.
text = 'Test Top of page 2nd line & space'.

CALL METHOD e_dyndoc_id->add_text
EXPORTING text = text
sap_fontsize = 'LARGE'
sap_color   = 'LIST_KEY_INV'.

CALL METHOD e_dyndoc_id->display_document
EXPORTING parent = CONTANER3.


ENDMETHOD. "handle_top_of_page

method handle_user_command.
 case e_ucomm.
 when 'DETAIL'.
   DATA : LT_ROWS TYPE LVC_T_ROW.
   CALL METHOD GRID->GET_SELECTED_ROWS
     IMPORTING
       ET_INDEX_ROWS = LT_ROWS
*       ET_ROW_NO     =
       .
   IF SY-SUBRC NE 0.
     CALL FUNCTION 'POPUP_TO_INFORM'
       EXPORTING
         TITEL         = 'Message'
         TXT1          = 'Please choose a row'
         TXT2          = ''
*        TXT3          = ' '
*        TXT4          = ' '
               .

   ENDIF.
  endcase.
endmethod.

method handle_toolbar.
data : wtoolbar type stb_button.
clear wtoolbar.
wtoolbar-butn_type = 3.
append wtoolbar to e_object->mt_toolbar.
clear wtoolbar.
wtoolbar-function = 'DETAIL'.
wtoolbar-ICON = ICON_OVERVIEW.
wtoolbar-QUICKINFO = 'Detail list'.
wtoolbar-TEXT = 'Detail list'.
append wtoolbar to e_object->mt_toolbar.
endmethod.

ENDCLASS. "lcl_application_f4 IMPLEMENTATION



START-OF-SELECTION.
  PERFORM FILL_EKKO.
  PERFORM FILL_EKPO.
  PERFORM FILL_MAKT.
  PERFORM BUILD_FINALTAB.
  PERFORM BUILD_FIELDCAT.
  PERFORM BUILD_SORT.
  PERFORM BUILD_LAYOUT.
  CALL SCREEN 100.
*&---------------------------------------------------------------------*
*&      Form  fill_ekko
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FILL_EKKO .
  SELECT EBELN AEDAT BEDAT INTO TABLE IEKKO FROM EKKO WHERE AEDAT IN S_AEDAT.
ENDFORM.                    " fill_ekko
*&---------------------------------------------------------------------*
*&      Form  fill_ekpo
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FILL_EKPO .
  IF NOT IEKKO[] IS INITIAL.
    SELECT EBELN EBELP MATNR MENGE INTO TABLE IEKPO FROM EKPO FOR ALL ENTRIES IN IEKKO
                                        WHERE EBELN = IEKKO-EBELN.
  ENDIF.
ENDFORM.                    " fill_ekpo
*&---------------------------------------------------------------------*
*&      Form  fill_makt
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FILL_MAKT .
  IF NOT IEKPO[] IS INITIAL.
    SELECT MATNR MAKTX FROM MAKT INTO TABLE IMAKT FOR ALL ENTRIES IN IEKPO WHERE
                                                  MATNR = IEKPO-MATNR.
  ENDIF.
ENDFORM.                    " fill_makt
*&---------------------------------------------------------------------*
*&      Form  BUILD_FINALTAB
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM BUILD_FINALTAB .
LOOP AT IEKPO.
  IFINAL-MATNR = IEKPO-MATNR.
  IFINAL-MENGE = IEKPO-MENGE.
  IFINAL-EBELP = IEKPO-EBELP.
  IFINAL-EBELN = IEKPO-EBELN.
  READ TABLE IEKKO WITH KEY EBELN = IEKPO-EBELN.
   IF SY-SUBRC = 0.
     IFINAL-AEDAT = IEKKO-AEDAT.
     IFINAL-BEDAT = IEKKO-BEDAT.
   ENDIF.
  READ TABLE IMAKT WITH KEY MATNR = IEKPO-MATNR.
   IF SY-SUBRC = 0.
    IFINAL-MAKTX = IMAKT-MAKTX.
   ENDIF.
  APPEND IFINAL.
  CLEAR : IFINAL,IEKKO,IMAKT,IEKPO.
ENDLOOP.
ENDFORM.                    " BUILD_FINALTAB
*&---------------------------------------------------------------------*
*&      Form  BUILD_FIELDCAT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM BUILD_FIELDCAT .
WFIELDCAT-FIELDNAME = 'EBELN'.
WFIELDCAT-COL_POS   = 1.
WFIELDCAT-OUTPUTLEN = 10.
WFIELDCAT-COLTEXT   = 'Document No'.
APPEND WFIELDCAT TO IFIELDCAT.
CLEAR WFIELDCAT.

WFIELDCAT-FIELDNAME = 'EBELP'.
WFIELDCAT-COL_POS   = 2.
WFIELDCAT-OUTPUTLEN = 5.
WFIELDCAT-COLTEXT   = 'Item No'.
APPEND WFIELDCAT TO IFIELDCAT.
CLEAR WFIELDCAT.

WFIELDCAT-FIELDNAME = 'AEDAT'.
WFIELDCAT-COL_POS   = 3.
WFIELDCAT-OUTPUTLEN = 8.
WFIELDCAT-COLTEXT   = 'Creatn dat'.
APPEND WFIELDCAT TO IFIELDCAT.
CLEAR WFIELDCAT.

WFIELDCAT-FIELDNAME = 'BEDAT'.
WFIELDCAT-COL_POS   = 4.
WFIELDCAT-OUTPUTLEN = 8.
WFIELDCAT-COLTEXT   = 'Delv dat'.
APPEND WFIELDCAT TO IFIELDCAT.
CLEAR WFIELDCAT.

WFIELDCAT-FIELDNAME = 'MATNR'.
WFIELDCAT-COL_POS   = 5.
WFIELDCAT-OUTPUTLEN = 18.
WFIELDCAT-COLTEXT   = 'Material no'.
APPEND WFIELDCAT TO IFIELDCAT.
CLEAR WFIELDCAT.

WFIELDCAT-FIELDNAME = 'MAKTX'.
WFIELDCAT-COL_POS   = 6.
WFIELDCAT-OUTPUTLEN = 32.
WFIELDCAT-COLTEXT   = 'Material desc.'.
APPEND WFIELDCAT TO IFIELDCAT.
CLEAR WFIELDCAT.

WFIELDCAT-FIELDNAME = 'MENGE'.
WFIELDCAT-COL_POS   = 7.
WFIELDCAT-OUTPUTLEN = 16.
wfieldcat-just      = 'L'.
WFIELDCAT-COLTEXT   = 'Quantity'.
WFIELDCAT-DO_SUM = 'X'.
APPEND WFIELDCAT TO IFIELDCAT.
CLEAR WFIELDCAT.


ENDFORM.                    " BUILD_FIELDCAT
*&---------------------------------------------------------------------*
*&      Form  BUILD_SORT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM BUILD_SORT .
WSORT-FIELDNAME = 'EBELN'.
WSORT-SPOS = 1.
WSORT-UP = 'X'.
WSORT-GROUP = 'UL'.
WSORT-SUBTOT = 'X'.
APPEND WSORT TO ISORT.
ENDFORM.                    " BUILD_SORT
*&---------------------------------------------------------------------*
*&      Module  PBO  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE PBO OUTPUT.
SET PF-STATUS 'ZSPD'.
    CREATE OBJECT CONTAINER
      EXPORTING
*        PARENT                      =
        CONTAINER_NAME              = 'CONTAINER'
*        STYLE                       =
*        LIFETIME                    = lifetime_default
*        REPID                       =
*        DYNNR                       =
*        NO_AUTODEF_PROGID_DYNNR     =
      EXCEPTIONS
        CNTL_ERROR                  = 1
        CNTL_SYSTEM_ERROR           = 2
        CREATE_ERROR                = 3
        LIFETIME_ERROR              = 4
        LIFETIME_DYNPRO_DYNPRO_LINK = 5
        others                      = 6
        .
    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 SPLIT
  EXPORTING
*    LINK_DYNNR        =
*    LINK_REPID        =
*    SHELLSTYLE        =
*    LEFT              =
*    TOP               = 3
*    WIDTH             = 5
*    HEIGHT            = 3
*    METRIC            = cntl_metric_dynpro
*    ALIGN             = 15
    PARENT            = container
    ROWS              = 1
    COLUMNS           = 1
*    NO_AUTODEF_PROGID_DYNNR =
*    NAME              =
  EXCEPTIONS
    CNTL_ERROR        = 1
    CNTL_SYSTEM_ERROR = 2
    others            = 3
    .
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

CALL METHOD split->set_border
EXPORTING
border = space.

CALL METHOD split->get_container
EXPORTING
row = 1
column = 1
RECEIVING
container = contaner1.

CALL METHOD split->set_row_height
EXPORTING
id = 1
height = 1
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
OTHERS = 3 .

CREATE OBJECT split1
EXPORTING
parent = contaner1
SASH_POSITION     = 15
with_border = 1
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
others = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

contaner3 = split1->top_left_container.
contaner4 = split1->bottom_right_container.

*contaner3 = container->SCREEN0. "DEFAULT_SCREEN." PARENT.

CREATE OBJECT GRID
  EXPORTING
*    I_SHELLSTYLE      = 0
*    I_LIFETIME        =
    I_PARENT          = CONTANER4
*    I_APPL_EVENTS     = space
*    I_PARENTDBG       =
*    I_APPLOGPARENT    =
*    I_GRAPHICSPARENT  =
*    I_NAME            =
  EXCEPTIONS
    ERROR_CNTL_CREATE = 1
    ERROR_CNTL_INIT   = 2
    ERROR_CNTL_LINK   = 3
    ERROR_DP_CREATE   = 4
    others            = 5
    .
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 o_event_receiver.
SET HANDLER o_event_receiver->handle_top_of_page FOR GRID.
set handler o_event_receiver->handle_user_command for grid.
set handler o_event_receiver->handle_toolbar for grid.

CREATE OBJECT o_dd_doc EXPORTING style = 'ALV_GRID'
no_margins = 'X'.


CALL METHOD GRID->SET_TABLE_FOR_FIRST_DISPLAY
  EXPORTING
*    I_BUFFER_ACTIVE               =
*    I_BYPASSING_BUFFER            =
*    I_CONSISTENCY_CHECK           =
*    I_STRUCTURE_NAME              =
*    IS_VARIANT                    =
*    I_SAVE                        =
*    I_DEFAULT                     = 'X'
    IS_LAYOUT                     = ILAYOUT
*    IS_PRINT                      =
*    IT_SPECIAL_GROUPS             =
*    IT_TOOLBAR_EXCLUDING          =
*    IT_HYPERLINK                  =
*    IT_ALV_GRAPHICS               =
*    IT_EXCEPT_QINFO               =
  CHANGING
    IT_OUTTAB                     = IFINAL[]
    IT_FIELDCATALOG               = IFIELDCAT
*    IT_SORT                       = ISORT
*    IT_FILTER                     =
  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.

CALL METHOD GRID->SET_TOOLBAR_INTERACTIVE.

CALL METHOD GRID->list_processing_events
EXPORTING
i_event_name = 'TOP_OF_PAGE'
i_dyndoc_id = o_dd_doc.


ENDMODULE.                 " PBO  OUTPUT
*&---------------------------------------------------------------------*
*&      Module  PAI  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE PAI INPUT.
CASE OKCODE.
WHEN 'BACK' OR 'EXIT'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE.                 " PAI  INPUT
*&---------------------------------------------------------------------*
*&      Form  BUILD_LAYOUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM BUILD_LAYOUT .
ILAYOUT-ZEBRA = 'X'.
ILAYOUT-SEL_MODE = 'A'.
ENDFORM.                    " BUILD_LAYOUT

Thanks,

Sankar M