CL_GUI_ALV_GRID - Prüfung neu eingefügter Zeile

Benutzeroberflächen in SAP®-Systemen.
12 Beiträge • Seite 1 von 1
12 Beiträge Seite 1 von 1

CL_GUI_ALV_GRID - Prüfung neu eingefügter Zeile

Beitrag von deejey (Specialist / 422 / 129 / 45 ) »
Meine Güte ist das alles mühsam wenn man das nicht gewohnt ist und es nicht aus dem FF kennt: nach viel Kampf und Budgetüberschreitung läuft es nun halbwegs wie es soll, geänderte Daten werden per Event getriggert und können geprüft werden, aber:

a) wenn ich im Fehlerfall eine message (S display like E) ausgebe zieht ab dem 2. Enter der Event DATA_CHANGED leider nicht mehr. Es klappt über dieses Fehlerpopup ->add_protocol_entry, bei jedem Enter wird Event DATA_CHANGED ausgelöst, aber das Fenster nervt weil unnötig und man muss es wegklicken, ich hätte es lieber als normale Fehlermeldung. Wieso werden Folgenter nicht als Änderung getriggert?

b) Man kann per Button neue Zeilen anlegen, leider werden die mir aber nicht als geändert gemeldet, ich finde auch keinen Event new_line oder so ... ich muss auch die Daten der neuen Zeile prüfen. Jemand eine Idee wie ich an die neue Zeile zur Prüfung rankomme?

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


Re: CL_GUI_ALV_GRID - Prüfung neu eingefügter Zeile

Beitrag von deejey (Specialist / 422 / 129 / 45 ) »
b) hat sich vermutlich erledigt, DATA_CHANGED liefert viel mehr als ich dachte:
MT_MOD_CELLS
MT_GOOD_CELLS
MT_DELETED_ROWS
MT_INSERTED_ROWS
und noch einiges andere ...

Muss mich einfach mehr mit diesem ALV-Gerümpel beschäftigen, aber wozu, in einem Monat habe ich alles wieder vergessen 😝

Re: CL_GUI_ALV_GRID - Prüfung neu eingefügter Zeile

Beitrag von jocoder (Specialist / 343 / 3 / 102 ) »
Das gehört zum Beruf des Softwareentwicklers bzw. Beraters doch dazu, sich mit Sachen zu beschäftigen, die einem neu sind. Man wächst schließlich mit seinen Aufgaben. Ein Tipp von mir: Erwähne so was nie in einem Vorstellungsgespräch. Sässe ich auf der anderen Seite, hätte sich dieses Gespräch sofort erledigt.

Wenn du einmal das Prinzip "Event-Handler zu registrieren" verstanden hast, kann du dieses Prinzip auch in vielen anderen Applikationen verwenden. Das hilft ungemein Abhängigkeiten zwischen einzelnen Code-Modulen zu reduzieren. Und was man einmal gemacht hat, vergisst man nicht so schnell.

Folgende Benutzer bedankten sich beim Autor jocoder für den Beitrag:
deejey


Re: CL_GUI_ALV_GRID - Prüfung neu eingefügter Zeile

Beitrag von a-dead-trousers (Top Expert / 4414 / 224 / 1186 ) »
Bezüglich dem Punkt a.
Nur so eine Vermutung, aber wenn man im Eventhandler von Controls eine Message auslöst befindet man sich normalerweise NICHT in einem gewöhnlichen PAI/PBO Lauf. Daher könnte ich mir vorstellen, dass durch die Message der Eventhandler nicht sauber beendet werden kann und deswegen beim nächsten Enter nicht mehr triggert. Deswegen vermutlich auch das "Fenster", welches Bestandteil des ALV-Grid selbst ist.

Du könntst versuchen, die Fehler im DATA_CHANGED Event nur zu sammeln und im DATA_CHANGED_FINISHED (oder so ähnlich) dann die Messages auszugeben. Das Event wird ganz am Schluss der ALV-Verarbeitung getriggert. Möglich, dass das "näher" am PAI/PBO des SapGui liegt. Man kann Events aber auch als "Application-Event" registrieren lassen (Parameter i_appl_events im Constructor). Dann wird immer PAI/PBO ausgelöst, was aber bei großen Datenmengen im ALV zu Performanceproblemen (unschönes Flackern, Verlust des Eingabe-Focus usw.) führen kann. Ob daher die DATA_CHANGED-Events intern auch als "Application-Event" registriert werden können, kann ich jetzt leider nicht sagen.
Zuletzt geändert von a-dead-trousers am 11.03.2020 10:19, insgesamt 2-mal geändert.

Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
deejey

Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: CL_GUI_ALV_GRID - Prüfung neu eingefügter Zeile

Beitrag von deejey (Specialist / 422 / 129 / 45 ) »
jocoder hat geschrieben:
11.03.2020 09:58
Das gehört zum Beruf des Softwareentwicklers bzw. Beraters doch dazu, sich mit Sachen zu beschäftigen, die einem neu sind. Man wächst schließlich mit seinen Aufgaben. Ein Tipp von mir: Erwähne so was nie in einem Vorstellungsgespräch. Sässe ich auf der anderen Seite, hätte sich dieses Gespräch sofort erledigt.
Warum sollte ich ALV-Handling in einem Vorstellungsgespräch erwähnen, kuriose Idee ... das Problem ist nicht sich damit beschäftigen sondern die mangelnde Routine: der Dialogprogrammanteil der letzten 10 Jahre beträgt bei mir gefühlt 10 - 15%, viele mühsam erarbeitete Details gehen einfach mangels Wiederholung verloren

Re: CL_GUI_ALV_GRID - Prüfung neu eingefügter Zeile

Beitrag von deejey (Specialist / 422 / 129 / 45 ) »
a-dead-trousers hat geschrieben:
11.03.2020 10:17
Bezüglich dem Punkt a.
Nur so eine Vermutung, aber wenn man im Eventhandler von Controls eine Message auslöst befindet man sich normalerweise NICHT in einem gewöhnlichen PAI/PBO Lauf. Daher könnte ich mir vorstellen, dass durch die Message der Eventhandler nicht sauber beendet werden kann und deswegen beim nächsten Enter nicht mehr triggert. Deswegen vermutlich auch das "Fenster", welches Bestandteil des ALV-Grid selbst ist.

Du könntst versuchen, die Fehler im DATA_CHANGED Event nur zu sammeln und im DATA_CHANGED_FINISHED (oder so ähnlich) dann die Messages auszugeben. Das Event wird ganz am Schluss der ALV-Verarbeitung getriggert. Möglich, dass das "näher" am PAI/PBO des SapGui liegt. Man kann Events aber auch als "Application-Event" registrieren lassen (Parameter i_appl_events im Constructor). Dann wird immer PAI/PBO ausgelöst, was aber bei großen Datenmengen im ALV zu Performanceproblemen (unschönes Flackern, Verlust des Eingabe-Focus usw.) führen kann. Ob daher die DATA_CHANGED-Events intern auch als "Application-Event" registriert werden können, kann ich jetzt leider nicht sagen.
Ich werde es mal probieren, DATA_CHANGED_FINISHED habe ich erst heute morgen zufällig entdeckt, weiß noch nicht genau was dahinter steckt, da ist auch noch eine ganze Menge anderer Sache was die liefern, mal schauen wozu das alles gut ist.

Interessant ist noch Folgendes: wenn man in der Prüfmethode eine E-Message ausgibt, dann wird sie zwar angezeigt, aber beim nächsten Enter wird das Programm einfach beendet, ohne erkennbare Spur oder Debugmöglichkeit 😜 das zerreisst den ALV-Ablauf offenbar komplett.

Re: CL_GUI_ALV_GRID - Prüfung neu eingefügter Zeile

Beitrag von a-dead-trousers (Top Expert / 4414 / 224 / 1186 ) »
deejey hat geschrieben:
11.03.2020 10:32
Interessant ist noch Folgendes: wenn man in der Prüfmethode eine E-Message ausgibt, dann wird sie zwar angezeigt, aber beim nächsten Enter wird das Programm einfach beendet, ohne erkennbare Spur oder Debugmöglichkeit 😜 das zerreisst den ALV-Ablauf offenbar komplett.
Das hat jetzt nichts speziell mit dem ALV-Grid zu tun. In der Hilfe zum Befehl MESSAGE sollte eine Tabelle aufscheinen, in der beschrieben ist, zu welchen "Zeitpunkten" in der Ablauflogik, der Befehl sich wie verhällt. Weil er sich eben je nach Kontext anders verhallten kann, sollte man ihn auch im Sinne des klassischen MVC (oder ähnlichen Programmierparadigmen) besser nicht verwenden.

Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
deejey

Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: CL_GUI_ALV_GRID - Prüfung neu eingefügter Zeile

Beitrag von jocoder (Specialist / 343 / 3 / 102 ) »
Das Event DATA_CHANGED wird von der Methode cl_gui_alv_grid=>save_data nur dann getriggert, wenn auch Daten seit dem letzten Refresh geändert wurden. Werden zwischen ersten und zweiten Enter-Aufruf Daten im ALV-Grid geändert?
Wenn du die Fehlermeldung mit der Methode add_protocol_entry dem Protokoll hinzufügst, nimmt das ALV-Grid die Änderung nicht an. Bei message 'S' display like 'E' wird die Änderung direkt angenommen und beim nächsten Enter triggert das ALV-Grid nur, wenn der Benutzer Änderungen vorgenommen hat. Eine Möglichkeit dies zu umgehen, wäre eine Warnmeldung (message type 'W').

Re: CL_GUI_ALV_GRID - Prüfung neu eingefügter Zeile

Beitrag von deejey (Specialist / 422 / 129 / 45 ) »
Das habe ich ausgetrickst und lösche im Fehlerfall die "Good"-Zeile so wie es die Protokollmethode auch macht 😇 dann klappen auch weitere Enter ... aber das werde ich so nicht lassen, dann müssen die eben mit dem Popup leben und sorgfältiger eingeben, und ich bleibe im SAP-Standard, das Getrickse mit Message ist eh nicht ganz sauber.

Die elende neue Zeile macht mir mehr Schwierigkeiten: bei Button neue Zeile erzeuge ich einen neuen ITab-Eintrag und belege Felder vor und sortiere ihn korrekt ein, das ist soweit ok, aber der erkennt das nicht als Änderung, Enter löst keinen Event aus, das ist blöd,denn in MT_INSERTED_ROWS ist sie nicht enthalten, was darauf hinweist, dass mein Handling der neuen Zeile irgendwie nicht im SAP-Sinne ist ...

Re: CL_GUI_ALV_GRID - Prüfung neu eingefügter Zeile

Beitrag von jocoder (Specialist / 343 / 3 / 102 ) »
Nachdem Einfügen in die ITAB dürfte ein refresh_table_display reichen.

Re: CL_GUI_ALV_GRID - Prüfung neu eingefügter Zeile

Beitrag von deejey (Specialist / 422 / 129 / 45 ) »
Habe ich versucht, direkt nach dem append der neuen Zeile, hat sich nichts geändert, habe auch "update_frontend" versucht :) so manifestieren sich meine Probleme: ich weiß nicht im Detail was die Methoden machen und wo es sinnvoll ist sie einzusetzen und wo nicht, kriege es hauptsächlich durch rumprobieren raus oder übers web wie hier


Seite 1 von 1

Vergleichbare Themen

2
Antw.
888
Views
ALV Mehr editierbare Felder in eingefügter Zeile
von Basler84 » 13.12.2016 21:55 • Verfasst in ABAP® Core
4
Antw.
13143
Views
ALV-Grid Zeile farbig
von nikibert » 01.09.2008 09:56 • Verfasst in ABAP® für Anfänger
0
Antw.
1363
Views
ALV GRID (OO) - Zeile ändern?
von Mavrix » 19.06.2007 10:18 • Verfasst in ABAP® für Anfänger
2
Antw.
5145
Views
Zeile markieren ALV Grid
von MichaelK » 27.06.2015 16:30 • Verfasst in ABAP® Core
3
Antw.
4887
Views
ALV-Grid: einzelne Zeile editieren
von OliTe » 19.07.2005 12:20 • Verfasst in ABAP® für Anfänger

Ü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.

Unbeantwortete Forenbeiträge

SD_PRINT_TERMS_OF_PAYMENT
vor einer Woche von Manfred K. 1 / 1939
BUSOBJEKT zu CMIS PHIO ermitteln
vor 4 Wochen von snooga87 1 / 3763