<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: ALV grid using oops concepts in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/alv-grid-using-oops-concepts/m-p/3705046#M892140</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;REPORT  z_alv_using_oops_conepts MESSAGE-ID z_OOPS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TABLES: ekko, ekpo.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CLASS lcl_event_receiver DEFINITION DEFERRED.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: ok_code             TYPE sy-ucomm,&lt;/P&gt;&lt;P&gt;      gx_fcat1            TYPE lvc_s_fcat,&lt;/P&gt;&lt;P&gt;      gt_fcat1            TYPE STANDARD TABLE OF lvc_s_fcat,&lt;/P&gt;&lt;P&gt;      gx_fcat2            TYPE lvc_s_fcat,&lt;/P&gt;&lt;P&gt;      gt_fcat2            TYPE STANDARD TABLE OF lvc_s_fcat,&lt;/P&gt;&lt;P&gt;      gx_layout1          TYPE lvc_s_layo,&lt;/P&gt;&lt;P&gt;      gx_layout2          TYPE lvc_s_layo,&lt;/P&gt;&lt;P&gt;      gx_variant          TYPE disvariant,&lt;/P&gt;&lt;P&gt;      g_custom_container1 TYPE REF TO cl_gui_custom_container,&lt;/P&gt;&lt;P&gt;      g_custom_container2 TYPE REF TO cl_gui_custom_container,&lt;/P&gt;&lt;P&gt;      grid1               TYPE REF TO cl_gui_alv_grid,&lt;/P&gt;&lt;P&gt;      grid2               TYPE REF TO cl_gui_alv_grid,&lt;/P&gt;&lt;P&gt;      g_container1        TYPE scrfname VALUE 'MAIN_REPORT_LIST',&lt;/P&gt;&lt;P&gt;      g_container2        TYPE scrfname VALUE 'SECOND_REPORT_LIST',&lt;/P&gt;&lt;P&gt;      gv_event_rec1       TYPE REF TO lcl_event_receiver,&lt;/P&gt;&lt;P&gt;      gv_event_rec2       TYPE REF TO lcl_event_receiver,&lt;/P&gt;&lt;P&gt;      gv_repid            TYPE sy-repid,&lt;/P&gt;&lt;P&gt;      gt_final1           TYPE STANDARD TABLE OF ekko,&lt;/P&gt;&lt;P&gt;      gt_final2           TYPE STANDARD TABLE OF ekpo,&lt;/P&gt;&lt;P&gt;      gt_final3           TYPE STANDARD TABLE OF ekpo,&lt;/P&gt;&lt;P&gt;      gx_final            TYPE ekko,&lt;/P&gt;&lt;P&gt;      gx_final1           TYPE ekpo.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;INITIALIZATION.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  SELECTION-SCREEN                                              *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN BEGIN OF BLOCK blk3 WITH FRAME .&lt;/P&gt;&lt;P&gt;SELECT-OPTIONS:&lt;/P&gt;&lt;P&gt;      s_ebeln             FOR ekko-ebeln obligatory,&lt;/P&gt;&lt;P&gt;      s_ebelp             FOR ekpo-ebelp,&lt;/P&gt;&lt;P&gt;      s_bukrs             FOR ekko-bukrs,&lt;/P&gt;&lt;P&gt;      s_bsart             FOR ekko-bsart.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN END OF BLOCK blk3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;****************************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;LOCAL CLASSES: Definition&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;****************************************************************&lt;/P&gt;&lt;P&gt;*===============================================================&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;class lcl_event_receiver: local class to&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                        define and handle own functions.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Definition:&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;~~~~~~~~~~~&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CLASS lcl_event_receiver DEFINITION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PUBLIC SECTION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    METHODS:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    hotspot_click1&lt;/P&gt;&lt;P&gt;        FOR EVENT hotspot_click OF cl_gui_alv_grid&lt;/P&gt;&lt;P&gt;            IMPORTING e_row_id&lt;/P&gt;&lt;P&gt;                      e_column_id,&lt;/P&gt;&lt;P&gt;    hotspot_click2&lt;/P&gt;&lt;P&gt;       FOR EVENT hotspot_click OF cl_gui_alv_grid&lt;/P&gt;&lt;P&gt;            IMPORTING e_row_id&lt;/P&gt;&lt;P&gt;                      e_column_id.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PRIVATE SECTION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDCLASS.                    "lcl_event_receiver DEFINITION&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      CLASS lcl_event_receiver IMPLEMENTATION&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CLASS lcl_event_receiver IMPLEMENTATION.&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  METHOD hotspot_click1.&lt;/P&gt;&lt;P&gt;    DATA: lv_tabix TYPE sy-tabix,&lt;/P&gt;&lt;P&gt;          lx_final TYPE ekko.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    READ TABLE gt_final1 INTO gx_final INDEX e_row_id.&lt;/P&gt;&lt;P&gt;    IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;      gt_final3 = gt_final2.&lt;/P&gt;&lt;P&gt;      DELETE gt_final3 WHERE ebeln NE gx_final-ebeln.&lt;/P&gt;&lt;P&gt;      IF NOT g_custom_container2 IS INITIAL.&lt;/P&gt;&lt;P&gt;        CALL METHOD grid2-&amp;gt;refresh_table_display.&lt;/P&gt;&lt;P&gt;        CALL METHOD grid1-&amp;gt;refresh_table_display.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;      MESSAGE s000 WITH text-003.&lt;/P&gt;&lt;P&gt;      LEAVE LIST-PROCESSING.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.                    "hotspot_click1&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  METHOD hotspot_click2.&lt;/P&gt;&lt;P&gt;    READ TABLE gt_final3 INTO gx_final1 INDEX e_row_id.&lt;/P&gt;&lt;P&gt;    IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;      SET PARAMETER ID 'BES' FIELD gx_final-ebeln.&lt;/P&gt;&lt;P&gt;      CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.                    "button_click1&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDCLASS.                    "lcl_event_receiver IMPLEMENTATION&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  START-OF-SELECTION                                                 *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;START-OF-SELECTION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECT * FROM ekko INTO TABLE gt_final1 WHERE ebeln IN s_ebeln&lt;/P&gt;&lt;P&gt;                                          AND   bukrs IN s_bukrs&lt;/P&gt;&lt;P&gt;                                          AND   bsart IN s_bsart.&lt;/P&gt;&lt;P&gt;  IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;   SELECT * FROM ekpo INTO TABLE gt_final2 FOR ALL ENTRIES IN gt_final1&lt;/P&gt;&lt;P&gt;                                          WHERE ebeln = gt_final1-ebeln&lt;/P&gt;&lt;P&gt;                                           AND ebelp IN s_ebelp.&lt;/P&gt;&lt;P&gt;    IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;      gt_final3 = gt_final2.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM sub_get_fieldcat CHANGING gt_fcat1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM sub_get_fieldcat CHANGING gt_fcat2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  END-OF-SELECTION                                                   *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;END-OF-SELECTION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM display_process.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL SCREEN 9000.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; MODULE pbo OUTPUT&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MODULE pbo OUTPUT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SET PF-STATUS 'MAIN100'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  gx_layout1-grid_title = 'Purchase Order Header'.&lt;/P&gt;&lt;P&gt;  gx_layout1-zebra      = 'X'.&lt;/P&gt;&lt;P&gt;  gx_layout1-info_fname = 'COLOR_LINE'.&lt;/P&gt;&lt;P&gt;  gx_layout1-sel_mode   = 'X'.&lt;/P&gt;&lt;P&gt;  gx_layout2-grid_title = 'Purchase Order Items'.&lt;/P&gt;&lt;P&gt;  gx_layout2-zebra      = 'X'.&lt;/P&gt;&lt;P&gt;  gx_layout1-stylefname = 'CB'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;gs_layout1-excp_led   = gc_check.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;gs_layout1-excp_group = gc_check.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  gv_repid = sy-repid.&lt;/P&gt;&lt;P&gt;  gx_variant-report = gv_repid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  READ TABLE gt_final1 INTO gx_final INDEX 1.&lt;/P&gt;&lt;P&gt;  IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;    DELETE gt_final3 WHERE ebeln NE gx_final-ebeln.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF g_custom_container1 IS INITIAL.&lt;/P&gt;&lt;P&gt;    CREATE OBJECT g_custom_container1&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        container_name = g_container1.&lt;/P&gt;&lt;P&gt;    CREATE OBJECT grid1&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        i_parent = g_custom_container1.&lt;/P&gt;&lt;P&gt;    CALL METHOD grid1-&amp;gt;set_table_for_first_display&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        is_layout       = gx_layout1&lt;/P&gt;&lt;P&gt;        is_variant      = gx_variant&lt;/P&gt;&lt;P&gt;        i_save          = 'U'&lt;/P&gt;&lt;P&gt;        i_default       = 'X'&lt;/P&gt;&lt;P&gt;        i_structure_name = 'EKKO'&lt;/P&gt;&lt;P&gt;      CHANGING&lt;/P&gt;&lt;P&gt;        it_outtab       = gt_final1&lt;/P&gt;&lt;P&gt;        it_fieldcatalog = gt_fcat1.&lt;/P&gt;&lt;P&gt;    CALL METHOD cl_gui_control=&amp;gt;set_focus&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        control = grid1.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF g_custom_container2 IS INITIAL.&lt;/P&gt;&lt;P&gt;    CREATE OBJECT g_custom_container2&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        container_name = g_container2.&lt;/P&gt;&lt;P&gt;    CREATE OBJECT grid2&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        i_parent = g_custom_container2.&lt;/P&gt;&lt;P&gt;    CALL METHOD grid2-&amp;gt;set_table_for_first_display&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        is_layout       = gx_layout2&lt;/P&gt;&lt;P&gt;        is_variant      = gx_variant&lt;/P&gt;&lt;P&gt;        i_save          = 'U'&lt;/P&gt;&lt;P&gt;        i_default       = 'X'&lt;/P&gt;&lt;P&gt;        i_structure_name = 'EKPO'&lt;/P&gt;&lt;P&gt;      CHANGING&lt;/P&gt;&lt;P&gt;        it_outtab       = gt_final3&lt;/P&gt;&lt;P&gt;        it_fieldcatalog = gt_fcat2.&lt;/P&gt;&lt;P&gt;    CALL METHOD cl_gui_control=&amp;gt;set_focus&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        control = grid2.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CREATE OBJECT gv_event_rec1.&lt;/P&gt;&lt;P&gt;  SET HANDLER gv_event_rec1-&amp;gt;hotspot_click1 FOR grid1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; CREATE OBJECT gv_event_rec2.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  SET HANDLER gv_event_rec1-&amp;gt;hotspot_click2 FOR grid2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF gt_final2 IS INITIAL.&lt;/P&gt;&lt;P&gt;    MESSAGE i000 WITH 'No Items exist for the Purchase Order'.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDMODULE.                    "PBO OUTPUT&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      MODULE PAI INPUT                                              *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MODULE pai INPUT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;To react on oi_custom_events:&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CALL METHOD cl_gui_cfw=&amp;gt;dispatch.&lt;/P&gt;&lt;P&gt;  CASE ok_code.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    WHEN 'EXIT'.&lt;/P&gt;&lt;P&gt;      PERFORM exit_program.&lt;/P&gt;&lt;P&gt;      LEAVE PROGRAM.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    WHEN 'BACK'.&lt;/P&gt;&lt;P&gt;      LEAVE TO SCREEN 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    WHEN 'CANCEL'.&lt;/P&gt;&lt;P&gt;      LEAVE TO SCREEN 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDCASE.&lt;/P&gt;&lt;P&gt;  CLEAR ok_code.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDMODULE.                    "PAI INPUT&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM EXIT_PROGRAM                                             *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM exit_program.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL METHOD grid1-&amp;gt;free.&lt;/P&gt;&lt;P&gt;  CALL METHOD grid2-&amp;gt;free.&lt;/P&gt;&lt;P&gt;  CALL METHOD cl_gui_cfw=&amp;gt;flush.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;    CALL FUNCTION 'POPUP_TO_INFORM'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        titel = gv_repid&lt;/P&gt;&lt;P&gt;        txt2  = sy-subrc&lt;/P&gt;&lt;P&gt;        txt1  = 'Error in Flush'(009).&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    "EXIT_PROGRAM&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  display_process&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; --&amp;gt;  p1        text&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; &amp;lt;--  p2        text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM display_process .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: a LIKE sy-ucomm.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DO 100 TIMES.&lt;/P&gt;&lt;P&gt;    DO 300 TIMES.&lt;/P&gt;&lt;P&gt;      GET TIME.&lt;/P&gt;&lt;P&gt;    ENDDO.&lt;/P&gt;&lt;P&gt;    a(3) = sy-index.a+3 = '%'.&lt;/P&gt;&lt;P&gt;    CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        percentage = sy-index&lt;/P&gt;&lt;P&gt;        text       = a.&lt;/P&gt;&lt;P&gt;  ENDDO.&lt;/P&gt;&lt;P&gt;ENDFORM.                    " display_process&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  sub_get_fieldcat&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     &amp;lt;--P_GT_FCAT1  text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM sub_get_fieldcat  CHANGING lt_fcat  TYPE lvc_t_fcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  gx_fcat1-fieldname = 'EBELN'.&lt;/P&gt;&lt;P&gt;  gx_fcat1-tabname   = 'gt_final1'.&lt;/P&gt;&lt;P&gt;  gx_fcat1-hotspot   = 'X'.&lt;/P&gt;&lt;P&gt;  APPEND gx_fcat1 TO lt_fcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " sub_get_fieldcat&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 16 Apr 2008 05:27:06 GMT</pubDate>
    <dc:creator>former_member210123</dc:creator>
    <dc:date>2008-04-16T05:27:06Z</dc:date>
    <item>
      <title>ALV grid using oops concepts</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/alv-grid-using-oops-concepts/m-p/3705045#M892139</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;HI all,&lt;/P&gt;&lt;P&gt;          Is it necessary to use container for ALV grid using classes.If not then please help me with a sample code.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 16 Apr 2008 05:17:33 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/alv-grid-using-oops-concepts/m-p/3705045#M892139</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-04-16T05:17:33Z</dc:date>
    </item>
    <item>
      <title>Re: ALV grid using oops concepts</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/alv-grid-using-oops-concepts/m-p/3705046#M892140</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;REPORT  z_alv_using_oops_conepts MESSAGE-ID z_OOPS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TABLES: ekko, ekpo.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CLASS lcl_event_receiver DEFINITION DEFERRED.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: ok_code             TYPE sy-ucomm,&lt;/P&gt;&lt;P&gt;      gx_fcat1            TYPE lvc_s_fcat,&lt;/P&gt;&lt;P&gt;      gt_fcat1            TYPE STANDARD TABLE OF lvc_s_fcat,&lt;/P&gt;&lt;P&gt;      gx_fcat2            TYPE lvc_s_fcat,&lt;/P&gt;&lt;P&gt;      gt_fcat2            TYPE STANDARD TABLE OF lvc_s_fcat,&lt;/P&gt;&lt;P&gt;      gx_layout1          TYPE lvc_s_layo,&lt;/P&gt;&lt;P&gt;      gx_layout2          TYPE lvc_s_layo,&lt;/P&gt;&lt;P&gt;      gx_variant          TYPE disvariant,&lt;/P&gt;&lt;P&gt;      g_custom_container1 TYPE REF TO cl_gui_custom_container,&lt;/P&gt;&lt;P&gt;      g_custom_container2 TYPE REF TO cl_gui_custom_container,&lt;/P&gt;&lt;P&gt;      grid1               TYPE REF TO cl_gui_alv_grid,&lt;/P&gt;&lt;P&gt;      grid2               TYPE REF TO cl_gui_alv_grid,&lt;/P&gt;&lt;P&gt;      g_container1        TYPE scrfname VALUE 'MAIN_REPORT_LIST',&lt;/P&gt;&lt;P&gt;      g_container2        TYPE scrfname VALUE 'SECOND_REPORT_LIST',&lt;/P&gt;&lt;P&gt;      gv_event_rec1       TYPE REF TO lcl_event_receiver,&lt;/P&gt;&lt;P&gt;      gv_event_rec2       TYPE REF TO lcl_event_receiver,&lt;/P&gt;&lt;P&gt;      gv_repid            TYPE sy-repid,&lt;/P&gt;&lt;P&gt;      gt_final1           TYPE STANDARD TABLE OF ekko,&lt;/P&gt;&lt;P&gt;      gt_final2           TYPE STANDARD TABLE OF ekpo,&lt;/P&gt;&lt;P&gt;      gt_final3           TYPE STANDARD TABLE OF ekpo,&lt;/P&gt;&lt;P&gt;      gx_final            TYPE ekko,&lt;/P&gt;&lt;P&gt;      gx_final1           TYPE ekpo.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;INITIALIZATION.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  SELECTION-SCREEN                                              *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN BEGIN OF BLOCK blk3 WITH FRAME .&lt;/P&gt;&lt;P&gt;SELECT-OPTIONS:&lt;/P&gt;&lt;P&gt;      s_ebeln             FOR ekko-ebeln obligatory,&lt;/P&gt;&lt;P&gt;      s_ebelp             FOR ekpo-ebelp,&lt;/P&gt;&lt;P&gt;      s_bukrs             FOR ekko-bukrs,&lt;/P&gt;&lt;P&gt;      s_bsart             FOR ekko-bsart.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN END OF BLOCK blk3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;****************************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;LOCAL CLASSES: Definition&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;****************************************************************&lt;/P&gt;&lt;P&gt;*===============================================================&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;class lcl_event_receiver: local class to&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                        define and handle own functions.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Definition:&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;~~~~~~~~~~~&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CLASS lcl_event_receiver DEFINITION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PUBLIC SECTION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    METHODS:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    hotspot_click1&lt;/P&gt;&lt;P&gt;        FOR EVENT hotspot_click OF cl_gui_alv_grid&lt;/P&gt;&lt;P&gt;            IMPORTING e_row_id&lt;/P&gt;&lt;P&gt;                      e_column_id,&lt;/P&gt;&lt;P&gt;    hotspot_click2&lt;/P&gt;&lt;P&gt;       FOR EVENT hotspot_click OF cl_gui_alv_grid&lt;/P&gt;&lt;P&gt;            IMPORTING e_row_id&lt;/P&gt;&lt;P&gt;                      e_column_id.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PRIVATE SECTION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDCLASS.                    "lcl_event_receiver DEFINITION&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      CLASS lcl_event_receiver IMPLEMENTATION&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CLASS lcl_event_receiver IMPLEMENTATION.&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  METHOD hotspot_click1.&lt;/P&gt;&lt;P&gt;    DATA: lv_tabix TYPE sy-tabix,&lt;/P&gt;&lt;P&gt;          lx_final TYPE ekko.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    READ TABLE gt_final1 INTO gx_final INDEX e_row_id.&lt;/P&gt;&lt;P&gt;    IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;      gt_final3 = gt_final2.&lt;/P&gt;&lt;P&gt;      DELETE gt_final3 WHERE ebeln NE gx_final-ebeln.&lt;/P&gt;&lt;P&gt;      IF NOT g_custom_container2 IS INITIAL.&lt;/P&gt;&lt;P&gt;        CALL METHOD grid2-&amp;gt;refresh_table_display.&lt;/P&gt;&lt;P&gt;        CALL METHOD grid1-&amp;gt;refresh_table_display.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;      MESSAGE s000 WITH text-003.&lt;/P&gt;&lt;P&gt;      LEAVE LIST-PROCESSING.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.                    "hotspot_click1&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  METHOD hotspot_click2.&lt;/P&gt;&lt;P&gt;    READ TABLE gt_final3 INTO gx_final1 INDEX e_row_id.&lt;/P&gt;&lt;P&gt;    IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;      SET PARAMETER ID 'BES' FIELD gx_final-ebeln.&lt;/P&gt;&lt;P&gt;      CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.                    "button_click1&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDCLASS.                    "lcl_event_receiver IMPLEMENTATION&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  START-OF-SELECTION                                                 *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;START-OF-SELECTION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECT * FROM ekko INTO TABLE gt_final1 WHERE ebeln IN s_ebeln&lt;/P&gt;&lt;P&gt;                                          AND   bukrs IN s_bukrs&lt;/P&gt;&lt;P&gt;                                          AND   bsart IN s_bsart.&lt;/P&gt;&lt;P&gt;  IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;   SELECT * FROM ekpo INTO TABLE gt_final2 FOR ALL ENTRIES IN gt_final1&lt;/P&gt;&lt;P&gt;                                          WHERE ebeln = gt_final1-ebeln&lt;/P&gt;&lt;P&gt;                                           AND ebelp IN s_ebelp.&lt;/P&gt;&lt;P&gt;    IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;      gt_final3 = gt_final2.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM sub_get_fieldcat CHANGING gt_fcat1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM sub_get_fieldcat CHANGING gt_fcat2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  END-OF-SELECTION                                                   *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;END-OF-SELECTION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM display_process.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL SCREEN 9000.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; MODULE pbo OUTPUT&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MODULE pbo OUTPUT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SET PF-STATUS 'MAIN100'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  gx_layout1-grid_title = 'Purchase Order Header'.&lt;/P&gt;&lt;P&gt;  gx_layout1-zebra      = 'X'.&lt;/P&gt;&lt;P&gt;  gx_layout1-info_fname = 'COLOR_LINE'.&lt;/P&gt;&lt;P&gt;  gx_layout1-sel_mode   = 'X'.&lt;/P&gt;&lt;P&gt;  gx_layout2-grid_title = 'Purchase Order Items'.&lt;/P&gt;&lt;P&gt;  gx_layout2-zebra      = 'X'.&lt;/P&gt;&lt;P&gt;  gx_layout1-stylefname = 'CB'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;gs_layout1-excp_led   = gc_check.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;gs_layout1-excp_group = gc_check.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  gv_repid = sy-repid.&lt;/P&gt;&lt;P&gt;  gx_variant-report = gv_repid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  READ TABLE gt_final1 INTO gx_final INDEX 1.&lt;/P&gt;&lt;P&gt;  IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;    DELETE gt_final3 WHERE ebeln NE gx_final-ebeln.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF g_custom_container1 IS INITIAL.&lt;/P&gt;&lt;P&gt;    CREATE OBJECT g_custom_container1&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        container_name = g_container1.&lt;/P&gt;&lt;P&gt;    CREATE OBJECT grid1&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        i_parent = g_custom_container1.&lt;/P&gt;&lt;P&gt;    CALL METHOD grid1-&amp;gt;set_table_for_first_display&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        is_layout       = gx_layout1&lt;/P&gt;&lt;P&gt;        is_variant      = gx_variant&lt;/P&gt;&lt;P&gt;        i_save          = 'U'&lt;/P&gt;&lt;P&gt;        i_default       = 'X'&lt;/P&gt;&lt;P&gt;        i_structure_name = 'EKKO'&lt;/P&gt;&lt;P&gt;      CHANGING&lt;/P&gt;&lt;P&gt;        it_outtab       = gt_final1&lt;/P&gt;&lt;P&gt;        it_fieldcatalog = gt_fcat1.&lt;/P&gt;&lt;P&gt;    CALL METHOD cl_gui_control=&amp;gt;set_focus&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        control = grid1.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF g_custom_container2 IS INITIAL.&lt;/P&gt;&lt;P&gt;    CREATE OBJECT g_custom_container2&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        container_name = g_container2.&lt;/P&gt;&lt;P&gt;    CREATE OBJECT grid2&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        i_parent = g_custom_container2.&lt;/P&gt;&lt;P&gt;    CALL METHOD grid2-&amp;gt;set_table_for_first_display&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        is_layout       = gx_layout2&lt;/P&gt;&lt;P&gt;        is_variant      = gx_variant&lt;/P&gt;&lt;P&gt;        i_save          = 'U'&lt;/P&gt;&lt;P&gt;        i_default       = 'X'&lt;/P&gt;&lt;P&gt;        i_structure_name = 'EKPO'&lt;/P&gt;&lt;P&gt;      CHANGING&lt;/P&gt;&lt;P&gt;        it_outtab       = gt_final3&lt;/P&gt;&lt;P&gt;        it_fieldcatalog = gt_fcat2.&lt;/P&gt;&lt;P&gt;    CALL METHOD cl_gui_control=&amp;gt;set_focus&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        control = grid2.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CREATE OBJECT gv_event_rec1.&lt;/P&gt;&lt;P&gt;  SET HANDLER gv_event_rec1-&amp;gt;hotspot_click1 FOR grid1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; CREATE OBJECT gv_event_rec2.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  SET HANDLER gv_event_rec1-&amp;gt;hotspot_click2 FOR grid2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF gt_final2 IS INITIAL.&lt;/P&gt;&lt;P&gt;    MESSAGE i000 WITH 'No Items exist for the Purchase Order'.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDMODULE.                    "PBO OUTPUT&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      MODULE PAI INPUT                                              *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MODULE pai INPUT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;To react on oi_custom_events:&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CALL METHOD cl_gui_cfw=&amp;gt;dispatch.&lt;/P&gt;&lt;P&gt;  CASE ok_code.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    WHEN 'EXIT'.&lt;/P&gt;&lt;P&gt;      PERFORM exit_program.&lt;/P&gt;&lt;P&gt;      LEAVE PROGRAM.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    WHEN 'BACK'.&lt;/P&gt;&lt;P&gt;      LEAVE TO SCREEN 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    WHEN 'CANCEL'.&lt;/P&gt;&lt;P&gt;      LEAVE TO SCREEN 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDCASE.&lt;/P&gt;&lt;P&gt;  CLEAR ok_code.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDMODULE.                    "PAI INPUT&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM EXIT_PROGRAM                                             *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM exit_program.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL METHOD grid1-&amp;gt;free.&lt;/P&gt;&lt;P&gt;  CALL METHOD grid2-&amp;gt;free.&lt;/P&gt;&lt;P&gt;  CALL METHOD cl_gui_cfw=&amp;gt;flush.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;    CALL FUNCTION 'POPUP_TO_INFORM'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        titel = gv_repid&lt;/P&gt;&lt;P&gt;        txt2  = sy-subrc&lt;/P&gt;&lt;P&gt;        txt1  = 'Error in Flush'(009).&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    "EXIT_PROGRAM&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  display_process&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; --&amp;gt;  p1        text&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; &amp;lt;--  p2        text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM display_process .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: a LIKE sy-ucomm.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DO 100 TIMES.&lt;/P&gt;&lt;P&gt;    DO 300 TIMES.&lt;/P&gt;&lt;P&gt;      GET TIME.&lt;/P&gt;&lt;P&gt;    ENDDO.&lt;/P&gt;&lt;P&gt;    a(3) = sy-index.a+3 = '%'.&lt;/P&gt;&lt;P&gt;    CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        percentage = sy-index&lt;/P&gt;&lt;P&gt;        text       = a.&lt;/P&gt;&lt;P&gt;  ENDDO.&lt;/P&gt;&lt;P&gt;ENDFORM.                    " display_process&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  sub_get_fieldcat&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     &amp;lt;--P_GT_FCAT1  text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM sub_get_fieldcat  CHANGING lt_fcat  TYPE lvc_t_fcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  gx_fcat1-fieldname = 'EBELN'.&lt;/P&gt;&lt;P&gt;  gx_fcat1-tabname   = 'gt_final1'.&lt;/P&gt;&lt;P&gt;  gx_fcat1-hotspot   = 'X'.&lt;/P&gt;&lt;P&gt;  APPEND gx_fcat1 TO lt_fcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " sub_get_fieldcat&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 16 Apr 2008 05:27:06 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/alv-grid-using-oops-concepts/m-p/3705046#M892140</guid>
      <dc:creator>former_member210123</dc:creator>
      <dc:date>2008-04-16T05:27:06Z</dc:date>
    </item>
    <item>
      <title>Re: ALV grid using oops concepts</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/alv-grid-using-oops-concepts/m-p/3705047#M892141</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;without creating a container in a screen u can create ALV grid through oops.&lt;/P&gt;&lt;P&gt;for that we have to use docking controller&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;example&lt;/STRONG&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;
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=&amp;gt;DOCK_AT_top
      EXTENSION   = 100.

  CREATE OBJECT G_GRID
    EXPORTING
      I_PARENT          = G_DOCKING_CONTAINER_1.

  CALL METHOD G_GRID-&amp;gt;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
&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;flow logic of screen 101:&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;
PROCESS BEFORE OUTPUT.
 MODULE STATUS_0101.

PROCESS AFTER INPUT.
 MODULE user_command_0101.
&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;rgds,&lt;/P&gt;&lt;P&gt;bharat.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 16 Apr 2008 05:28:31 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/alv-grid-using-oops-concepts/m-p/3705047#M892141</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-04-16T05:28:31Z</dc:date>
    </item>
    <item>
      <title>Re: ALV grid using oops concepts</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/alv-grid-using-oops-concepts/m-p/3705048#M892142</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;Following report is the sample report for OOPS concept.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;type-pools : slis.
include &amp;lt;icon&amp;gt;.
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-&amp;gt;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-&amp;gt;UNDERLINE
    .

CALL METHOD E_DYNDOC_ID-&amp;gt;NEW_LINE
*  EXPORTING
*    REPEAT =
    .

clear text.
text = 'Test Top of page 2nd line &amp;amp; space'.

CALL METHOD e_dyndoc_id-&amp;gt;add_text
EXPORTING text = text
sap_fontsize = 'LARGE'
sap_color   = 'LIST_KEY_INV'.

CALL METHOD e_dyndoc_id-&amp;gt;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-&amp;gt;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-&amp;gt;mt_toolbar.
clear wtoolbar.
wtoolbar-function = 'DETAIL'.
wtoolbar-ICON = ICON_OVERVIEW.
wtoolbar-QUICKINFO = 'Detail list'.
wtoolbar-TEXT = 'Detail list'.
append wtoolbar to e_object-&amp;gt;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.
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  fill_ekko
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  --&amp;gt;  p1        text
*  &amp;lt;--  p2        text
*----------------------------------------------------------------------*
FORM FILL_EKKO .
  SELECT EBELN AEDAT BEDAT INTO TABLE IEKKO FROM EKKO WHERE AEDAT IN S_AEDAT.
ENDFORM.                    " fill_ekko
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  fill_ekpo
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  --&amp;gt;  p1        text
*  &amp;lt;--  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
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  fill_makt
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  --&amp;gt;  p1        text
*  &amp;lt;--  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
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  BUILD_FINALTAB
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  --&amp;gt;  p1        text
*  &amp;lt;--  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
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  BUILD_FIELDCAT
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  --&amp;gt;  p1        text
*  &amp;lt;--  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
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  BUILD_SORT
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  --&amp;gt;  p1        text
*  &amp;lt;--  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
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Module  PBO  OUTPUT
*&amp;amp;---------------------------------------------------------------------*
*       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 &amp;lt;&amp;gt; 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 &amp;lt;&amp;gt; 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

CALL METHOD split-&amp;gt;set_border
EXPORTING
border = space.

CALL METHOD split-&amp;gt;get_container
EXPORTING
row = 1
column = 1
RECEIVING
container = contaner1.

CALL METHOD split-&amp;gt;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 &amp;lt;&amp;gt; 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

contaner3 = split1-&amp;gt;top_left_container.
contaner4 = split1-&amp;gt;bottom_right_container.

*contaner3 = container-&amp;gt;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 &amp;lt;&amp;gt; 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-&amp;gt;handle_top_of_page FOR GRID.
set handler o_event_receiver-&amp;gt;handle_user_command for grid.
set handler o_event_receiver-&amp;gt;handle_toolbar for grid.

CREATE OBJECT o_dd_doc EXPORTING style = 'ALV_GRID'
no_margins = 'X'.


CALL METHOD GRID-&amp;gt;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 &amp;lt;&amp;gt; 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

CALL METHOD GRID-&amp;gt;SET_TOOLBAR_INTERACTIVE.

CALL METHOD GRID-&amp;gt;list_processing_events
EXPORTING
i_event_name = 'TOP_OF_PAGE'
i_dyndoc_id = o_dd_doc.


ENDMODULE.                 " PBO  OUTPUT
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Module  PAI  INPUT
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE PAI INPUT.
CASE OKCODE.
WHEN 'BACK' OR 'EXIT'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE.                 " PAI  INPUT
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  BUILD_LAYOUT
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  --&amp;gt;  p1        text
*  &amp;lt;--  p2        text
*----------------------------------------------------------------------*
FORM BUILD_LAYOUT .
ILAYOUT-ZEBRA = 'X'.
ILAYOUT-SEL_MODE = 'A'.
ENDFORM.                    " BUILD_LAYOUT&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Sankar M&lt;/STRONG&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 16 Apr 2008 05:54:07 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/alv-grid-using-oops-concepts/m-p/3705048#M892142</guid>
      <dc:creator>p291102</dc:creator>
      <dc:date>2008-04-16T05:54:07Z</dc:date>
    </item>
  </channel>
</rss>

