[ABAP] ALV-Grid: Zugriff auf geänderte Tabellenzeilen

CLASS lcl_events DEFINITION.
  PUBLIC SECTION.
    METHODS:
      on_data_changed FOR EVENT data_changed OF cl_gui_alv_grid
        IMPORTING
            er_data_changed
            sender.
ENDCLASS.

CLASS lcl_events IMPLEMENTATION.
  METHOD on_data_changed.

    FIELD-SYMBOLS: <fs_tab> TYPE table.
    FIELD-SYMBOLS: <fs_row> TYPE spfli.

* Datenreferenz auf Feldsymbol übergeben
    ASSIGN er_data_changed->mp_mod_rows->* TO <fs_tab>.

* geänderte Zeilen durchloopen
    LOOP AT <fs_tab> ASSIGNING <fs_row>.
      ...
    ENDLOOP.

  ENDMETHOD.
ENDCLASS.

[ABAP] ALV-Grid: Nach Drücken der Enter-Taste in die nächste Zeile springen

METHOD on_data_changed.
  DATA: lv_row_id TYPE lvc_s_row.
  DATA: lv_col_id TYPE lvc_s_col.
  DATA: lv_row_no TYPE lvc_s_roid.

* aktuelle Zelle holen
  o_alv->get_current_cell( IMPORTING
                             es_row_id = lv_row_id
                             es_col_id = lv_col_id
                             es_row_no = lv_row_no ).

* Wert für Zeile erhöhen
  lv_row_id-index  = lv_row_id-index  + 1.
  lv_row_no-row_id = lv_row_no-row_id + 1.

* akt. Zeile setzen,
* dabei prüfen, ob Zeilenindex nicht größer als Inhalt der internen
* Tabelle im ALV-Grid ist
  IF lv_row_id-index < lines( itab ).
    o_alv->set_current_cell_via_id( EXPORTING
                                      is_row_id    = lv_row_id
                                      is_column_id = lv_col_id
                                      is_row_no    = lv_row_no ).
  ENDIF.
ENDMETHOD.