<?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 on refresh in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/alv-on-refresh/m-p/2861868#M671140</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I am also having same problem...appreciate you help if you find a solution.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks&lt;/P&gt;&lt;P&gt;Bhavani Prasad.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 25 Sep 2007 19:09:59 GMT</pubDate>
    <dc:creator>former_member218863</dc:creator>
    <dc:date>2007-09-25T19:09:59Z</dc:date>
    <item>
      <title>ALV on refresh</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/alv-on-refresh/m-p/2861867#M671139</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;   I have an editable grid. The scenario goes like this. Say data records with item numbers 10 and 20 are shown on the screen. The user changes some data in 10 and clicks on delete on 20. Delete is application event in my case. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  On pressing delete, control goes to data_changed handler. Here I check the changes. Say the deletion was valid but the change in item 10 was valid. I add a protocol entry for item 10.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  Now, if I delete 20 from my table and do a refresh_table_display, 20 gets deleted. But if user presses enter without making any change in 10, it should be validated again because it has incorrect data. But now that we called refresh_table_display, data_changed handler will not be called.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  If I donot want to do a refresh, I need a way to delete rows from ALV without calling refresh_table_display.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  I am looking forward to your ideas on it.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks.&lt;/P&gt;&lt;P&gt;Srinivas.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 25 Sep 2007 17:04:17 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/alv-on-refresh/m-p/2861867#M671139</guid>
      <dc:creator>srinivas_anchuri</dc:creator>
      <dc:date>2007-09-25T17:04:17Z</dc:date>
    </item>
    <item>
      <title>Re: ALV on refresh</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/alv-on-refresh/m-p/2861868#M671140</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I am also having same problem...appreciate you help if you find a solution.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks&lt;/P&gt;&lt;P&gt;Bhavani Prasad.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 25 Sep 2007 19:09:59 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/alv-on-refresh/m-p/2861868#M671140</guid>
      <dc:creator>former_member218863</dc:creator>
      <dc:date>2007-09-25T19:09:59Z</dc:date>
    </item>
    <item>
      <title>Re: ALV on refresh</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/alv-on-refresh/m-p/2861869#M671141</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Srinivas&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Simply call the event handler method directly. If the validation fails you could save a flag within your event handler class and only let the user save the data if VALID_DATA = 'X'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Have a look at my sample report &amp;lt;b&amp;gt;ZUS_SDN_ALVGRID_EDITABLE_2&amp;lt;/b&amp;gt;:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;*&amp;amp;---------------------------------------------------------------------*
*&amp;amp; Report  ZUS_SDN_ALVGRID_EDITABLE_2
*&amp;amp;
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;
*&amp;amp;
*&amp;amp;---------------------------------------------------------------------*

REPORT  zus_sdn_alvgrid_editable_2.


TYPE-POOLS: abap.

DATA:
  gd_repid         type syrepid,
  gd_okcode        TYPE ui_func,
*
  gs_layout        TYPE lvc_s_layo,
  gt_fcat          TYPE lvc_t_fcat,
  go_docking       TYPE REF TO cl_gui_docking_container,
  go_grid          TYPE REF TO cl_gui_alv_grid.


TYPES: BEGIN OF ty_s_outtab.
INCLUDE TYPE bkpf.
TYPES:  celltab    TYPE lvc_t_styl.
TYPES: END OF ty_s_outtab.

DATA:
  gs_outtab        TYPE ty_s_outtab,
  gt_outtab        TYPE STANDARD TABLE OF ty_s_outtab
                   WITH DEFAULT KEY.



*---------------------------------------------------------------------*
*       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.


ENDCLASS.                    "lcl_eventhandler DEFINITION


*---------------------------------------------------------------------*
*       CLASS lcl_eventhandler IMPLEMENTATION
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
CLASS lcl_eventhandler IMPLEMENTATION.

  METHOD handle_data_changed.
*   define local data
    DATA:
      ls_outtab          LIKE LINE OF gt_outtab,
      lo_data_changed    TYPE REF TO cl_alv_changed_data_protocol.

    IF ( er_data_changed IS NOT BOUND ).
      CREATE OBJECT lo_data_changed
        EXPORTING
*            I_CONTAINER =
          i_calling_alv = sender.
    ELSE.
      lo_data_changed = er_data_changed.
    ENDIF.

    LOOP AT gt_outtab INTO ls_outtab
                      WHERE ( gjahr &amp;lt; '2000' ).
      CALL METHOD lo_data_changed-&amp;gt;add_protocol_entry
        EXPORTING
          i_msgid     = '8I'
          i_msgty     = 'E'
          i_msgno     = '751'
          i_msgv1     = ls_outtab-gjahr
          i_msgv2     = '&amp;gt;= 2000'
*              I_MSGV3     =
*              I_MSGV4     =
          i_fieldname = 'GJAHR'
*              I_ROW_ID    =
*              I_TABIX     =
          .
    ENDLOOP.
    IF ( syst-subrc = 0 ).
      lo_data_changed-&amp;gt;display_protocol( ).
    ENDIF.


  ENDMETHOD.                    "handle_data_changed

ENDCLASS.                    "lcl_eventhandler IMPLEMENTATION




START-OF-SELECTION.

  SELECT * FROM  bkpf INTO CORRESPONDING FIELDS OF
      TABLE gt_outtab UP TO 100 ROWS.

  LOOP AT gt_outtab INTO gs_outtab.
    gs_outtab-gjahr = '1980' + syst-tabix.

    MODIFY gt_outtab FROM gs_outtab.
  ENDLOOP.

  PERFORM validate_output.



* Create docking container
  CREATE OBJECT go_docking
    EXPORTING
      parent                      = cl_gui_container=&amp;gt;screen0
      ratio                       = 90
    EXCEPTIONS
      OTHERS                      = 6.
  IF sy-subrc &amp;lt;&amp;gt; 0.
*   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.


* Create ALV grid
  CREATE OBJECT go_grid
    EXPORTING
      i_parent          = go_docking
    EXCEPTIONS
      OTHERS            = 5.
  IF sy-subrc &amp;lt;&amp;gt; 0.
*   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.




* Build fieldcatalog
  PERFORM build_fieldcatalog.

  PERFORM set_layout.

  SET HANDLER:
    lcl_eventhandler=&amp;gt;handle_data_changed FOR go_grid.


* Display data
  CALL METHOD go_grid-&amp;gt;set_table_for_first_display
    EXPORTING
      is_layout       = gs_layout
    CHANGING
      it_outtab       = gt_outtab
      it_fieldcatalog = gt_fcat
    EXCEPTIONS
      OTHERS          = 4.
  IF sy-subrc &amp;lt;&amp;gt; 0.
*   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.



* Link the docking container to the target dynpro
  gd_repid = syst-repid.
  CALL METHOD go_docking-&amp;gt;link
    EXPORTING
      repid                       = gd_repid
      dynnr                       = '0100'
*      CONTAINER                   =
    EXCEPTIONS
      OTHERS                      = 4.
  IF sy-subrc &amp;lt;&amp;gt; 0.
*   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.


* ok-code field = GD_OKCODE
  CALL SCREEN '0100'.
* Flow logic (no elements on screen):
*  PROCESS BEFORE OUTPUT.
*    MODULE STATUS_0100.
**
*  PROCESS AFTER INPUT.
*    MODULE USER_COMMAND_0100.


END-OF-SELECTION.

*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Module  STATUS_0100  OUTPUT
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
  SET PF-STATUS 'STATUS_0100'.
*  SET TITLEBAR 'xxx'.

**      CALL METHOD go_grid1-&amp;gt;refresh_table_display
***        EXPORTING
***          IS_STABLE      =
***          I_SOFT_REFRESH =
**        EXCEPTIONS
**          FINISHED       = 1
**          others         = 2
**              .
**      IF sy-subrc &amp;lt;&amp;gt; 0.
***       MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
***                  WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
**      ENDIF.

ENDMODULE.                 " STATUS_0100  OUTPUT

*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Module  USER_COMMAND_0100  INPUT
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.

  TRANSLATE gd_okcode TO UPPER CASE.


  go_grid-&amp;gt;check_changed_data( ).

  CASE gd_okcode.
    WHEN 'BACK' OR
         'END'  OR
         'CANC'.
      SET SCREEN 0. LEAVE SCREEN.



    WHEN OTHERS.
  ENDCASE.


  PERFORM handle_changed_data.
  PERFORM validate_output.
  CALL METHOD go_grid-&amp;gt;refresh_table_display
*      EXPORTING
*        IS_STABLE      =
*        I_SOFT_REFRESH =
    EXCEPTIONS
      finished       = 1
      OTHERS         = 2
          .
  IF sy-subrc &amp;lt;&amp;gt; 0.
*     MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*                WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.


  CLEAR: gd_okcode.

ENDMODULE.                 " USER_COMMAND_0100  INPUT


*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  BUILD_FIELDCATALOG_KNB1
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  --&amp;gt;  p1        text
*  &amp;lt;--  p2        text
*----------------------------------------------------------------------*
FORM build_fieldcatalog .
* define local data
  DATA:
    ls_fcat        TYPE lvc_s_fcat.



  CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
    EXPORTING
*     I_BUFFER_ACTIVE              =
      i_structure_name             = 'BKPF'
*     I_CLIENT_NEVER_DISPLAY       = 'X'
*     I_BYPASSING_BUFFER           =
*     I_INTERNAL_TABNAME           =
    CHANGING
      ct_fieldcat                  = gt_fcat
    EXCEPTIONS
      inconsistent_interface       = 1
      program_error                = 2
      OTHERS                       = 3.
  IF sy-subrc &amp;lt;&amp;gt; 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.





  LOOP AT gt_fcat INTO ls_fcat
                  WHERE ( fieldname = 'GJAHR' ).
    ls_fcat-edit    = abap_true.
    MODIFY gt_fcat FROM ls_fcat.
  ENDLOOP.


ENDFORM.                    " BUILD_FIELDCATALOG_KNB1

*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  VALIDATE_OUTPUT
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  --&amp;gt;  p1        text
*  &amp;lt;--  p2        text
*----------------------------------------------------------------------*
FORM validate_output .
* define local data
  CONSTANTS:
    lc_red    TYPE int4  VALUE '00000087'.

  DATA:
    ls_cell         TYPE lvc_s_styl,
    lt_celltab_nok  TYPE lvc_t_styl,
    lt_celltab_ok   TYPE lvc_t_styl.


  ls_cell-fieldname = 'GJAHR'.
  ls_cell-style = lc_red.
  INSERT ls_cell INTO TABLE lt_celltab_nok.

  ls_cell-fieldname = 'GJAHR'.
  ls_cell-style  = cl_gui_alv_grid=&amp;gt;mc_style_disabled.
  INSERT ls_cell INTO TABLE lt_celltab_ok.

  LOOP AT gt_outtab INTO gs_outtab.
    IF ( gs_outtab-gjahr &amp;lt; '2000' ).
      gs_outtab-celltab = lt_celltab_nok.
    ELSE.
      gs_outtab-celltab = lt_celltab_ok.
    ENDIF.


    MODIFY gt_outtab FROM gs_outtab INDEX syst-tabix.
  ENDLOOP.


ENDFORM.                    " VALIDATE_OUTPUT
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  SET_LAYOUT
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  --&amp;gt;  p1        text
*  &amp;lt;--  p2        text
*----------------------------------------------------------------------*
FORM set_layout .

  CLEAR: gs_layout.

  gs_layout-cwidth_opt = abap_true.
  gs_layout-zebra      = abap_true.

  gs_layout-stylefname = 'CELLTAB'.

ENDFORM.                    " SET_LAYOUT
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  HANDLE_CHANGED_DATA
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  --&amp;gt;  p1        text
*  &amp;lt;--  p2        text
*----------------------------------------------------------------------*
FORM handle_changed_data .

  lcl_eventhandler=&amp;gt;handle_data_changed( sender = go_grid ).

ENDFORM.                    " HANDLE_CHANGED_DATA&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;  Uwe&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 25 Sep 2007 19:32:02 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/alv-on-refresh/m-p/2861869#M671141</guid>
      <dc:creator>uwe_schieferstein</dc:creator>
      <dc:date>2007-09-25T19:32:02Z</dc:date>
    </item>
  </channel>
</rss>

