<?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: splitter  container in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/splitter-container/m-p/2319064#M508893</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Vighnesh,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For ALV Grid display, you can use splitter classes. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;See the following program as an example.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: save_ok LIKE sy-ucomm,&lt;/P&gt;&lt;P&gt;      g_container TYPE scrfname VALUE 'CC1',&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      g_grid  TYPE REF TO cl_gui_alv_grid,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      g_custom_container TYPE REF TO cl_gui_custom_container,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      gt_fieldcat TYPE lvc_t_fcat,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      g_max TYPE i VALUE 100.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;declarations for top of page event&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;Data:  gv_c_split type ref to cl_gui_splitter_container,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;       gv_c_ptv type ref to cl_gui_container,&lt;/P&gt;&lt;P&gt;       gv_alv_ptv type ref to cl_gui_alv_grid,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;       o_dd_doc TYPE REF TO cl_dd_document,&lt;/P&gt;&lt;P&gt;       text TYPE sdydo_text_element,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;       o_split type ref to cl_gui_easy_splitter_container,&lt;/P&gt;&lt;P&gt;       o_top type ref to cl_gui_container,&lt;/P&gt;&lt;P&gt;       o_bot type ref to cl_gui_container,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;       gv_c_vp type ref to cl_gui_container.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;end of declaration for top of page.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CLASS lcl_event_receiver DEFINITION DEFERRED.&lt;/P&gt;&lt;P&gt;*class lcl_application_dc definition deferred.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: o_event_receiver TYPE REF TO lcl_event_receiver.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     g_dc type ref to lcl_application_dc.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: gt_outtab TYPE TABLE OF sbook.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&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 DEFINITION&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&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;    METHODS: handle_f4 FOR EVENT onf4 OF cl_gui_alv_grid&lt;/P&gt;&lt;P&gt;               IMPORTING e_fieldname&lt;/P&gt;&lt;P&gt;                         es_row_no&lt;/P&gt;&lt;P&gt;                         er_event_data&lt;/P&gt;&lt;P&gt;                         et_bad_cells&lt;/P&gt;&lt;P&gt;                         e_display,&lt;/P&gt;&lt;P&gt;            handle_top_of_page FOR EVENT top_of_page OF cl_gui_alv_grid&lt;/P&gt;&lt;P&gt;               IMPORTING e_dyndoc_id.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    METHODS: reset.&lt;/P&gt;&lt;P&gt;    METHODS: show_f4.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PRIVATE SECTION.&lt;/P&gt;&lt;P&gt;**&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;attributes for creating an own F4-Help&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;(using a second ALV Grid Control&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;**&lt;/P&gt;&lt;P&gt;    DATA: f4_grid TYPE REF TO cl_gui_alv_grid,&lt;/P&gt;&lt;P&gt;          f4_custom_container TYPE REF TO cl_gui_custom_container.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    TYPES: BEGIN OF ty_f4.&lt;/P&gt;&lt;P&gt;    TYPES: value TYPE s_class.&lt;/P&gt;&lt;P&gt;    TYPES: descr(20) TYPE c.&lt;/P&gt;&lt;P&gt;    TYPES: END OF ty_f4.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    DATA: f4_itab TYPE TABLE OF ty_f4.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    DATA: f4_fieldcatalog TYPE lvc_t_fcat.&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;attributes to store event parameters&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;(after the CALL SCREEN command, the event parameters&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;are not accessible)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;**&lt;/P&gt;&lt;P&gt;    TYPES: BEGIN OF onf4_event_parameters_type.&lt;/P&gt;&lt;P&gt;    TYPES: c_fieldname     TYPE lvc_fname.&lt;/P&gt;&lt;P&gt;    TYPES: cs_row_no       TYPE lvc_s_roid.&lt;/P&gt;&lt;P&gt;    TYPES: cr_event_data   TYPE REF TO cl_alv_event_data.&lt;/P&gt;&lt;P&gt;    TYPES: ct_bad_cells    TYPE lvc_t_modi.&lt;/P&gt;&lt;P&gt;    TYPES: c_display       TYPE char01.&lt;/P&gt;&lt;P&gt;    TYPES: END OF onf4_event_parameters_type.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    DATA: f4_params TYPE onf4_event_parameters_type.&lt;/P&gt;&lt;P&gt;&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;Methods to create own F4-Help&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;(This is done using a second ALV Grid Control)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;**&lt;/P&gt;&lt;P&gt;    METHODS: init_f4.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    METHODS: build_fieldcatalog.&lt;/P&gt;&lt;P&gt;    METHODS: fill_f4_itab .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    METHODS: on_double_click FOR EVENT double_click OF cl_gui_alv_grid&lt;/P&gt;&lt;P&gt;                    IMPORTING es_row_no.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDCLASS.                    "lcl_application_f4 DEFINITION&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&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;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&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;P&gt;*§2. Implement an event handler method for event ONF4.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  METHOD handle_f4.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Save event parameter as global attributes of this class&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;(maybe solved differently if you use a function module!)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    f4_params-c_fieldname = e_fieldname.&lt;/P&gt;&lt;P&gt;    f4_params-cs_row_no = es_row_no.&lt;/P&gt;&lt;P&gt;    f4_params-cr_event_data = er_event_data.&lt;/P&gt;&lt;P&gt;    f4_params-ct_bad_cells = et_bad_cells.&lt;/P&gt;&lt;P&gt;    f4_params-c_display = e_display.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*§3. Call your own f4 help. To customize your popup check&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   first if the cell is ready for input (event parameter E_DISPLAY).&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;(parameter E_DISPLAY is checked later in method on_double_click)&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;(Probably, you would call a function module at this point,&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;pass the needed event parameter and call the popup screen&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;within that function module. This is not done in this example&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;to avoid scattering its code).&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CALL SCREEN 101 STARTING AT 10 10.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*§7. Inform the ALV Grid Control that an own f4 help has been processed&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   to suppress the standard f4 help.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    er_event_data-&amp;gt;m_event_handled = 'X'.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.                                                "on_f4&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  METHOD show_f4.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   DATA: ls_outtab TYPE sbook.&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;initialize own f4 help if needed&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    IF f4_custom_container IS INITIAL.&lt;/P&gt;&lt;P&gt;      CALL METHOD init_f4.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CALL METHOD fill_f4_itab.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;refresh list of values in f4 help and show it&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CALL METHOD f4_grid-&amp;gt;refresh_table_display.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;CAUTION: Do not use method REFRESH_TABLE_DISPLAY for&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;your editable ALV Grid instances while handling events&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;DATA_CHANGED or ONf4. You would overwrite intermediate&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;values of your output table on frontend.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;'f4_grid' is a non-editable ALV Grid Control for the&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;application specific F4-Help. Therefore, calling&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;REFRESH_TABLE_DISPLAY for this instance has no&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;negative effect.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CALL METHOD cl_gui_cfw=&amp;gt;flush.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.                                                "show_f4&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  METHOD init_f4.&lt;/P&gt;&lt;P&gt;    DATA: ls_f4_layout TYPE lvc_s_layo.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;build fieldcatalog entries for f4&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CALL METHOD build_fieldcatalog.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;create controls&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CREATE OBJECT f4_custom_container&lt;/P&gt;&lt;P&gt;              EXPORTING container_name = 'CC_ONF4'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CREATE OBJECT f4_grid&lt;/P&gt;&lt;P&gt;              EXPORTING i_parent = f4_custom_container.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;hide toolbar&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    ls_f4_layout-no_toolbar = 'X'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CALL METHOD f4_grid-&amp;gt;set_table_for_first_display&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        is_layout       = ls_f4_layout&lt;/P&gt;&lt;P&gt;      CHANGING&lt;/P&gt;&lt;P&gt;        it_fieldcatalog = f4_fieldcatalog&lt;/P&gt;&lt;P&gt;        it_outtab       = f4_itab.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;register event double click on backend&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    SET HANDLER me-&amp;gt;on_double_click FOR f4_grid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;flush since 'ls_layout' is local!&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CALL METHOD cl_gui_cfw=&amp;gt;flush.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDMETHOD.                                                "init_f4&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;/P&gt;&lt;HR originaltext="-----------------------------------------------" /&gt;&lt;P&gt;  METHOD fill_f4_itab.&lt;/P&gt;&lt;P&gt;    DATA ls_f4_itab TYPE ty_f4.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Delete all entries in f4_itab to determine&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;offered values dynamically&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CLEAR f4_itab[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    ls_f4_itab-value = 'C'.&lt;/P&gt;&lt;P&gt;    ls_f4_itab-descr = text-t03. "Business Class&lt;/P&gt;&lt;P&gt;    APPEND ls_f4_itab TO f4_itab.&lt;/P&gt;&lt;P&gt;    ls_f4_itab-value = 'Y'.&lt;/P&gt;&lt;P&gt;    ls_f4_itab-descr = text-t04. "Economie Class&lt;/P&gt;&lt;P&gt;    APPEND ls_f4_itab TO f4_itab.&lt;/P&gt;&lt;P&gt;    ls_f4_itab-value = 'F'.&lt;/P&gt;&lt;P&gt;    ls_f4_itab-descr = text-t05. "First Class&lt;/P&gt;&lt;P&gt;    APPEND ls_f4_itab TO f4_itab.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.                    "fill_f4_itab&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="----------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  METHOD build_fieldcatalog.&lt;/P&gt;&lt;P&gt;    DATA: ls_fcat TYPE lvc_s_fcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CLEAR ls_fcat.&lt;/P&gt;&lt;P&gt;    ls_fcat-fieldname = 'VALUE'.&lt;/P&gt;&lt;P&gt;    ls_fcat-coltext = text-t02.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   ls_fcat-inttype = 'S_CLASS'.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    ls_fcat-outputlen = 5.&lt;/P&gt;&lt;P&gt;    APPEND ls_fcat TO f4_fieldcatalog.&lt;/P&gt;&lt;P&gt;    CLEAR ls_fcat.&lt;/P&gt;&lt;P&gt;    ls_fcat-fieldname = 'DESCR'.&lt;/P&gt;&lt;P&gt;    ls_fcat-coltext = text-t01.&lt;/P&gt;&lt;P&gt;    ls_fcat-inttype = 'C'.&lt;/P&gt;&lt;P&gt;    ls_fcat-outputlen = 20.&lt;/P&gt;&lt;P&gt;    APPEND ls_fcat TO f4_fieldcatalog.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.                    "build_fieldcatalog&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------" /&gt;&lt;P&gt;  METHOD on_double_click.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*§5. If not already caught by your own f4 help, check whether&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   the triggered cell was ready for input by using E_DISPLAY&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   and if not, exit.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    IF f4_params-c_display EQ 'X'.&lt;/P&gt;&lt;P&gt;      LEAVE SCREEN.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*§6. After the user selected a value, pass it to the ALV Grid Control:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*§  6a. Define a field symbol of type: LVC_T_MODI and a structure of&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      type LVC_S_MODI to pass the value later on.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    FIELD-SYMBOLS  TYPE lvc_t_modi.&lt;/P&gt;&lt;P&gt;    DATA: ls_modi TYPE lvc_s_modi,&lt;/P&gt;&lt;P&gt;          ls_f4_itab TYPE ty_f4.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*§  6b. Dereference attribute M_DATA into your field symbol and add&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      the selected value to the table to which this symbol points to.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    ASSIGN f4_params-cr_event_data-&amp;gt;m_data-&amp;gt;* TO .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    LEAVE TO SCREEN 0.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.                    "on_double_click&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------" /&gt;&lt;P&gt;  METHOD reset.&lt;/P&gt;&lt;P&gt;    FIELD-SYMBOLS display_document&lt;/P&gt;&lt;P&gt;             EXPORTING parent = o_top.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDMETHOD.                    "handle_top_of_page&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDCLASS.                    "lcl_application_f4 IMPLEMENTATION&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;  CALL SCREEN 100.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&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;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;MODULE pbo OUTPUT.&lt;/P&gt;&lt;P&gt;  SET PF-STATUS 'MAIN100'.&lt;/P&gt;&lt;P&gt;  SET TITLEBAR 'MAIN100'.&lt;/P&gt;&lt;P&gt;  IF g_custom_container IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    PERFORM create_and_init_alv CHANGING gt_outtab[]&lt;/P&gt;&lt;P&gt;                                         gt_fieldcat.&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;/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;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;MODULE pai INPUT.&lt;/P&gt;&lt;P&gt;  save_ok = sy-ucomm.&lt;/P&gt;&lt;P&gt;  CLEAR sy-ucomm.&lt;/P&gt;&lt;P&gt;  CASE save_ok.&lt;/P&gt;&lt;P&gt;    WHEN 'EXIT' OR 'BACK' OR 'CANCEL'.&lt;/P&gt;&lt;P&gt;      PERFORM exit_program.&lt;/P&gt;&lt;P&gt;    WHEN 'SWITCH'.&lt;/P&gt;&lt;P&gt;      PERFORM switch_edit_mode.&lt;/P&gt;&lt;P&gt;    WHEN OTHERS.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    do nothing&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  ENDCASE.&lt;/P&gt;&lt;P&gt;ENDMODULE.                    "pai INPUT&lt;/P&gt;&lt;P&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;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM exit_program.&lt;/P&gt;&lt;P&gt;  LEAVE PROGRAM.&lt;/P&gt;&lt;P&gt;ENDFORM.                    "exit_program&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  build_fieldcat&lt;/P&gt;&lt;P&gt;*&amp;amp;----&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;/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;PT_FIELDCAT  text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM build_fieldcat CHANGING pt_fieldcat TYPE lvc_t_fcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA ls_fcat TYPE lvc_s_fcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      i_structure_name = 'SBOOK'&lt;/P&gt;&lt;P&gt;    CHANGING&lt;/P&gt;&lt;P&gt;      ct_fieldcat      = pt_fieldcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT pt_fieldcat INTO ls_fcat.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Exchange smoker field with invoice field - just to&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;make the dependance between SMOKER and CLASS more transparent&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;(Smoking is only allowed in the first class).&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    IF ls_fcat-fieldname EQ 'SMOKER'.&lt;/P&gt;&lt;P&gt;      ls_fcat-col_pos = 11.&lt;/P&gt;&lt;P&gt;      ls_fcat-outputlen = 10.&lt;/P&gt;&lt;P&gt;      ls_fcat-edit = 'X'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Field 'checktable' is set to avoid shortdumps that are caused&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;by inconsistend data in check tables. You may comment this out&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;when the test data of the flight model is consistent in your system.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      ls_fcat-checktable = '!'.        "do not check foreign keys&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      MODIFY pt_fieldcat FROM ls_fcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    ELSEIF ls_fcat-fieldname EQ 'INVOICE'.&lt;/P&gt;&lt;P&gt;      ls_fcat-col_pos = 7.&lt;/P&gt;&lt;P&gt;      MODIFY pt_fieldcat FROM ls_fcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    ELSEIF    ls_fcat-fieldname EQ 'CLASS'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      ls_fcat-edit = 'X'.&lt;/P&gt;&lt;P&gt;      ls_fcat-outputlen = 5.&lt;/P&gt;&lt;P&gt;      ls_fcat-checktable = '!'.        "do not check foreign keys&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      MODIFY pt_fieldcat FROM ls_fcat.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    "build_fieldcat&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  create_and_init_alv&lt;/P&gt;&lt;P&gt;*&amp;amp;----&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;/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;PT_OUTTAB    text&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     --&amp;gt;PT_FIELDCAT  text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM create_and_init_alv CHANGING pt_outtab TYPE STANDARD TABLE&lt;/P&gt;&lt;P&gt;                                  pt_fieldcat TYPE lvc_t_fcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: lt_exclude TYPE ui_functions,&lt;/P&gt;&lt;P&gt;        ls_layout TYPE lvc_s_layo.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CREATE OBJECT g_custom_container&lt;/P&gt;&lt;P&gt;          EXPORTING container_name = g_container.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; CREATE OBJECT g_grid&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        EXPORTING i_parent = g_custom_container.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CREATE OBJECT gv_c_split&lt;/P&gt;&lt;P&gt;     EXPORTING&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      link_dynnr        = lv_dynnr&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      link_repid        = lv_repid&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      parent            = g_custom_container&lt;/P&gt;&lt;P&gt;      rows              = 2&lt;/P&gt;&lt;P&gt;      columns           = 1&lt;/P&gt;&lt;P&gt;     EXCEPTIONS&lt;/P&gt;&lt;P&gt;       cntl_error        = 1&lt;/P&gt;&lt;P&gt;       cntl_system_error = 2&lt;/P&gt;&lt;P&gt;       others            = 3    .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL METHOD gv_c_split-&amp;gt;set_border&lt;/P&gt;&lt;P&gt;   EXPORTING&lt;/P&gt;&lt;P&gt;     border            = space.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL METHOD gv_c_split-&amp;gt;get_container&lt;/P&gt;&lt;P&gt;     EXPORTING&lt;/P&gt;&lt;P&gt;       row       = 1&lt;/P&gt;&lt;P&gt;       column    = 1&lt;/P&gt;&lt;P&gt;     RECEIVING&lt;/P&gt;&lt;P&gt;       container = gv_c_ptv.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL METHOD gv_c_split-&amp;gt;set_row_height&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      id                = 1&lt;/P&gt;&lt;P&gt;      height            = 20&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      cntl_error        = 1&lt;/P&gt;&lt;P&gt;      cntl_system_error = 2&lt;/P&gt;&lt;P&gt;      OTHERS            = 6 .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL METHOD gv_c_split-&amp;gt;get_container&lt;/P&gt;&lt;P&gt;     EXPORTING&lt;/P&gt;&lt;P&gt;       row       = 2&lt;/P&gt;&lt;P&gt;       column    = 1&lt;/P&gt;&lt;P&gt;     RECEIVING&lt;/P&gt;&lt;P&gt;       container = gv_c_vp .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL METHOD gv_c_split-&amp;gt;set_row_height&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      id                = 2&lt;/P&gt;&lt;P&gt;      height            = 10&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      cntl_error        = 1&lt;/P&gt;&lt;P&gt;      cntl_system_error = 2&lt;/P&gt;&lt;P&gt;      OTHERS            = 3 .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;   CREATE OBJECT o_split&lt;/P&gt;&lt;P&gt;     EXPORTING&lt;/P&gt;&lt;P&gt;      parent            = gv_c_ptv&lt;/P&gt;&lt;P&gt;      with_border       = 1&lt;/P&gt;&lt;P&gt;     EXCEPTIONS&lt;/P&gt;&lt;P&gt;       cntl_error        = 1&lt;/P&gt;&lt;P&gt;       cntl_system_error = 2&lt;/P&gt;&lt;P&gt;       others            = 3.&lt;/P&gt;&lt;P&gt;  IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno&lt;/P&gt;&lt;P&gt;               WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; o_top = o_split-&amp;gt;top_left_container.&lt;/P&gt;&lt;P&gt; o_bot = o_split-&amp;gt;bottom_right_container.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; CREATE OBJECT gv_alv_ptv&lt;/P&gt;&lt;P&gt;     EXPORTING&lt;/P&gt;&lt;P&gt;       i_parent          = o_bot&lt;/P&gt;&lt;P&gt;     EXCEPTIONS&lt;/P&gt;&lt;P&gt;       error_cntl_create = 1&lt;/P&gt;&lt;P&gt;       error_cntl_init   = 2&lt;/P&gt;&lt;P&gt;       error_cntl_link   = 3&lt;/P&gt;&lt;P&gt;       error_dp_create   = 4&lt;/P&gt;&lt;P&gt;       others            = 5    .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CREATE OBJECT g_grid&lt;/P&gt;&lt;P&gt;        EXPORTING&lt;/P&gt;&lt;P&gt;          i_parent          = gv_c_vp&lt;/P&gt;&lt;P&gt;        EXCEPTIONS&lt;/P&gt;&lt;P&gt;          error_cntl_create = 1&lt;/P&gt;&lt;P&gt;          error_cntl_init   = 2&lt;/P&gt;&lt;P&gt;          error_cntl_link   = 3&lt;/P&gt;&lt;P&gt;          error_dp_create   = 4&lt;/P&gt;&lt;P&gt;          others            = 5    .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM build_fieldcat CHANGING pt_fieldcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Optionally restrict generic functions to 'change only'.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  (The user shall not be able to add new lines).&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM exclude_tb_functions CHANGING lt_exclude.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM build_data CHANGING pt_outtab.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ls_layout-grid_title = 'F4 help implemented for field CLASS'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CREATE OBJECT o_event_receiver.&lt;/P&gt;&lt;P&gt;  SET HANDLER o_event_receiver-&amp;gt;handle_top_of_page FOR gv_alv_ptv.&lt;/P&gt;&lt;P&gt;  SET HANDLER o_event_receiver-&amp;gt;handle_top_of_page FOR g_grid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CREATE OBJECT o_dd_doc EXPORTING style = 'ALV_GRID'&lt;/P&gt;&lt;P&gt;                                   no_margins = 'X'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL METHOD gv_alv_ptv-&amp;gt;set_table_for_first_display&lt;/P&gt;&lt;P&gt;   EXPORTING&lt;/P&gt;&lt;P&gt;     is_layout                    = ls_layout&lt;/P&gt;&lt;P&gt;  CHANGING&lt;/P&gt;&lt;P&gt;    it_outtab                     = pt_outtab[]&lt;/P&gt;&lt;P&gt;    it_fieldcatalog               = pt_fieldcat&lt;/P&gt;&lt;P&gt;  EXCEPTIONS&lt;/P&gt;&lt;P&gt;    invalid_parameter_combination = 1&lt;/P&gt;&lt;P&gt;    program_error                 = 2&lt;/P&gt;&lt;P&gt;    too_many_lines                = 3&lt;/P&gt;&lt;P&gt;    OTHERS                        = 4.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL METHOD g_grid-&amp;gt;set_table_for_first_display&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      it_toolbar_excluding = lt_exclude&lt;/P&gt;&lt;P&gt;      is_layout            = ls_layout&lt;/P&gt;&lt;P&gt;    CHANGING&lt;/P&gt;&lt;P&gt;      it_fieldcatalog      = pt_fieldcat&lt;/P&gt;&lt;P&gt;      it_outtab            = pt_outtab[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL METHOD gv_alv_ptv-&amp;gt;list_processing_events&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      i_event_name      = 'TOP_OF_PAGE'&lt;/P&gt;&lt;P&gt;       i_dyndoc_id       = o_dd_doc.&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;register f4 for field CLASS&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM register_events.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Set editable cells to ready for input initially&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CALL METHOD g_grid-&amp;gt;set_ready_for_input&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      i_ready_for_input = 1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                               "CREATE_AND_INIT_ALV&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  exclude_tb_functions&lt;/P&gt;&lt;P&gt;*&amp;amp;----&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;/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;PT_EXCLUDE text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM exclude_tb_functions CHANGING pt_exclude TYPE ui_functions.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Only allow to change data not to create new entries (exclude&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;generic functions).&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA ls_exclude TYPE ui_func.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ls_exclude = cl_gui_alv_grid=&amp;gt;mc_fc_loc_copy_row.&lt;/P&gt;&lt;P&gt;  APPEND ls_exclude TO pt_exclude.&lt;/P&gt;&lt;P&gt;  ls_exclude = cl_gui_alv_grid=&amp;gt;mc_fc_loc_delete_row.&lt;/P&gt;&lt;P&gt;  APPEND ls_exclude TO pt_exclude.&lt;/P&gt;&lt;P&gt;  ls_exclude = cl_gui_alv_grid=&amp;gt;mc_fc_loc_append_row.&lt;/P&gt;&lt;P&gt;  APPEND ls_exclude TO pt_exclude.&lt;/P&gt;&lt;P&gt;  ls_exclude = cl_gui_alv_grid=&amp;gt;mc_fc_loc_insert_row.&lt;/P&gt;&lt;P&gt;  APPEND ls_exclude TO pt_exclude.&lt;/P&gt;&lt;P&gt;  ls_exclude = cl_gui_alv_grid=&amp;gt;mc_fc_loc_move_row.&lt;/P&gt;&lt;P&gt;  APPEND ls_exclude TO pt_exclude.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                               " EXCLUDE_TB_FUNCTIONS&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  build_data&lt;/P&gt;&lt;P&gt;*&amp;amp;----&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;/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;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM build_data CHANGING pt_outtab TYPE STANDARD TABLE.&lt;/P&gt;&lt;P&gt;  DATA: ls_sbook TYPE sbook,&lt;/P&gt;&lt;P&gt;        l_index TYPE i.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECT * FROM sbook INTO TABLE gt_outtab UP TO g_max ROWS.&lt;/P&gt;&lt;P&gt;  IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;    PERFORM generate_entries CHANGING pt_outtab.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT pt_outtab INTO ls_sbook.&lt;/P&gt;&lt;P&gt;    l_index = sy-tabix.&lt;/P&gt;&lt;P&gt;    CLEAR ls_sbook-class.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Alternate between smoker and non smoker to make&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;it more obvious what this example is about&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    l_index = l_index MOD 2.&lt;/P&gt;&lt;P&gt;    IF l_index EQ 1.&lt;/P&gt;&lt;P&gt;      ls_sbook-smoker = 'X'.&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;      ls_sbook-smoker = ' '.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;    MODIFY pt_outtab FROM ls_sbook.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                               " build_data&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  generate_entries&lt;/P&gt;&lt;P&gt;*&amp;amp;----&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;/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;PT_SBOOK   text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM generate_entries CHANGING pt_sbook TYPE STANDARD TABLE.&lt;/P&gt;&lt;P&gt;  DATA: ls_sbook TYPE sbook,&lt;/P&gt;&lt;P&gt;        l_month(2) TYPE c,&lt;/P&gt;&lt;P&gt;        l_day(2) TYPE c,&lt;/P&gt;&lt;P&gt;        l_date(8) TYPE c,&lt;/P&gt;&lt;P&gt;	l_prebookid TYPE i.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ls_sbook-carrid = 'LH'.&lt;/P&gt;&lt;P&gt;  ls_sbook-connid = '0400'.&lt;/P&gt;&lt;P&gt;  ls_sbook-forcurkey = 'DEM'.&lt;/P&gt;&lt;P&gt;  ls_sbook-loccurkey = 'USD'.&lt;/P&gt;&lt;P&gt;  ls_sbook-custtype = 'B'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DO 110 TIMES.&lt;/P&gt;&lt;P&gt;    l_prebookid = sy-index.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    ls_sbook-forcuram = sy-index * 10.&lt;/P&gt;&lt;P&gt;    ls_sbook-loccuram = ls_sbook-loccuram * 2.&lt;/P&gt;&lt;P&gt;    ls_sbook-customid = sy-index.&lt;/P&gt;&lt;P&gt;    ls_sbook-counter = 18.&lt;/P&gt;&lt;P&gt;    ls_sbook-agencynum = 11.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    l_month = sy-index / 10 + 1.&lt;/P&gt;&lt;P&gt;    DO 2 TIMES.&lt;/P&gt;&lt;P&gt;      l_day = 3 + l_month + sy-index * 2.&lt;/P&gt;&lt;P&gt;      l_date+0(4) = '2000'.&lt;/P&gt;&lt;P&gt;      l_date+4(2) = l_month.&lt;/P&gt;&lt;P&gt;      l_date+6(2) = l_day.&lt;/P&gt;&lt;P&gt;      ls_sbook-fldate = l_date.&lt;/P&gt;&lt;P&gt;      SUBTRACT 3 FROM l_day.&lt;/P&gt;&lt;P&gt;      ls_sbook-order_date+0(6) = l_date+0(6).&lt;/P&gt;&lt;P&gt;      ls_sbook-order_date+6(2) = l_day.&lt;/P&gt;&lt;P&gt;      ls_sbook-bookid = l_prebookid * 2 + sy-index.&lt;/P&gt;&lt;P&gt;      IF sy-index EQ 1.&lt;/P&gt;&lt;P&gt;        ls_sbook-smoker = 'X'.&lt;/P&gt;&lt;P&gt;      ELSE.&lt;/P&gt;&lt;P&gt;        ls_sbook-smoker = space.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      ls_sbook-luggweight = l_prebookid * 10.&lt;/P&gt;&lt;P&gt;      IF ls_sbook-luggweight GE 1000.&lt;/P&gt;&lt;P&gt;        ls_sbook-wunit = 'G'.&lt;/P&gt;&lt;P&gt;        ls_sbook-class = 'C'.&lt;/P&gt;&lt;P&gt;      ELSE.&lt;/P&gt;&lt;P&gt;        ls_sbook-wunit = 'KG'.&lt;/P&gt;&lt;P&gt;        ls_sbook-class = 'Y'.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF ls_sbook-bookid &amp;gt; 40 AND ls_sbook-wunit EQ 'KG'.&lt;/P&gt;&lt;P&gt;        ls_sbook-invoice = 'X'.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;      IF ls_sbook-bookid EQ 2.&lt;/P&gt;&lt;P&gt;        ls_sbook-cancelled = 'X'.&lt;/P&gt;&lt;P&gt;        ls_sbook-class = 'F'.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      APPEND ls_sbook TO pt_sbook.&lt;/P&gt;&lt;P&gt;    ENDDO.&lt;/P&gt;&lt;P&gt;  ENDDO.&lt;/P&gt;&lt;P&gt;ENDFORM.                               " generate_entries&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  register_events&lt;/P&gt;&lt;P&gt;*&amp;amp;----&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;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM register_events.&lt;/P&gt;&lt;P&gt;*§1. Register event ONF4 at frontend using method&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   register_f4_for_fields. For this purpose, you pass a table&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   with all fields, for which you want to implement your own&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   f4 help.&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;remark: If you want to use an own f4 help for fields where&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        no standard f4 help exists set field F4AVAILABL for&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        this field in the fieldcatalog.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  DATA: lt_f4 TYPE lvc_t_f4 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR lt_f4.&lt;/P&gt;&lt;P&gt;  lt_f4-fieldname = 'CLASS'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;If you would like to deregister the field again,&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;pass value SPACE with field 'register'.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  lt_f4-register = 'X'.&lt;/P&gt;&lt;P&gt;*§  1b. If the value range in your f4 help depends on other&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      values of cells that are input enabled, set the&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      GETBEFORE parameter.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;The consequence is that the ALV Grid Control raises&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;event DATA_CHANGED before the f4 help is called to&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;check values that the f4 help depends on.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  lt_f4-getbefore = 'X'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;The next parameter is used to change values after onf4 has&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;been processed. The ALV Grid Control will raise&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;event DATA_CHANGED afterwards, if you set it.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  lt_f4-chngeafter = space.&lt;/P&gt;&lt;P&gt;  INSERT TABLE lt_f4.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL METHOD g_grid-&amp;gt;register_f4_for_fields&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      it_f4 = lt_f4[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;register events for abap objects (backend)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SET HANDLER o_event_receiver-&amp;gt;handle_f4 FOR g_grid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " register_events&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&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 status_0101 OUTPUT&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;MODULE status_0101 OUTPUT.&lt;/P&gt;&lt;P&gt;  SET PF-STATUS 'POPUP'.&lt;/P&gt;&lt;P&gt;  SET TITLEBAR 'POPUP'.&lt;/P&gt;&lt;P&gt;  CALL METHOD o_event_receiver-&amp;gt;show_f4.&lt;/P&gt;&lt;P&gt;ENDMODULE.                 " STATUS_0101  OUTPUT&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Module  USER_COMMAND_0101  INPUT&lt;/P&gt;&lt;P&gt;*&amp;amp;----&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;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;MODULE user_command_0101 INPUT.&lt;/P&gt;&lt;P&gt;  PERFORM user_command.&lt;/P&gt;&lt;P&gt;ENDMODULE.                 " USER_COMMAND_0101  INPUT&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  user_command&lt;/P&gt;&lt;P&gt;*&amp;amp;----&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;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM user_command.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: save_ok TYPE sy-ucomm.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  save_ok = sy-ucomm.&lt;/P&gt;&lt;P&gt;  CLEAR sy-ucomm.&lt;/P&gt;&lt;P&gt;  CASE save_ok.&lt;/P&gt;&lt;P&gt;    WHEN 'CANCEL'.&lt;/P&gt;&lt;P&gt;      CALL METHOD o_event_receiver-&amp;gt;reset.&lt;/P&gt;&lt;P&gt;      LEAVE TO SCREEN 0.&lt;/P&gt;&lt;P&gt;  ENDCASE.&lt;/P&gt;&lt;P&gt;ENDFORM.                    "user_command&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  switch_edit_mode&lt;/P&gt;&lt;P&gt;*&amp;amp;----&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;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM switch_edit_mode.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF g_grid-&amp;gt;is_ready_for_input( ) EQ 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;set edit enabled cells ready for input&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CALL METHOD g_grid-&amp;gt;set_ready_for_input&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        i_ready_for_input = 1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;lock edit enabled cells against input&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CALL METHOD g_grid-&amp;gt;set_ready_for_input&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        i_ready_for_input = 0.&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;Award points if found useful.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;Indrajit.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 31 May 2007 09:40:24 GMT</pubDate>
    <dc:creator>Former Member</dc:creator>
    <dc:date>2007-05-31T09:40:24Z</dc:date>
    <item>
      <title>splitter  container</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/splitter-container/m-p/2319062#M508891</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;  Can anyone can tell hw to split a container for the top-of-page &amp;amp; Grid display ie, splitter container . &lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; Vighnesh .&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 31 May 2007 09:31:34 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/splitter-container/m-p/2319062#M508891</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-05-31T09:31:34Z</dc:date>
    </item>
    <item>
      <title>Re: splitter  container</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/splitter-container/m-p/2319063#M508892</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Vighnesh,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In your SAP system, goto SE38 transaction,&lt;/P&gt;&lt;P&gt;Navigate to this menu option.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;Environment -&amp;gt; Examples -&amp;gt; Control Examples&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;There you can find example of Splitter container.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Basu.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 31 May 2007 09:39:14 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/splitter-container/m-p/2319063#M508892</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-05-31T09:39:14Z</dc:date>
    </item>
    <item>
      <title>Re: splitter  container</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/splitter-container/m-p/2319064#M508893</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Vighnesh,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For ALV Grid display, you can use splitter classes. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;See the following program as an example.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: save_ok LIKE sy-ucomm,&lt;/P&gt;&lt;P&gt;      g_container TYPE scrfname VALUE 'CC1',&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      g_grid  TYPE REF TO cl_gui_alv_grid,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      g_custom_container TYPE REF TO cl_gui_custom_container,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      gt_fieldcat TYPE lvc_t_fcat,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      g_max TYPE i VALUE 100.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;declarations for top of page event&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;Data:  gv_c_split type ref to cl_gui_splitter_container,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;       gv_c_ptv type ref to cl_gui_container,&lt;/P&gt;&lt;P&gt;       gv_alv_ptv type ref to cl_gui_alv_grid,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;       o_dd_doc TYPE REF TO cl_dd_document,&lt;/P&gt;&lt;P&gt;       text TYPE sdydo_text_element,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;       o_split type ref to cl_gui_easy_splitter_container,&lt;/P&gt;&lt;P&gt;       o_top type ref to cl_gui_container,&lt;/P&gt;&lt;P&gt;       o_bot type ref to cl_gui_container,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;       gv_c_vp type ref to cl_gui_container.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;end of declaration for top of page.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CLASS lcl_event_receiver DEFINITION DEFERRED.&lt;/P&gt;&lt;P&gt;*class lcl_application_dc definition deferred.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: o_event_receiver TYPE REF TO lcl_event_receiver.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     g_dc type ref to lcl_application_dc.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: gt_outtab TYPE TABLE OF sbook.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&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 DEFINITION&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&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;    METHODS: handle_f4 FOR EVENT onf4 OF cl_gui_alv_grid&lt;/P&gt;&lt;P&gt;               IMPORTING e_fieldname&lt;/P&gt;&lt;P&gt;                         es_row_no&lt;/P&gt;&lt;P&gt;                         er_event_data&lt;/P&gt;&lt;P&gt;                         et_bad_cells&lt;/P&gt;&lt;P&gt;                         e_display,&lt;/P&gt;&lt;P&gt;            handle_top_of_page FOR EVENT top_of_page OF cl_gui_alv_grid&lt;/P&gt;&lt;P&gt;               IMPORTING e_dyndoc_id.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    METHODS: reset.&lt;/P&gt;&lt;P&gt;    METHODS: show_f4.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PRIVATE SECTION.&lt;/P&gt;&lt;P&gt;**&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;attributes for creating an own F4-Help&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;(using a second ALV Grid Control&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;**&lt;/P&gt;&lt;P&gt;    DATA: f4_grid TYPE REF TO cl_gui_alv_grid,&lt;/P&gt;&lt;P&gt;          f4_custom_container TYPE REF TO cl_gui_custom_container.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    TYPES: BEGIN OF ty_f4.&lt;/P&gt;&lt;P&gt;    TYPES: value TYPE s_class.&lt;/P&gt;&lt;P&gt;    TYPES: descr(20) TYPE c.&lt;/P&gt;&lt;P&gt;    TYPES: END OF ty_f4.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    DATA: f4_itab TYPE TABLE OF ty_f4.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    DATA: f4_fieldcatalog TYPE lvc_t_fcat.&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;attributes to store event parameters&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;(after the CALL SCREEN command, the event parameters&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;are not accessible)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;**&lt;/P&gt;&lt;P&gt;    TYPES: BEGIN OF onf4_event_parameters_type.&lt;/P&gt;&lt;P&gt;    TYPES: c_fieldname     TYPE lvc_fname.&lt;/P&gt;&lt;P&gt;    TYPES: cs_row_no       TYPE lvc_s_roid.&lt;/P&gt;&lt;P&gt;    TYPES: cr_event_data   TYPE REF TO cl_alv_event_data.&lt;/P&gt;&lt;P&gt;    TYPES: ct_bad_cells    TYPE lvc_t_modi.&lt;/P&gt;&lt;P&gt;    TYPES: c_display       TYPE char01.&lt;/P&gt;&lt;P&gt;    TYPES: END OF onf4_event_parameters_type.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    DATA: f4_params TYPE onf4_event_parameters_type.&lt;/P&gt;&lt;P&gt;&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;Methods to create own F4-Help&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;(This is done using a second ALV Grid Control)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;**&lt;/P&gt;&lt;P&gt;    METHODS: init_f4.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    METHODS: build_fieldcatalog.&lt;/P&gt;&lt;P&gt;    METHODS: fill_f4_itab .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    METHODS: on_double_click FOR EVENT double_click OF cl_gui_alv_grid&lt;/P&gt;&lt;P&gt;                    IMPORTING es_row_no.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDCLASS.                    "lcl_application_f4 DEFINITION&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&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;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&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;P&gt;*§2. Implement an event handler method for event ONF4.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  METHOD handle_f4.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Save event parameter as global attributes of this class&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;(maybe solved differently if you use a function module!)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    f4_params-c_fieldname = e_fieldname.&lt;/P&gt;&lt;P&gt;    f4_params-cs_row_no = es_row_no.&lt;/P&gt;&lt;P&gt;    f4_params-cr_event_data = er_event_data.&lt;/P&gt;&lt;P&gt;    f4_params-ct_bad_cells = et_bad_cells.&lt;/P&gt;&lt;P&gt;    f4_params-c_display = e_display.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*§3. Call your own f4 help. To customize your popup check&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   first if the cell is ready for input (event parameter E_DISPLAY).&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;(parameter E_DISPLAY is checked later in method on_double_click)&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;(Probably, you would call a function module at this point,&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;pass the needed event parameter and call the popup screen&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;within that function module. This is not done in this example&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;to avoid scattering its code).&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CALL SCREEN 101 STARTING AT 10 10.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*§7. Inform the ALV Grid Control that an own f4 help has been processed&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   to suppress the standard f4 help.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    er_event_data-&amp;gt;m_event_handled = 'X'.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.                                                "on_f4&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  METHOD show_f4.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   DATA: ls_outtab TYPE sbook.&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;initialize own f4 help if needed&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    IF f4_custom_container IS INITIAL.&lt;/P&gt;&lt;P&gt;      CALL METHOD init_f4.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CALL METHOD fill_f4_itab.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;refresh list of values in f4 help and show it&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CALL METHOD f4_grid-&amp;gt;refresh_table_display.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;CAUTION: Do not use method REFRESH_TABLE_DISPLAY for&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;your editable ALV Grid instances while handling events&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;DATA_CHANGED or ONf4. You would overwrite intermediate&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;values of your output table on frontend.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;'f4_grid' is a non-editable ALV Grid Control for the&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;application specific F4-Help. Therefore, calling&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;REFRESH_TABLE_DISPLAY for this instance has no&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;negative effect.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CALL METHOD cl_gui_cfw=&amp;gt;flush.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.                                                "show_f4&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  METHOD init_f4.&lt;/P&gt;&lt;P&gt;    DATA: ls_f4_layout TYPE lvc_s_layo.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;build fieldcatalog entries for f4&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CALL METHOD build_fieldcatalog.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;create controls&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CREATE OBJECT f4_custom_container&lt;/P&gt;&lt;P&gt;              EXPORTING container_name = 'CC_ONF4'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CREATE OBJECT f4_grid&lt;/P&gt;&lt;P&gt;              EXPORTING i_parent = f4_custom_container.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;hide toolbar&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    ls_f4_layout-no_toolbar = 'X'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CALL METHOD f4_grid-&amp;gt;set_table_for_first_display&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        is_layout       = ls_f4_layout&lt;/P&gt;&lt;P&gt;      CHANGING&lt;/P&gt;&lt;P&gt;        it_fieldcatalog = f4_fieldcatalog&lt;/P&gt;&lt;P&gt;        it_outtab       = f4_itab.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;register event double click on backend&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    SET HANDLER me-&amp;gt;on_double_click FOR f4_grid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;flush since 'ls_layout' is local!&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CALL METHOD cl_gui_cfw=&amp;gt;flush.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDMETHOD.                                                "init_f4&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;/P&gt;&lt;HR originaltext="-----------------------------------------------" /&gt;&lt;P&gt;  METHOD fill_f4_itab.&lt;/P&gt;&lt;P&gt;    DATA ls_f4_itab TYPE ty_f4.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Delete all entries in f4_itab to determine&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;offered values dynamically&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CLEAR f4_itab[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    ls_f4_itab-value = 'C'.&lt;/P&gt;&lt;P&gt;    ls_f4_itab-descr = text-t03. "Business Class&lt;/P&gt;&lt;P&gt;    APPEND ls_f4_itab TO f4_itab.&lt;/P&gt;&lt;P&gt;    ls_f4_itab-value = 'Y'.&lt;/P&gt;&lt;P&gt;    ls_f4_itab-descr = text-t04. "Economie Class&lt;/P&gt;&lt;P&gt;    APPEND ls_f4_itab TO f4_itab.&lt;/P&gt;&lt;P&gt;    ls_f4_itab-value = 'F'.&lt;/P&gt;&lt;P&gt;    ls_f4_itab-descr = text-t05. "First Class&lt;/P&gt;&lt;P&gt;    APPEND ls_f4_itab TO f4_itab.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.                    "fill_f4_itab&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="----------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  METHOD build_fieldcatalog.&lt;/P&gt;&lt;P&gt;    DATA: ls_fcat TYPE lvc_s_fcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CLEAR ls_fcat.&lt;/P&gt;&lt;P&gt;    ls_fcat-fieldname = 'VALUE'.&lt;/P&gt;&lt;P&gt;    ls_fcat-coltext = text-t02.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   ls_fcat-inttype = 'S_CLASS'.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    ls_fcat-outputlen = 5.&lt;/P&gt;&lt;P&gt;    APPEND ls_fcat TO f4_fieldcatalog.&lt;/P&gt;&lt;P&gt;    CLEAR ls_fcat.&lt;/P&gt;&lt;P&gt;    ls_fcat-fieldname = 'DESCR'.&lt;/P&gt;&lt;P&gt;    ls_fcat-coltext = text-t01.&lt;/P&gt;&lt;P&gt;    ls_fcat-inttype = 'C'.&lt;/P&gt;&lt;P&gt;    ls_fcat-outputlen = 20.&lt;/P&gt;&lt;P&gt;    APPEND ls_fcat TO f4_fieldcatalog.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.                    "build_fieldcatalog&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------" /&gt;&lt;P&gt;  METHOD on_double_click.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*§5. If not already caught by your own f4 help, check whether&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   the triggered cell was ready for input by using E_DISPLAY&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   and if not, exit.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    IF f4_params-c_display EQ 'X'.&lt;/P&gt;&lt;P&gt;      LEAVE SCREEN.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*§6. After the user selected a value, pass it to the ALV Grid Control:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*§  6a. Define a field symbol of type: LVC_T_MODI and a structure of&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      type LVC_S_MODI to pass the value later on.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    FIELD-SYMBOLS  TYPE lvc_t_modi.&lt;/P&gt;&lt;P&gt;    DATA: ls_modi TYPE lvc_s_modi,&lt;/P&gt;&lt;P&gt;          ls_f4_itab TYPE ty_f4.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*§  6b. Dereference attribute M_DATA into your field symbol and add&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      the selected value to the table to which this symbol points to.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    ASSIGN f4_params-cr_event_data-&amp;gt;m_data-&amp;gt;* TO .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    LEAVE TO SCREEN 0.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.                    "on_double_click&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------" /&gt;&lt;P&gt;  METHOD reset.&lt;/P&gt;&lt;P&gt;    FIELD-SYMBOLS display_document&lt;/P&gt;&lt;P&gt;             EXPORTING parent = o_top.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDMETHOD.                    "handle_top_of_page&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDCLASS.                    "lcl_application_f4 IMPLEMENTATION&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;  CALL SCREEN 100.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&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;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;MODULE pbo OUTPUT.&lt;/P&gt;&lt;P&gt;  SET PF-STATUS 'MAIN100'.&lt;/P&gt;&lt;P&gt;  SET TITLEBAR 'MAIN100'.&lt;/P&gt;&lt;P&gt;  IF g_custom_container IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    PERFORM create_and_init_alv CHANGING gt_outtab[]&lt;/P&gt;&lt;P&gt;                                         gt_fieldcat.&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;/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;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;MODULE pai INPUT.&lt;/P&gt;&lt;P&gt;  save_ok = sy-ucomm.&lt;/P&gt;&lt;P&gt;  CLEAR sy-ucomm.&lt;/P&gt;&lt;P&gt;  CASE save_ok.&lt;/P&gt;&lt;P&gt;    WHEN 'EXIT' OR 'BACK' OR 'CANCEL'.&lt;/P&gt;&lt;P&gt;      PERFORM exit_program.&lt;/P&gt;&lt;P&gt;    WHEN 'SWITCH'.&lt;/P&gt;&lt;P&gt;      PERFORM switch_edit_mode.&lt;/P&gt;&lt;P&gt;    WHEN OTHERS.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    do nothing&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  ENDCASE.&lt;/P&gt;&lt;P&gt;ENDMODULE.                    "pai INPUT&lt;/P&gt;&lt;P&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;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM exit_program.&lt;/P&gt;&lt;P&gt;  LEAVE PROGRAM.&lt;/P&gt;&lt;P&gt;ENDFORM.                    "exit_program&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  build_fieldcat&lt;/P&gt;&lt;P&gt;*&amp;amp;----&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;/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;PT_FIELDCAT  text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM build_fieldcat CHANGING pt_fieldcat TYPE lvc_t_fcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA ls_fcat TYPE lvc_s_fcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      i_structure_name = 'SBOOK'&lt;/P&gt;&lt;P&gt;    CHANGING&lt;/P&gt;&lt;P&gt;      ct_fieldcat      = pt_fieldcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT pt_fieldcat INTO ls_fcat.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Exchange smoker field with invoice field - just to&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;make the dependance between SMOKER and CLASS more transparent&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;(Smoking is only allowed in the first class).&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    IF ls_fcat-fieldname EQ 'SMOKER'.&lt;/P&gt;&lt;P&gt;      ls_fcat-col_pos = 11.&lt;/P&gt;&lt;P&gt;      ls_fcat-outputlen = 10.&lt;/P&gt;&lt;P&gt;      ls_fcat-edit = 'X'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Field 'checktable' is set to avoid shortdumps that are caused&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;by inconsistend data in check tables. You may comment this out&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;when the test data of the flight model is consistent in your system.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      ls_fcat-checktable = '!'.        "do not check foreign keys&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      MODIFY pt_fieldcat FROM ls_fcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    ELSEIF ls_fcat-fieldname EQ 'INVOICE'.&lt;/P&gt;&lt;P&gt;      ls_fcat-col_pos = 7.&lt;/P&gt;&lt;P&gt;      MODIFY pt_fieldcat FROM ls_fcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    ELSEIF    ls_fcat-fieldname EQ 'CLASS'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      ls_fcat-edit = 'X'.&lt;/P&gt;&lt;P&gt;      ls_fcat-outputlen = 5.&lt;/P&gt;&lt;P&gt;      ls_fcat-checktable = '!'.        "do not check foreign keys&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      MODIFY pt_fieldcat FROM ls_fcat.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    "build_fieldcat&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  create_and_init_alv&lt;/P&gt;&lt;P&gt;*&amp;amp;----&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;/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;PT_OUTTAB    text&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     --&amp;gt;PT_FIELDCAT  text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM create_and_init_alv CHANGING pt_outtab TYPE STANDARD TABLE&lt;/P&gt;&lt;P&gt;                                  pt_fieldcat TYPE lvc_t_fcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: lt_exclude TYPE ui_functions,&lt;/P&gt;&lt;P&gt;        ls_layout TYPE lvc_s_layo.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CREATE OBJECT g_custom_container&lt;/P&gt;&lt;P&gt;          EXPORTING container_name = g_container.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; CREATE OBJECT g_grid&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        EXPORTING i_parent = g_custom_container.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CREATE OBJECT gv_c_split&lt;/P&gt;&lt;P&gt;     EXPORTING&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      link_dynnr        = lv_dynnr&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      link_repid        = lv_repid&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      parent            = g_custom_container&lt;/P&gt;&lt;P&gt;      rows              = 2&lt;/P&gt;&lt;P&gt;      columns           = 1&lt;/P&gt;&lt;P&gt;     EXCEPTIONS&lt;/P&gt;&lt;P&gt;       cntl_error        = 1&lt;/P&gt;&lt;P&gt;       cntl_system_error = 2&lt;/P&gt;&lt;P&gt;       others            = 3    .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL METHOD gv_c_split-&amp;gt;set_border&lt;/P&gt;&lt;P&gt;   EXPORTING&lt;/P&gt;&lt;P&gt;     border            = space.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL METHOD gv_c_split-&amp;gt;get_container&lt;/P&gt;&lt;P&gt;     EXPORTING&lt;/P&gt;&lt;P&gt;       row       = 1&lt;/P&gt;&lt;P&gt;       column    = 1&lt;/P&gt;&lt;P&gt;     RECEIVING&lt;/P&gt;&lt;P&gt;       container = gv_c_ptv.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL METHOD gv_c_split-&amp;gt;set_row_height&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      id                = 1&lt;/P&gt;&lt;P&gt;      height            = 20&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      cntl_error        = 1&lt;/P&gt;&lt;P&gt;      cntl_system_error = 2&lt;/P&gt;&lt;P&gt;      OTHERS            = 6 .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL METHOD gv_c_split-&amp;gt;get_container&lt;/P&gt;&lt;P&gt;     EXPORTING&lt;/P&gt;&lt;P&gt;       row       = 2&lt;/P&gt;&lt;P&gt;       column    = 1&lt;/P&gt;&lt;P&gt;     RECEIVING&lt;/P&gt;&lt;P&gt;       container = gv_c_vp .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL METHOD gv_c_split-&amp;gt;set_row_height&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      id                = 2&lt;/P&gt;&lt;P&gt;      height            = 10&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      cntl_error        = 1&lt;/P&gt;&lt;P&gt;      cntl_system_error = 2&lt;/P&gt;&lt;P&gt;      OTHERS            = 3 .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;   CREATE OBJECT o_split&lt;/P&gt;&lt;P&gt;     EXPORTING&lt;/P&gt;&lt;P&gt;      parent            = gv_c_ptv&lt;/P&gt;&lt;P&gt;      with_border       = 1&lt;/P&gt;&lt;P&gt;     EXCEPTIONS&lt;/P&gt;&lt;P&gt;       cntl_error        = 1&lt;/P&gt;&lt;P&gt;       cntl_system_error = 2&lt;/P&gt;&lt;P&gt;       others            = 3.&lt;/P&gt;&lt;P&gt;  IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno&lt;/P&gt;&lt;P&gt;               WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; o_top = o_split-&amp;gt;top_left_container.&lt;/P&gt;&lt;P&gt; o_bot = o_split-&amp;gt;bottom_right_container.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; CREATE OBJECT gv_alv_ptv&lt;/P&gt;&lt;P&gt;     EXPORTING&lt;/P&gt;&lt;P&gt;       i_parent          = o_bot&lt;/P&gt;&lt;P&gt;     EXCEPTIONS&lt;/P&gt;&lt;P&gt;       error_cntl_create = 1&lt;/P&gt;&lt;P&gt;       error_cntl_init   = 2&lt;/P&gt;&lt;P&gt;       error_cntl_link   = 3&lt;/P&gt;&lt;P&gt;       error_dp_create   = 4&lt;/P&gt;&lt;P&gt;       others            = 5    .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CREATE OBJECT g_grid&lt;/P&gt;&lt;P&gt;        EXPORTING&lt;/P&gt;&lt;P&gt;          i_parent          = gv_c_vp&lt;/P&gt;&lt;P&gt;        EXCEPTIONS&lt;/P&gt;&lt;P&gt;          error_cntl_create = 1&lt;/P&gt;&lt;P&gt;          error_cntl_init   = 2&lt;/P&gt;&lt;P&gt;          error_cntl_link   = 3&lt;/P&gt;&lt;P&gt;          error_dp_create   = 4&lt;/P&gt;&lt;P&gt;          others            = 5    .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM build_fieldcat CHANGING pt_fieldcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Optionally restrict generic functions to 'change only'.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  (The user shall not be able to add new lines).&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM exclude_tb_functions CHANGING lt_exclude.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM build_data CHANGING pt_outtab.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ls_layout-grid_title = 'F4 help implemented for field CLASS'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CREATE OBJECT o_event_receiver.&lt;/P&gt;&lt;P&gt;  SET HANDLER o_event_receiver-&amp;gt;handle_top_of_page FOR gv_alv_ptv.&lt;/P&gt;&lt;P&gt;  SET HANDLER o_event_receiver-&amp;gt;handle_top_of_page FOR g_grid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CREATE OBJECT o_dd_doc EXPORTING style = 'ALV_GRID'&lt;/P&gt;&lt;P&gt;                                   no_margins = 'X'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL METHOD gv_alv_ptv-&amp;gt;set_table_for_first_display&lt;/P&gt;&lt;P&gt;   EXPORTING&lt;/P&gt;&lt;P&gt;     is_layout                    = ls_layout&lt;/P&gt;&lt;P&gt;  CHANGING&lt;/P&gt;&lt;P&gt;    it_outtab                     = pt_outtab[]&lt;/P&gt;&lt;P&gt;    it_fieldcatalog               = pt_fieldcat&lt;/P&gt;&lt;P&gt;  EXCEPTIONS&lt;/P&gt;&lt;P&gt;    invalid_parameter_combination = 1&lt;/P&gt;&lt;P&gt;    program_error                 = 2&lt;/P&gt;&lt;P&gt;    too_many_lines                = 3&lt;/P&gt;&lt;P&gt;    OTHERS                        = 4.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL METHOD g_grid-&amp;gt;set_table_for_first_display&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      it_toolbar_excluding = lt_exclude&lt;/P&gt;&lt;P&gt;      is_layout            = ls_layout&lt;/P&gt;&lt;P&gt;    CHANGING&lt;/P&gt;&lt;P&gt;      it_fieldcatalog      = pt_fieldcat&lt;/P&gt;&lt;P&gt;      it_outtab            = pt_outtab[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL METHOD gv_alv_ptv-&amp;gt;list_processing_events&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      i_event_name      = 'TOP_OF_PAGE'&lt;/P&gt;&lt;P&gt;       i_dyndoc_id       = o_dd_doc.&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;register f4 for field CLASS&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM register_events.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Set editable cells to ready for input initially&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CALL METHOD g_grid-&amp;gt;set_ready_for_input&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      i_ready_for_input = 1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                               "CREATE_AND_INIT_ALV&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  exclude_tb_functions&lt;/P&gt;&lt;P&gt;*&amp;amp;----&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;/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;PT_EXCLUDE text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM exclude_tb_functions CHANGING pt_exclude TYPE ui_functions.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Only allow to change data not to create new entries (exclude&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;generic functions).&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA ls_exclude TYPE ui_func.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ls_exclude = cl_gui_alv_grid=&amp;gt;mc_fc_loc_copy_row.&lt;/P&gt;&lt;P&gt;  APPEND ls_exclude TO pt_exclude.&lt;/P&gt;&lt;P&gt;  ls_exclude = cl_gui_alv_grid=&amp;gt;mc_fc_loc_delete_row.&lt;/P&gt;&lt;P&gt;  APPEND ls_exclude TO pt_exclude.&lt;/P&gt;&lt;P&gt;  ls_exclude = cl_gui_alv_grid=&amp;gt;mc_fc_loc_append_row.&lt;/P&gt;&lt;P&gt;  APPEND ls_exclude TO pt_exclude.&lt;/P&gt;&lt;P&gt;  ls_exclude = cl_gui_alv_grid=&amp;gt;mc_fc_loc_insert_row.&lt;/P&gt;&lt;P&gt;  APPEND ls_exclude TO pt_exclude.&lt;/P&gt;&lt;P&gt;  ls_exclude = cl_gui_alv_grid=&amp;gt;mc_fc_loc_move_row.&lt;/P&gt;&lt;P&gt;  APPEND ls_exclude TO pt_exclude.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                               " EXCLUDE_TB_FUNCTIONS&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  build_data&lt;/P&gt;&lt;P&gt;*&amp;amp;----&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;/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;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM build_data CHANGING pt_outtab TYPE STANDARD TABLE.&lt;/P&gt;&lt;P&gt;  DATA: ls_sbook TYPE sbook,&lt;/P&gt;&lt;P&gt;        l_index TYPE i.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECT * FROM sbook INTO TABLE gt_outtab UP TO g_max ROWS.&lt;/P&gt;&lt;P&gt;  IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;    PERFORM generate_entries CHANGING pt_outtab.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT pt_outtab INTO ls_sbook.&lt;/P&gt;&lt;P&gt;    l_index = sy-tabix.&lt;/P&gt;&lt;P&gt;    CLEAR ls_sbook-class.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Alternate between smoker and non smoker to make&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;it more obvious what this example is about&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    l_index = l_index MOD 2.&lt;/P&gt;&lt;P&gt;    IF l_index EQ 1.&lt;/P&gt;&lt;P&gt;      ls_sbook-smoker = 'X'.&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;      ls_sbook-smoker = ' '.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;    MODIFY pt_outtab FROM ls_sbook.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                               " build_data&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  generate_entries&lt;/P&gt;&lt;P&gt;*&amp;amp;----&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;/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;PT_SBOOK   text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM generate_entries CHANGING pt_sbook TYPE STANDARD TABLE.&lt;/P&gt;&lt;P&gt;  DATA: ls_sbook TYPE sbook,&lt;/P&gt;&lt;P&gt;        l_month(2) TYPE c,&lt;/P&gt;&lt;P&gt;        l_day(2) TYPE c,&lt;/P&gt;&lt;P&gt;        l_date(8) TYPE c,&lt;/P&gt;&lt;P&gt;	l_prebookid TYPE i.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ls_sbook-carrid = 'LH'.&lt;/P&gt;&lt;P&gt;  ls_sbook-connid = '0400'.&lt;/P&gt;&lt;P&gt;  ls_sbook-forcurkey = 'DEM'.&lt;/P&gt;&lt;P&gt;  ls_sbook-loccurkey = 'USD'.&lt;/P&gt;&lt;P&gt;  ls_sbook-custtype = 'B'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DO 110 TIMES.&lt;/P&gt;&lt;P&gt;    l_prebookid = sy-index.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    ls_sbook-forcuram = sy-index * 10.&lt;/P&gt;&lt;P&gt;    ls_sbook-loccuram = ls_sbook-loccuram * 2.&lt;/P&gt;&lt;P&gt;    ls_sbook-customid = sy-index.&lt;/P&gt;&lt;P&gt;    ls_sbook-counter = 18.&lt;/P&gt;&lt;P&gt;    ls_sbook-agencynum = 11.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    l_month = sy-index / 10 + 1.&lt;/P&gt;&lt;P&gt;    DO 2 TIMES.&lt;/P&gt;&lt;P&gt;      l_day = 3 + l_month + sy-index * 2.&lt;/P&gt;&lt;P&gt;      l_date+0(4) = '2000'.&lt;/P&gt;&lt;P&gt;      l_date+4(2) = l_month.&lt;/P&gt;&lt;P&gt;      l_date+6(2) = l_day.&lt;/P&gt;&lt;P&gt;      ls_sbook-fldate = l_date.&lt;/P&gt;&lt;P&gt;      SUBTRACT 3 FROM l_day.&lt;/P&gt;&lt;P&gt;      ls_sbook-order_date+0(6) = l_date+0(6).&lt;/P&gt;&lt;P&gt;      ls_sbook-order_date+6(2) = l_day.&lt;/P&gt;&lt;P&gt;      ls_sbook-bookid = l_prebookid * 2 + sy-index.&lt;/P&gt;&lt;P&gt;      IF sy-index EQ 1.&lt;/P&gt;&lt;P&gt;        ls_sbook-smoker = 'X'.&lt;/P&gt;&lt;P&gt;      ELSE.&lt;/P&gt;&lt;P&gt;        ls_sbook-smoker = space.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      ls_sbook-luggweight = l_prebookid * 10.&lt;/P&gt;&lt;P&gt;      IF ls_sbook-luggweight GE 1000.&lt;/P&gt;&lt;P&gt;        ls_sbook-wunit = 'G'.&lt;/P&gt;&lt;P&gt;        ls_sbook-class = 'C'.&lt;/P&gt;&lt;P&gt;      ELSE.&lt;/P&gt;&lt;P&gt;        ls_sbook-wunit = 'KG'.&lt;/P&gt;&lt;P&gt;        ls_sbook-class = 'Y'.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF ls_sbook-bookid &amp;gt; 40 AND ls_sbook-wunit EQ 'KG'.&lt;/P&gt;&lt;P&gt;        ls_sbook-invoice = 'X'.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;      IF ls_sbook-bookid EQ 2.&lt;/P&gt;&lt;P&gt;        ls_sbook-cancelled = 'X'.&lt;/P&gt;&lt;P&gt;        ls_sbook-class = 'F'.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      APPEND ls_sbook TO pt_sbook.&lt;/P&gt;&lt;P&gt;    ENDDO.&lt;/P&gt;&lt;P&gt;  ENDDO.&lt;/P&gt;&lt;P&gt;ENDFORM.                               " generate_entries&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  register_events&lt;/P&gt;&lt;P&gt;*&amp;amp;----&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;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM register_events.&lt;/P&gt;&lt;P&gt;*§1. Register event ONF4 at frontend using method&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   register_f4_for_fields. For this purpose, you pass a table&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   with all fields, for which you want to implement your own&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   f4 help.&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;remark: If you want to use an own f4 help for fields where&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        no standard f4 help exists set field F4AVAILABL for&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        this field in the fieldcatalog.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  DATA: lt_f4 TYPE lvc_t_f4 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR lt_f4.&lt;/P&gt;&lt;P&gt;  lt_f4-fieldname = 'CLASS'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;If you would like to deregister the field again,&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;pass value SPACE with field 'register'.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  lt_f4-register = 'X'.&lt;/P&gt;&lt;P&gt;*§  1b. If the value range in your f4 help depends on other&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      values of cells that are input enabled, set the&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      GETBEFORE parameter.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;The consequence is that the ALV Grid Control raises&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;event DATA_CHANGED before the f4 help is called to&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;check values that the f4 help depends on.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  lt_f4-getbefore = 'X'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;The next parameter is used to change values after onf4 has&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;been processed. The ALV Grid Control will raise&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;event DATA_CHANGED afterwards, if you set it.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  lt_f4-chngeafter = space.&lt;/P&gt;&lt;P&gt;  INSERT TABLE lt_f4.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL METHOD g_grid-&amp;gt;register_f4_for_fields&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      it_f4 = lt_f4[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;register events for abap objects (backend)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SET HANDLER o_event_receiver-&amp;gt;handle_f4 FOR g_grid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " register_events&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&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 status_0101 OUTPUT&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;MODULE status_0101 OUTPUT.&lt;/P&gt;&lt;P&gt;  SET PF-STATUS 'POPUP'.&lt;/P&gt;&lt;P&gt;  SET TITLEBAR 'POPUP'.&lt;/P&gt;&lt;P&gt;  CALL METHOD o_event_receiver-&amp;gt;show_f4.&lt;/P&gt;&lt;P&gt;ENDMODULE.                 " STATUS_0101  OUTPUT&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Module  USER_COMMAND_0101  INPUT&lt;/P&gt;&lt;P&gt;*&amp;amp;----&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;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;MODULE user_command_0101 INPUT.&lt;/P&gt;&lt;P&gt;  PERFORM user_command.&lt;/P&gt;&lt;P&gt;ENDMODULE.                 " USER_COMMAND_0101  INPUT&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  user_command&lt;/P&gt;&lt;P&gt;*&amp;amp;----&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;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM user_command.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: save_ok TYPE sy-ucomm.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  save_ok = sy-ucomm.&lt;/P&gt;&lt;P&gt;  CLEAR sy-ucomm.&lt;/P&gt;&lt;P&gt;  CASE save_ok.&lt;/P&gt;&lt;P&gt;    WHEN 'CANCEL'.&lt;/P&gt;&lt;P&gt;      CALL METHOD o_event_receiver-&amp;gt;reset.&lt;/P&gt;&lt;P&gt;      LEAVE TO SCREEN 0.&lt;/P&gt;&lt;P&gt;  ENDCASE.&lt;/P&gt;&lt;P&gt;ENDFORM.                    "user_command&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  switch_edit_mode&lt;/P&gt;&lt;P&gt;*&amp;amp;----&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;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM switch_edit_mode.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF g_grid-&amp;gt;is_ready_for_input( ) EQ 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;set edit enabled cells ready for input&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CALL METHOD g_grid-&amp;gt;set_ready_for_input&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        i_ready_for_input = 1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;lock edit enabled cells against input&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CALL METHOD g_grid-&amp;gt;set_ready_for_input&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        i_ready_for_input = 0.&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;Award points if found useful.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;Indrajit.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 31 May 2007 09:40:24 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/splitter-container/m-p/2319064#M508893</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-05-31T09:40:24Z</dc:date>
    </item>
    <item>
      <title>Re: splitter  container</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/splitter-container/m-p/2319065#M508894</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;We have a nice blog on this by vijay..&lt;/P&gt;&lt;P&gt;/people/vijaybabu.dudla/blog/2006/07/21/topofpage-in-alv-using-clguialvgrid&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Vidya.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 31 May 2007 09:49:25 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/splitter-container/m-p/2319065#M508894</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-05-31T09:49:25Z</dc:date>
    </item>
  </channel>
</rss>

