Zellen im ALV vergleichen

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
4 Beiträge • Seite 1 von 1
4 Beiträge Seite 1 von 1

Zellen im ALV vergleichen

Beitrag von Dörk (ForumUser / 75 / 0 / 0 ) »
Hallo Leute.

Hab mal ne Frage. Ist es möglich, dass man zwei verschieden Zellen in einem ALV grid in der selben Zeile vergleichen kann.
Wäre sehr hilfreich, um dem Benutzer verbotene Eingaben aufzuzeigen.

Beispiel:
Zeile 1, Vergleich von Zelle 1 und 2.
Wenn in 1 ein "X" steht und der User versucht in Zelle 2 such ein "X" einzugeben, kommt ein popup und sagt, dass das nicht geht.

Kann mir da vielleicht jemand helfen?

Gruß Dirk
follow the white rabbit ;)

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


Beitrag von popeiko (ForumUser / 47 / 0 / 1 ) »
Hallo.

Wenn ich dich recht verstehe, willst du eine Eingabeprüfung für einen editierbares ALV-Grid realisieren.

Dazu musst du deinem Grid mitteilen, dass es auf Eingabe-Events reagieren soll:

Code: Alles auswählen.

CALL METHOD gx_grid->register_edit_event
  EXPORTING
    i_event_id = cl_gui_alv_grid=>mc_evt_enter
  EXCEPTIONS
    OTHERS     = 0.
Bei Enter im Grid wird also ein Event ausgelöst, dass du aber noch mit einer eigenen Klasse abfangen musst:

Code: Alles auswählen.

SET HANDLER gx_event_receiver->data_changed FOR gx_grid.
Deine Handler-Methode bekommt mehrere Parameter geliefert. Einer davon ist ein Objekt der Klasse CL_ALV_CHANGED_DATA_PROTOCOL. In dieser sind alle Änderungen aufgeführt, die seit dem letzten ENTER gemacht wurden.

In der Tabelle mt_good_cells sind alle Änderungen, die eine Prüfung gegen das DD bestanden haben (sofern im Grid für die Spalte eine Prüftabelle angegeben ist oder eine Prüftabelle für die zu Grunde liegende Domäne definiert ist).

Wichtig ist, dass die Änderungen beim Aufruf der Handler-Methode noch nicht in deiner internen Tabelle gelandet sind. Daher kannst du dir die Werte, die aktuell im Grid stehen entweder aus mt_mod_cells oder mt_good_cells holen oder mit der Methode get_cell_value direkt einzelne Zellen des Grids auslesen.
Wenn du nun feststellst, das in Zelle 1,1 ein X steht und in Zelle 1,2 auch (obwohl das nicht erlaubt ist) kannst du per add_protocol_entry eine Fehlernachricht für die fehlerhafte Zelle eintragen. Dann würde ein Protokollfenster mit genau dieser Nachricht hochpoppen und die fehlerhafte Zelle rot markiert.

Guck dir die Klasse mal an, denn alles zu beschreiben wäre langwierig.

Wenn du noch Fragen hast, gerne.

Gruß Heiko.

Beitrag von Dörk (ForumUser / 75 / 0 / 0 ) »
Hi.

Hab schon ne andere Klasse verwendet, die auf eingaben reagiert.
Mein Problem ist nur, dass sie immer nur die letzten Werte der Änderung aufnimmt und nicht schon bestehende Wetre prüft.
Sollte zu Beispiel beim Programmaufruf schon ein "X" in der ersten Zelle stehen, soll er bei der zweiten Zelle nach der Eingabe eines "X" sagen, dass in Zelle eins schon ein "X" steht.

Das ist mein großes Problem :(

Gruß Dörk
follow the white rabbit ;)

Beitrag von popeiko (ForumUser / 47 / 0 / 1 ) »
Ich sehe jetzt das Problem nicht so ganz. Mit der Methode, die ich vorgeschlagen habe kannst du doch bei ENTER die kompletten ersten beiden Gridspalten durchgehen und pro Zeile, in der fälschlicherweise zwei X stehen einen Protokolleintrag schreiben.
Diese Fehler werden bei jedem ENTER wieder angemeckert, bis schließlich alle Fehler dieser Art behoben sind.

Gruß Heiko.

Seite 1 von 1

Vergleichbare Themen

8
Antw.
7994
Views
Zellen im ALV einfärben
von RiffRaff » 29.12.2004 17:26 • Verfasst in ABAP® Core
4
Antw.
2104
Views
Schließen Zellen im ALV
von SAP_ENTWICKLER » 09.04.2015 13:34 • Verfasst in ABAP® Core
0
Antw.
883
Views
Zellen im TableView
von Aggressor » 01.02.2006 14:18 • Verfasst in Web-Dynpro, BSP + BHTML
12
Antw.
10660
Views
Mehrzeilige Zellen im ALV?
von mawi » 31.05.2007 15:15 • Verfasst in ABAP Objects®
0
Antw.
1681
Views
Table: Zellen-Eigenschaften
von fba9901 » 04.11.2014 21:10 • Verfasst in Web-Dynpro, BSP + BHTML

Über diesen Beitrag


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

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.