ALV Liste, Werte ändern

Die Objektorientierung mit ABAP®: Vererbung, Dynamische Programmierung, GUI Controls (u.a. ALV im OO).
5 Beiträge • Seite 1 von 1
5 Beiträge Seite 1 von 1

ALV Liste, Werte ändern

Beitrag von codierknecht (ForumUser / 84 / 0 / 0 ) »
Hallo zusammen,

ich beschäftige mich zur Zeit mit der ALV Grid und den möglichkeiten, Zellenwerte zu ändern.

Ich stehe nun vor folgendem Problem:
ich kann bestimmte Werte ändern, diese werden auch in der Darstellung übernommen, jedoch nicht in der übergebenen ITAB.

Ich habe mich entsprechend dem Report BCALV_EDIT_03 soweit vorgetastet, dass ich den geänderten Wert auslesen kann.

Die in dem Report verwendeten Methoden und Ereignisse kann ich jedoch nicht in der Doku zur Klasse cl_gui_alv_grid finden. Was mir nicht so gefällt ist dieser Ergebnisreport im Fehlerfall. Kann ich diesen umgehen?
Wie ändere ich die Werte in der internen Tabelle, wenn diese ok sind?

hier mal ein paar Codeschnipsel:

Code: Alles auswählen.

*======================================================
* globale Klassendefinition
*======================================================
class lcl_event_receiver definition deferred.
data: g_event_receiver type ref to lcl_event_receiver.

*----------------------------------------------------------------------*
*       CLASS lcl_event_receiver DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
class lcl_event_receiver definition.

  public section.
    methods:
      handle_data_changed
         for event data_changed of cl_gui_alv_grid
             importing er_data_changed.

endclass.                    "lcl_event_receiver DEFINITION

*======================================================
* globale Klassenimplementierung
*======================================================

class lcl_event_receiver implementation.
  method handle_data_changed.

    data: ls_good type lvc_s_modi,
          error_in_data(1) type c,
          neu_menge(13) type p decimals 3,
          neu_einheit type meins,
          neu_matnr type matnr,
          neu_charge(10) type c.

    error_in_data = space.
    break-point.
    loop at er_data_changed->mt_good_cells into ls_good.
      case ls_good-fieldname.

* CHECK: Ist die Menge mit gültigen Werten gefüllt?
        when 'MENGE_3'.
          call method er_data_changed->get_cell_value
            EXPORTING
              i_row_id    = ls_good-row_id
              i_fieldname = ls_good-fieldname
            IMPORTING
              e_value     = neu_menge.

* CHECK: wurde eine gültige Mengeneinheit eingegeben?
        when 'EINHEIT_3'.
          call method er_data_changed->get_cell_value
            EXPORTING
              i_row_id    = ls_good-row_id
              i_fieldname = ls_good-fieldname
            IMPORTING
              e_value     = neu_einheit.
      endcase.

      call method er_data_changed->get_cell_value
        EXPORTING
          i_row_id    = ls_good-row_id
          i_fieldname = 'MATERIAL'
        IMPORTING
          e_value     = neu_matnr.


      call method er_data_changed->get_cell_value
        EXPORTING
          i_row_id    = ls_good-row_id
          i_fieldname = 'CHARGE'
        IMPORTING
          e_value     = neu_charge.

    endloop.
  endmethod.                    "handle_data_changed

endclass.                    "lcl_event_receiver IMPLEMENTATION
viel weiterer Code und dann

Code: Alles auswählen.

    CALL METHOD grid_r->set_ready_for_input
      EXPORTING
        I_READY_FOR_INPUT = 1.


  call method grid_r->register_edit_event
    EXPORTING
      i_event_id = cl_gui_alv_grid=>mc_evt_enter.

  create object g_event_receiver.
  set handler g_event_receiver->handle_data_changed for grid_r.


gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Beitrag von DeathGuardian (Expert / 759 / 0 / 3 ) »
Das fehlt glaub noch:

Code: Alles auswählen.

call method grid_r->register_edit_event 
    EXPORTING 
      i_event_id = cl_gui_alv_grid=>mc_evt_modified.
Nämlich "mc_evt_modified", du hast ja nur "mc_evt_enter".

Beitrag von codierknecht (ForumUser / 84 / 0 / 0 ) »
Vielen Dank für den Hinweis, werde ich gleich einmal einbauen.

Bliebe noch die Frage, wie ich den "neuen" Inhalt der ALV Liste am geschicktesten in die itab übertrage. Gibts da was fertiges oder muss ich hier Zeile für Zeile und Spalte für Spalte einzeln durchgehen?

Denn die übergebene interne Tabelle ändert dich bei mir nicht, wenn sich der Inhalt der ALV Grid ändert.

Beitrag von DeathGuardian (Expert / 759 / 0 / 3 ) »
Wenn du das, von meinem letzten Post miteingebaut hast, müsste sich deine Itab mit ändern. Und zwar ganz automatisch!

Passiert direkt nach dem dem DATA_CHANGE mit Hilfe von "er_data_changed".

Beitrag von codierknecht (ForumUser / 84 / 0 / 0 ) »
Ja das passt so.

Vielen Dank dafür.
Wenn ich jetzt noch statt des Fehlerreports eine Message ausgeben könnte, dann wär es perfekt. Kann man den Report per Parameter oder ähnliches ausschalten? Ich stelle mir das so vor, dass der Fokus auf der fehlerhaften Zeile bleibt und eine Message ausgegeben wird.

Seite 1 von 1

Vergleichbare Themen

4
Antw.
3582
Views
Abhängige Werte-Liste (F4-Werte)
von Gast » 27.12.2005 10:34 • Verfasst in ABAP® Core
4
Antw.
2318
Views
Liste möglicher Werte für ein Tabellenfeld?
von Kaiser » 04.10.2005 08:55 • Verfasst in ABAP® für Anfänger
4
Antw.
4183
Views
Filter auf ALV-Liste - "Werte von Selektion ausschließen"?
von 205er » 05.01.2017 11:38 • Verfasst in ABAP® Core
1
Antw.
3189
Views
Dialogsteuerung Liste->Dynpro->Liste sy-ucomm
von cut1 » 08.12.2006 14:28 • Verfasst in Dialogprogrammierung
3
Antw.
4283
Views
Screen->Liste->Screen und dann wieder Liste???
von dimes » 19.07.2007 15:19 • Verfasst in Dialogprogrammierung

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

line_exists evaluieren
vor 2 Tagen von Radinator gelöst 6 / 226
Was zum Knobeln....
vor 2 Tagen von a-dead-trousers 5 / 414

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Aktuelle Forenbeiträge

line_exists evaluieren
vor 2 Tagen von Radinator gelöst 6 / 226
Was zum Knobeln....
vor 2 Tagen von a-dead-trousers 5 / 414

Unbeantwortete Forenbeiträge

Erweiterung in ME51N/ME52N:
vor einer Woche von ABAPlerv 1 / 1635
Erweiterung in ME51N/ME52N:
vor einer Woche von ABAPlerv 1 / 1542