<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: ALV an using Object Oriented ABAP and containers. in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/alv-an-using-object-oriented-abap-and-containers/m-p/1876624#M368573</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Shabari&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;A possible solution for your problem could look like this: &lt;/P&gt;&lt;P&gt;- the report should not allow to enter more than two times currency='CHF'&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;*&amp;amp;---------------------------------------------------------------------*
*&amp;amp; Report  ZUS_SDN_BCALV_GRID_DEMO_EDIT
*&amp;amp;
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;
*&amp;amp; NOTE: copy sample report BCALV_GRID_DEMO (including screen) and
*&amp;amp;       replace entire coding of report.
*&amp;amp; Flow logic of dynpro 100:
*&amp;amp;PROCESS BEFORE OUTPUT.
*&amp;amp;  MODULE PBO.
*&amp;amp;
*&amp;amp;PROCESS AFTER INPUT.
*&amp;amp;  MODULE PAI.
*&amp;amp;
*&amp;amp;---------------------------------------------------------------------*

PROGRAM zus_sdn_bcalv_grid_demo_edit.
DATA: ok_code LIKE sy-ucomm,
      gt_sflight TYPE TABLE OF sflight,
      g_container TYPE scrfname VALUE 'BCALV_GRID_DEMO_0100_CONT1',
      grid1  TYPE REF TO cl_gui_alv_grid,
      g_custom_container TYPE REF TO cl_gui_custom_container.





DATA:
  gd_count  TYPE i,
  gs_fcat   TYPE lvc_s_fcat,
  gt_fcat   TYPE lvc_t_fcat.

*---------------------------------------------------------------------*
*       CLASS lcl_eventhandler DEFINITION
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
CLASS lcl_eventhandler DEFINITION.

  PUBLIC SECTION.



    CLASS-METHODS:
    handle_data_changed FOR EVENT data_changed OF cl_gui_alv_grid
      IMPORTING
        er_data_changed
        e_onf4
        e_onf4_before
        e_onf4_after
        e_ucomm
        sender,

    handle_data_changed_finished FOR EVENT
                        data_changed_finished OF cl_gui_alv_grid
      IMPORTING
        e_modified
        et_good_cells
        sender.

ENDCLASS.                    "lcl_eventhandler DEFINITION


*---------------------------------------------------------------------*
*       CLASS lcl_eventhandler IMPLEMENTATION
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
CLASS lcl_eventhandler IMPLEMENTATION.



  METHOD handle_data_changed.
  ENDMETHOD.                    "handle_data_changed


  METHOD handle_data_changed_finished.
*   define local data
    DATA:
      ld_count   TYPE i,
      lo_log     TYPE REF TO cl_alv_changed_data_protocol.


*   Check modified cells
    ld_count = 0.
    LOOP AT et_good_cells TRANSPORTING NO FIELDS
            WHERE ( fieldname = 'CURRENCY'  AND
                    value     = 'CHF' ).
      ADD 1 TO ld_count.
    ENDLOOP.


    IF ( ld_count &amp;gt;= 3 ).
    ELSE.
      LOOP AT gt_sflight TRANSPORTING NO FIELDS
           WHERE ( currency = 'CHF' ).
        ADD 1 TO ld_count.
        IF ( ld_count &amp;gt;= 3 ).
          EXIT.
        ENDIF.
      ENDLOOP.
    ENDIF.



    IF ( ld_count &amp;gt;= 3 ).
      CREATE OBJECT lo_log
        EXPORTING
*          I_CONTAINER =
          i_calling_alv = grid1.

      CALL METHOD lo_log-&amp;gt;add_protocol_entry
        EXPORTING
          i_msgid     = '00'
          i_msgty     = 'E'
          i_msgno     = '398'
          i_msgv1     = 'Only 2x CHF currency allowed'
*            I_MSGV2     =
*            I_MSGV3     =
*            I_MSGV4     =
          i_fieldname = 'CURRENCY'
*            i_row_id    =
*            I_TABIX     =
          .

      lo_log-&amp;gt;display_protocol( ).
    ENDIF.


  ENDMETHOD.                    "handle_data_changed_finished


ENDCLASS.                    "lcl_eventhandler IMPLEMENTATION


START-OF-SELECTION.

*---------------------------------------------------------------------*
*       MAIN                                                          *
*---------------------------------------------------------------------*

  SELECT * FROM sflight INTO TABLE gt_sflight.

  CALL SCREEN 100.


*---------------------------------------------------------------------*
*       MODULE PBO OUTPUT                                             *
*---------------------------------------------------------------------*
MODULE pbo OUTPUT.
  SET PF-STATUS 'MAIN100'.
  IF g_custom_container IS INITIAL.
    CREATE OBJECT g_custom_container
           EXPORTING container_name = g_container.

*   Instantiate ALV grid control
    CREATE OBJECT grid1
           EXPORTING i_parent = g_custom_container.
    CALL METHOD grid1-&amp;gt;set_table_for_first_display
      EXPORTING
        i_structure_name = 'SFLIGHT'
      CHANGING
        it_outtab        = gt_sflight.


    CALL METHOD grid1-&amp;gt;get_frontend_fieldcatalog
      IMPORTING
        et_fieldcatalog = gt_fcat.
    gs_fcat-edit = 'X'.
    MODIFY gt_fcat FROM gs_fcat
      TRANSPORTING edit
      WHERE ( fieldname = 'CURRENCY' ).
    CALL METHOD grid1-&amp;gt;set_frontend_fieldcatalog
      EXPORTING
        it_fieldcatalog = gt_fcat.

    grid1-&amp;gt;refresh_table_display( ).


*   Set event handlers
    SET HANDLER:
      lcl_eventhandler=&amp;gt;handle_data_changed          FOR grid1,
      lcl_eventhandler=&amp;gt;handle_data_changed_finished FOR grid1.

*§3.Optionally register ENTER to raise event DATA_CHANGED.
*   (Per default the user may check data by using the check icon).
    CALL METHOD grid1-&amp;gt;register_edit_event
      EXPORTING
        i_event_id = cl_gui_alv_grid=&amp;gt;mc_evt_enter.
  ENDIF.



ENDMODULE.                    "PBO OUTPUT
*---------------------------------------------------------------------*
*       MODULE PAI INPUT                                              *
*---------------------------------------------------------------------*
MODULE pai INPUT.
*   to react on oi_custom_events:
  CALL METHOD cl_gui_cfw=&amp;gt;dispatch.


  CASE ok_code.
    WHEN 'EXIT'.
      PERFORM exit_program.
    WHEN OTHERS.
      grid1-&amp;gt;check_changed_data( ).  " check data changes

      gd_count = 0.
      LOOP AT gt_sflight TRANSPORTING NO FIELDS
              WHERE ( currency = 'CHF' ).
        ADD 1 TO gd_count.
        CHECK ( gd_count &amp;lt; 3 ).
      ENDLOOP.

      IF ( gd_count &amp;gt; 2 ).
        MESSAGE 'Only 2x CHF currency allowed' TYPE 'E'.
      ELSE.
        MESSAGE 'Currencies ok' TYPE 'S'.
      ENDIF.
  ENDCASE.
  CLEAR ok_code.
ENDMODULE.                    "PAI INPUT
*---------------------------------------------------------------------*
*       FORM EXIT_PROGRAM                                             *
*---------------------------------------------------------------------*
FORM exit_program.
*  CALL METHOD G_CUSTOM_CONTAINER-&amp;gt;FREE.
*  CALL METHOD CL_GUI_CFW=&amp;gt;FLUSH.
  LEAVE PROGRAM.
ENDFORM.                    "EXIT_PROGRAM&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;  Uwe&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 09 Jan 2007 04:33:42 GMT</pubDate>
    <dc:creator>uwe_schieferstein</dc:creator>
    <dc:date>2007-01-09T04:33:42Z</dc:date>
    <item>
      <title>ALV an using Object Oriented ABAP and containers.</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/alv-an-using-object-oriented-abap-and-containers/m-p/1876620#M368569</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;&lt;/P&gt;&lt;P&gt;i am displaying employee details from some table using ALV grid display..and on clicking F4 on editable field i want to display some values from where user will select one of the values..&lt;/P&gt;&lt;P&gt;an two employees are assigned to same project.. an if the third employee also assigned the same project it should check this on F4 and give an error message..&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 08 Jan 2007 05:08:51 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/alv-an-using-object-oriented-abap-and-containers/m-p/1876620#M368569</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-01-08T05:08:51Z</dc:date>
    </item>
    <item>
      <title>Re: ALV an using Object Oriented ABAP and containers.</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/alv-an-using-object-oriented-abap-and-containers/m-p/1876621#M368570</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;chk this pgm.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;lt;b&amp;gt;BCALV_EDIT_08&amp;lt;/b&amp;gt; This report implements an ALV Grid Control with an application specific F4 help. The following aspects &lt;/P&gt;&lt;P&gt;are dealt with:&lt;/P&gt;&lt;P&gt;	(1) how to replace the standard f4 help&lt;/P&gt;&lt;P&gt;	(2) how to pass the selected value to the ALV Grid Control&lt;/P&gt;&lt;P&gt;	(3) how to build an f4 help, whose value range depend on a value of another cell.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;Anver&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 08 Jan 2007 05:16:31 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/alv-an-using-object-oriented-abap-and-containers/m-p/1876621#M368570</guid>
      <dc:creator>anversha_s</dc:creator>
      <dc:date>2007-01-08T05:16:31Z</dc:date>
    </item>
    <item>
      <title>Re: ALV an using Object Oriented ABAP and containers.</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/alv-an-using-object-oriented-abap-and-containers/m-p/1876622#M368571</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Use the event onf4 for putting f4 help. To do validations use the event data_changed_finished.&lt;/P&gt;&lt;P&gt;In this event u can give ur messages.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CLASS lcl_event_handler DEFINITION .&lt;/P&gt;&lt;P&gt;  PUBLIC SECTION.&lt;/P&gt;&lt;P&gt; METHODS handle_onf4 FOR EVENT onf4 OF cl_gui_alv_grid IMPORTING&lt;/P&gt;&lt;P&gt;    e_fieldname es_row_no.&lt;/P&gt;&lt;P&gt; METHODS handle_data_changed_finished FOR EVENT data_changed_finished OF cl_gui_alv_grid importing e_modified.&lt;/P&gt;&lt;P&gt;  ENDCLASS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-----Class implementation&lt;/P&gt;&lt;P&gt;CLASS lcl_event_handler IMPLEMENTATION.&lt;/P&gt;&lt;P&gt;*----F4 help&lt;/P&gt;&lt;P&gt;  METHOD handle_onf4.&lt;/P&gt;&lt;P&gt;    PERFORM handle_onf4 USING e_fieldname es_row_no.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.                    "handle_onf4&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;METHOD handle_data_changed_finished.  &lt;/P&gt;&lt;P&gt;   PERFORM handle_data_changed_finished USING e_modified.&lt;/P&gt;&lt;P&gt;ENDMETHOD.&lt;/P&gt;&lt;P&gt;ENDCLASS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM handle_onf4  USING    e_fieldname TYPE lvc_fname&lt;/P&gt;&lt;P&gt;                           es_row_no TYPE lvc_s_roid.&lt;/P&gt;&lt;P&gt;  IF e_fieldname = 'ZSHELLTYP'.&lt;/P&gt;&lt;P&gt;    DATA: it_f4 TYPE lvc_t_f4 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;    it_f4-fieldname = 'fieldname'.&lt;/P&gt;&lt;P&gt;    it_f4-register = 'X'.&lt;/P&gt;&lt;P&gt;    it_f4-getbefore  = 'X'.&lt;/P&gt;&lt;P&gt;    it_f4-chngeafter = 'X'.&lt;/P&gt;&lt;P&gt;    APPEND it_f4.&lt;/P&gt;&lt;P&gt;    CALL METHOD o_alvgrid-&amp;gt;register_f4_for_fields&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        it_f4 = it_f4[].&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM.                    " handle_onf4&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM handle_data_changed using ir_data_changed TYPE REF TO cl_alv_changed_protocol.&lt;/P&gt;&lt;P&gt;data: ls_mod_cell TYPE lvc_s_modi,&lt;/P&gt;&lt;P&gt;        lv_value type lvc_value.&lt;/P&gt;&lt;P&gt;CALL method &lt;/P&gt;&lt;P&gt;ir_data_changed-&amp;gt;get_cell_value&lt;/P&gt;&lt;P&gt;   exporting i_row_id = ls_mod_cell -row_id&lt;/P&gt;&lt;P&gt;             i_fieldname = 'fieldname'&lt;/P&gt;&lt;P&gt;  importing e_value = lv_value.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;IF lv_value = 'TRY'  AND ls_mod_cell-value &amp;gt; '300'.&lt;/P&gt;&lt;P&gt;CALL METHOD ir_data_changed -&amp;gt;add_protocol_entry&lt;/P&gt;&lt;P&gt;  EXPORTING&lt;/P&gt;&lt;P&gt; i_msg_id = 'SU'&lt;/P&gt;&lt;P&gt;i_msg_no ='000'&lt;/P&gt;&lt;P&gt;i_msgty = 'E'&lt;/P&gt;&lt;P&gt;i_msgv1 = 'THIS no cannot exceed 300'&lt;/P&gt;&lt;P&gt;i_fieldname = ls_mod_cell-fieldname&lt;/P&gt;&lt;P&gt;i_row_id = ls_mod_cell-row_id.&lt;/P&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Try it out.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 08 Jan 2007 06:12:33 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/alv-an-using-object-oriented-abap-and-containers/m-p/1876622#M368571</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-01-08T06:12:33Z</dc:date>
    </item>
    <item>
      <title>Re: ALV an using Object Oriented ABAP and containers.</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/alv-an-using-object-oriented-abap-and-containers/m-p/1876623#M368572</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Use the event onf4 for putting f4 help. To do validations use the event data_changed_finished.&lt;/P&gt;&lt;P&gt;In this event u can give ur messages.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CLASS lcl_event_handler DEFINITION .&lt;/P&gt;&lt;P&gt;  PUBLIC SECTION.&lt;/P&gt;&lt;P&gt; METHODS handle_onf4 FOR EVENT onf4 OF cl_gui_alv_grid IMPORTING&lt;/P&gt;&lt;P&gt;    e_fieldname es_row_no.&lt;/P&gt;&lt;P&gt; METHODS handle_data_changed_finished FOR EVENT data_changed_finished OF cl_gui_alv_grid importing e_modified.&lt;/P&gt;&lt;P&gt;  ENDCLASS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-----Class implementation&lt;/P&gt;&lt;P&gt;CLASS lcl_event_handler IMPLEMENTATION.&lt;/P&gt;&lt;P&gt;*----F4 help&lt;/P&gt;&lt;P&gt;  METHOD handle_onf4.&lt;/P&gt;&lt;P&gt;    PERFORM handle_onf4 USING e_fieldname es_row_no.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.                    "handle_onf4&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;METHOD handle_data_changed_finished.  &lt;/P&gt;&lt;P&gt;   PERFORM handle_data_changed_finished USING e_modified.&lt;/P&gt;&lt;P&gt;ENDMETHOD.&lt;/P&gt;&lt;P&gt;ENDCLASS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM handle_onf4  USING    e_fieldname TYPE lvc_fname&lt;/P&gt;&lt;P&gt;                           es_row_no TYPE lvc_s_roid.&lt;/P&gt;&lt;P&gt;  IF e_fieldname = 'ZSHELLTYP'.&lt;/P&gt;&lt;P&gt;    DATA: it_f4 TYPE lvc_t_f4 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;    it_f4-fieldname = 'fieldname'.&lt;/P&gt;&lt;P&gt;    it_f4-register = 'X'.&lt;/P&gt;&lt;P&gt;    it_f4-getbefore  = 'X'.&lt;/P&gt;&lt;P&gt;    it_f4-chngeafter = 'X'.&lt;/P&gt;&lt;P&gt;    APPEND it_f4.&lt;/P&gt;&lt;P&gt;    CALL METHOD o_alvgrid-&amp;gt;register_f4_for_fields&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        it_f4 = it_f4[].&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM.                    " handle_onf4&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM handle_data_changed using ir_data_changed TYPE REF TO cl_alv_changed_protocol.&lt;/P&gt;&lt;P&gt;data: ls_mod_cell TYPE lvc_s_modi,&lt;/P&gt;&lt;P&gt;        lv_value type lvc_value.&lt;/P&gt;&lt;P&gt;CALL method &lt;/P&gt;&lt;P&gt;ir_data_changed-&amp;gt;get_cell_value&lt;/P&gt;&lt;P&gt;   exporting i_row_id = ls_mod_cell -row_id&lt;/P&gt;&lt;P&gt;             i_fieldname = 'fieldname'&lt;/P&gt;&lt;P&gt;  importing e_value = lv_value.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;IF lv_value = 'TRY'  AND ls_mod_cell-value &amp;gt; '300'.&lt;/P&gt;&lt;P&gt;CALL METHOD ir_data_changed -&amp;gt;add_protocol_entry&lt;/P&gt;&lt;P&gt;  EXPORTING&lt;/P&gt;&lt;P&gt; i_msg_id = 'SU'&lt;/P&gt;&lt;P&gt;i_msg_no ='000'&lt;/P&gt;&lt;P&gt;i_msgty = 'E'&lt;/P&gt;&lt;P&gt;i_msgv1 = 'THIS no cannot exceed 300'&lt;/P&gt;&lt;P&gt;i_fieldname = ls_mod_cell-fieldname&lt;/P&gt;&lt;P&gt;i_row_id = ls_mod_cell-row_id.&lt;/P&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Try it out.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 08 Jan 2007 06:12:45 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/alv-an-using-object-oriented-abap-and-containers/m-p/1876623#M368572</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-01-08T06:12:45Z</dc:date>
    </item>
    <item>
      <title>Re: ALV an using Object Oriented ABAP and containers.</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/alv-an-using-object-oriented-abap-and-containers/m-p/1876624#M368573</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Shabari&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;A possible solution for your problem could look like this: &lt;/P&gt;&lt;P&gt;- the report should not allow to enter more than two times currency='CHF'&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;*&amp;amp;---------------------------------------------------------------------*
*&amp;amp; Report  ZUS_SDN_BCALV_GRID_DEMO_EDIT
*&amp;amp;
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;
*&amp;amp; NOTE: copy sample report BCALV_GRID_DEMO (including screen) and
*&amp;amp;       replace entire coding of report.
*&amp;amp; Flow logic of dynpro 100:
*&amp;amp;PROCESS BEFORE OUTPUT.
*&amp;amp;  MODULE PBO.
*&amp;amp;
*&amp;amp;PROCESS AFTER INPUT.
*&amp;amp;  MODULE PAI.
*&amp;amp;
*&amp;amp;---------------------------------------------------------------------*

PROGRAM zus_sdn_bcalv_grid_demo_edit.
DATA: ok_code LIKE sy-ucomm,
      gt_sflight TYPE TABLE OF sflight,
      g_container TYPE scrfname VALUE 'BCALV_GRID_DEMO_0100_CONT1',
      grid1  TYPE REF TO cl_gui_alv_grid,
      g_custom_container TYPE REF TO cl_gui_custom_container.





DATA:
  gd_count  TYPE i,
  gs_fcat   TYPE lvc_s_fcat,
  gt_fcat   TYPE lvc_t_fcat.

*---------------------------------------------------------------------*
*       CLASS lcl_eventhandler DEFINITION
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
CLASS lcl_eventhandler DEFINITION.

  PUBLIC SECTION.



    CLASS-METHODS:
    handle_data_changed FOR EVENT data_changed OF cl_gui_alv_grid
      IMPORTING
        er_data_changed
        e_onf4
        e_onf4_before
        e_onf4_after
        e_ucomm
        sender,

    handle_data_changed_finished FOR EVENT
                        data_changed_finished OF cl_gui_alv_grid
      IMPORTING
        e_modified
        et_good_cells
        sender.

ENDCLASS.                    "lcl_eventhandler DEFINITION


*---------------------------------------------------------------------*
*       CLASS lcl_eventhandler IMPLEMENTATION
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
CLASS lcl_eventhandler IMPLEMENTATION.



  METHOD handle_data_changed.
  ENDMETHOD.                    "handle_data_changed


  METHOD handle_data_changed_finished.
*   define local data
    DATA:
      ld_count   TYPE i,
      lo_log     TYPE REF TO cl_alv_changed_data_protocol.


*   Check modified cells
    ld_count = 0.
    LOOP AT et_good_cells TRANSPORTING NO FIELDS
            WHERE ( fieldname = 'CURRENCY'  AND
                    value     = 'CHF' ).
      ADD 1 TO ld_count.
    ENDLOOP.


    IF ( ld_count &amp;gt;= 3 ).
    ELSE.
      LOOP AT gt_sflight TRANSPORTING NO FIELDS
           WHERE ( currency = 'CHF' ).
        ADD 1 TO ld_count.
        IF ( ld_count &amp;gt;= 3 ).
          EXIT.
        ENDIF.
      ENDLOOP.
    ENDIF.



    IF ( ld_count &amp;gt;= 3 ).
      CREATE OBJECT lo_log
        EXPORTING
*          I_CONTAINER =
          i_calling_alv = grid1.

      CALL METHOD lo_log-&amp;gt;add_protocol_entry
        EXPORTING
          i_msgid     = '00'
          i_msgty     = 'E'
          i_msgno     = '398'
          i_msgv1     = 'Only 2x CHF currency allowed'
*            I_MSGV2     =
*            I_MSGV3     =
*            I_MSGV4     =
          i_fieldname = 'CURRENCY'
*            i_row_id    =
*            I_TABIX     =
          .

      lo_log-&amp;gt;display_protocol( ).
    ENDIF.


  ENDMETHOD.                    "handle_data_changed_finished


ENDCLASS.                    "lcl_eventhandler IMPLEMENTATION


START-OF-SELECTION.

*---------------------------------------------------------------------*
*       MAIN                                                          *
*---------------------------------------------------------------------*

  SELECT * FROM sflight INTO TABLE gt_sflight.

  CALL SCREEN 100.


*---------------------------------------------------------------------*
*       MODULE PBO OUTPUT                                             *
*---------------------------------------------------------------------*
MODULE pbo OUTPUT.
  SET PF-STATUS 'MAIN100'.
  IF g_custom_container IS INITIAL.
    CREATE OBJECT g_custom_container
           EXPORTING container_name = g_container.

*   Instantiate ALV grid control
    CREATE OBJECT grid1
           EXPORTING i_parent = g_custom_container.
    CALL METHOD grid1-&amp;gt;set_table_for_first_display
      EXPORTING
        i_structure_name = 'SFLIGHT'
      CHANGING
        it_outtab        = gt_sflight.


    CALL METHOD grid1-&amp;gt;get_frontend_fieldcatalog
      IMPORTING
        et_fieldcatalog = gt_fcat.
    gs_fcat-edit = 'X'.
    MODIFY gt_fcat FROM gs_fcat
      TRANSPORTING edit
      WHERE ( fieldname = 'CURRENCY' ).
    CALL METHOD grid1-&amp;gt;set_frontend_fieldcatalog
      EXPORTING
        it_fieldcatalog = gt_fcat.

    grid1-&amp;gt;refresh_table_display( ).


*   Set event handlers
    SET HANDLER:
      lcl_eventhandler=&amp;gt;handle_data_changed          FOR grid1,
      lcl_eventhandler=&amp;gt;handle_data_changed_finished FOR grid1.

*§3.Optionally register ENTER to raise event DATA_CHANGED.
*   (Per default the user may check data by using the check icon).
    CALL METHOD grid1-&amp;gt;register_edit_event
      EXPORTING
        i_event_id = cl_gui_alv_grid=&amp;gt;mc_evt_enter.
  ENDIF.



ENDMODULE.                    "PBO OUTPUT
*---------------------------------------------------------------------*
*       MODULE PAI INPUT                                              *
*---------------------------------------------------------------------*
MODULE pai INPUT.
*   to react on oi_custom_events:
  CALL METHOD cl_gui_cfw=&amp;gt;dispatch.


  CASE ok_code.
    WHEN 'EXIT'.
      PERFORM exit_program.
    WHEN OTHERS.
      grid1-&amp;gt;check_changed_data( ).  " check data changes

      gd_count = 0.
      LOOP AT gt_sflight TRANSPORTING NO FIELDS
              WHERE ( currency = 'CHF' ).
        ADD 1 TO gd_count.
        CHECK ( gd_count &amp;lt; 3 ).
      ENDLOOP.

      IF ( gd_count &amp;gt; 2 ).
        MESSAGE 'Only 2x CHF currency allowed' TYPE 'E'.
      ELSE.
        MESSAGE 'Currencies ok' TYPE 'S'.
      ENDIF.
  ENDCASE.
  CLEAR ok_code.
ENDMODULE.                    "PAI INPUT
*---------------------------------------------------------------------*
*       FORM EXIT_PROGRAM                                             *
*---------------------------------------------------------------------*
FORM exit_program.
*  CALL METHOD G_CUSTOM_CONTAINER-&amp;gt;FREE.
*  CALL METHOD CL_GUI_CFW=&amp;gt;FLUSH.
  LEAVE PROGRAM.
ENDFORM.                    "EXIT_PROGRAM&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;  Uwe&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 09 Jan 2007 04:33:42 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/alv-an-using-object-oriented-abap-and-containers/m-p/1876624#M368573</guid>
      <dc:creator>uwe_schieferstein</dc:creator>
      <dc:date>2007-01-09T04:33:42Z</dc:date>
    </item>
    <item>
      <title>Re: ALV an using Object Oriented ABAP and containers.</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/alv-an-using-object-oriented-abap-and-containers/m-p/1876625#M368574</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;how can i display the wrong cells red?&lt;/P&gt;&lt;P&gt;Best regards,&lt;/P&gt;&lt;P&gt;TomSd&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 31 Oct 2007 11:12:07 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/alv-an-using-object-oriented-abap-and-containers/m-p/1876625#M368574</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-10-31T11:12:07Z</dc:date>
    </item>
    <item>
      <title>Re: ALV an using Object Oriented ABAP and containers.</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/alv-an-using-object-oriented-abap-and-containers/m-p/1876626#M368575</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;You can use this for displaying an error within a cell. I use it within the handle_data_changed method:&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;
DATA: lv_changed TYPE lvc_s_modi,

LOOP AT er_data_changed-&amp;gt;mt_good_cells INTO lv_changed

* If you find an error, then: 
      CALL METHOD er_data_changed-&amp;gt;add_protocol_entry
           EXPORTING
             i_msgid = 'SU'
             i_msgno = '000'
             i_msgty = 'E'
             i_msgv1 = 'Any message 1''
             i_msgv2 = 'Any message 2'
             i_fieldname = lv_changed-fieldname
             i_row_id = lv_changed-row_id .
endloop.
&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Edited by: cesarjusto on Feb 3, 2010 11:56 PM&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 03 Feb 2010 22:45:03 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/alv-an-using-object-oriented-abap-and-containers/m-p/1876626#M368575</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2010-02-03T22:45:03Z</dc:date>
    </item>
  </channel>
</rss>

