Problem bei Sortierung von farbigen Zeilen in alv

Getting started ... Alles für einen gelungenen Start.
10 Beiträge • Seite 1 von 1
10 Beiträge Seite 1 von 1

Problem bei Sortierung von farbigen Zeilen in alv

Beitrag von Legxis (Specialist / 160 / 90 / 28 ) »
Hallo!

Ich bin immernoch an meinem Programm, dass Aufträge auswerten soll. Ich habe die alv Ausgabe so erstellt, dass die Zeilen farbing unterschieden werden, je nach der VBELN. Sieht so aus:

Bild
Allerdings ist nun das Problem, dass wenn man die Liste nach etwas sortiert, diese farbige Unterscheidung natürlich kaputt geht, da alle Zeilen ihre vorherigen Farben behalten.

Ich frage mich, wie ich das lösen könnte:
1. Ich verbiete sortieren (geht das überhaupt?)
2. Ich verändere/lösche die Färbung wenn sortiert wird (wie macht man das?)

Ich würde gerne noch weitere Ideen hören und würde gerne wissen, wie ich diese umsetzen kann, besonders #2, da ich im Moment dazu tendiere, die Farbüng einfach ganz zu löschen wenn man sortiert. Weiß aber nicht, ob das geht. Danke im Voraus
( SAP ECC 6.0, NetWeaver 7.0, ohne unicode, ohne support/enhancement packages )

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


Re: Problem bei Sortierung von farbigen Zeilen in alv

Beitrag von ewx (Top Expert / 4784 / 294 / 628 ) »
das Einfachste ist, auf die Farbgebung komplett zu verzichten.
Ich sehe zwar den Grund für die Anforderung, allerdings sind gleiche Auftragsnummern bereits dadurch gut kenntlich, wenn man die Standard-Einstellung im Layout des ALV-Grid belässt, in dem gleiche Feldinhalte zusammengefasst werden.
[_] ohne Zusammenfassen von Einträgen bei der Sortierung
Dafür muss im Layout nach diesem Feld sortiert werden.

Meines Erachtens ist das völlig ausreichend. Alles andere ist
(a) Ressourcenverschwendung (Ihr habt sicherlich wichtigere Probleme auf die du deine Programmierkünste anwenden kannst...)
(b) macht es das Programm schwerer wartbar und unnötig kompliziert (von den genannten und noch nicht erkannten Seiteneffekten mal ganz abgesehen).

Re: Problem bei Sortierung von farbigen Zeilen in alv

Beitrag von Legxis (Specialist / 160 / 90 / 28 ) »
ewx hat geschrieben:allerdings sind gleiche Auftragsnummern bereits dadurch gut kenntlich, wenn man die Standard-Einstellung im Layout des ALV-Grid belässt, in dem gleiche Feldinhalte zusammengefasst werden.
Aber es wird ja nur zusammengefasst wenn man nach dem Feld sortiert, und das macht eingentlich kein Anwender.
ewx hat geschrieben:(a) Ressourcenverschwendung (Ihr habt sicherlich wichtigere Probleme auf die du deine Programmierkünste anwenden kannst...)
Da ich nur Azubi bin werde ich nicht für viel gebraucht, es gibt kaum Aufgaben für mich. Ich könnte die Zeit wenigstens nutzen, um Programme zu verbessern.
ewx hat geschrieben:(b) macht es das Programm schwerer wartbar und unnötig kompliziert (von den genannten und noch nicht erkannten Seiteneffekten mal ganz abgesehen).
Da die Farbfunktion komplett in einer Funktion ist, wäre es kein Problem, sie wieder herauszunehmen, das Programm wäre nicht schwerer wartbar. Wenn keine Lösung gut genug ist, dann nehme ich es raus, aber wenigstens wüsste ich dann, wie man es macht. Bisher habe ich immer nur eine alv ausgegeben und gut ist. Wie man danach bei bestimmten Aktionen noch weiter verarbeitet weiß ich nicht.
( SAP ECC 6.0, NetWeaver 7.0, ohne unicode, ohne support/enhancement packages )

Re: Problem bei Sortierung von farbigen Zeilen in alv

Beitrag von a-dead-trousers (Top Expert / 4271 / 213 / 1140 ) »
Legxis hat geschrieben:
ewx hat geschrieben:allerdings sind gleiche Auftragsnummern bereits dadurch gut kenntlich, wenn man die Standard-Einstellung im Layout des ALV-Grid belässt, in dem gleiche Feldinhalte zusammengefasst werden.
Aber es wird ja nur zusammengefasst wenn man nach dem Feld sortiert, und das macht eingentlich kein Anwender.
Das kann man aber beim Erstaufruf des ALV schon mitgeben (Parameter IT_SORT in SET_TABLE_FOR_FIRST_DISPLAY).
Legxis hat geschrieben:
ewx hat geschrieben:(b) macht es das Programm schwerer wartbar und unnötig kompliziert (von den genannten und noch nicht erkannten Seiteneffekten mal ganz abgesehen).
Da die Farbfunktion komplett in einer Funktion ist, wäre es kein Problem, sie wieder herauszunehmen, das Programm wäre nicht schwerer wartbar. Wenn keine Lösung gut genug ist, dann nehme ich es raus, aber wenigstens wüsste ich dann, wie man es macht. Bisher habe ich immer nur eine alv ausgegeben und gut ist. Wie man danach bei bestimmten Aktionen noch weiter verarbeitet weiß ich nicht.
Das Problem ist, dass in deinem Fall zumindest eine der beiden Standard-Funktionen für "Sortieren" oder "Einfärben" komplett von Hand gebaut werden müsste.
Normalerweise wird das Sortieren intern vom ALV Grid erledigt und danach gibt es keine Möglichkeit mehr die Daten (ohne großen Aufwand) zu modifizieren. Das bedeutet, dass die Sortierung UND die Einfärbung außerhalb erfolgen müssten und die Standard-Funktion im Grid "deaktiviert" werden müsste. Das wäre mit einem vertretbaren Aufwand noch relativ einfach möglich. Der Benutzer verliert dadurch aber zu einem gewissen Grad auch an Komfort (z.B. mit Rechtsklick Sortieren wird nicht mehr funktionieren).
Die andere, wesentlich kompliziertere Lösung ist, nach der Sortierung und noch bevor die Daten an den Client geschickt werden einzugreifen. Dazu hat Enno das notwendige Werkzeug in der Anleitung http://www.tricktresor.de/blog/zellen-verbinden/ schon sehr gut beschrieben. Damit lassen sich die Daten des Grids nach (fast) allen möglichen Vorstellungen verändern. Aber das ist eben nicht Jedermanns Sache so tief in die Interna von SAP einzugreifen.

Grundsätzlich bin ich aber auch Ennos Meinung:
Sortieren und gleiche Einträge zusammenfassen ist das billigste und beste Mittel.

lg ADT

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

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: Problem bei Sortierung von farbigen Zeilen in alv

Beitrag von Legxis (Specialist / 160 / 90 / 28 ) »
a-dead-trousers hat geschrieben:Das kann man aber beim Erstaufruf des ALV schon mitgeben (Parameter IT_SORT in SET_TABLE_FOR_FIRST_DISPLAY).
Ich benutze keinen Feldkatalog und rufe das alv mit cl_salv_table=>factory und go_alv->display( ) auf, kann ich den FuBa dann immernoch benutzen? Und wenn ja, wo muss er hin, vor cl_salv_table=>factory oder danach?
a-dead-trousers hat geschrieben:Das Problem ist, dass in deinem Fall zumindest eine der beiden Standard-Funktionen für "Sortieren" oder "Einfärben" komplett von Hand gebaut werden müsste.
Normalerweise wird das Sortieren intern vom ALV Grid erledigt und danach gibt es keine Möglichkeit mehr die Daten (ohne großen Aufwand) zu modifizieren. Das bedeutet, dass die Sortierung UND die Einfärbung außerhalb erfolgen müssten und die Standard-Funktion im Grid "deaktiviert" werden müsste. Das wäre mit einem vertretbaren Aufwand noch relativ einfach möglich. Der Benutzer verliert dadurch aber zu einem gewissen Grad auch an Komfort (z.B. mit Rechtsklick Sortieren wird nicht mehr funktionieren).
Die andere, wesentlich kompliziertere Lösung ist, nach der Sortierung und noch bevor die Daten an den Client geschickt werden einzugreifen. Dazu hat Enno das notwendige Werkzeug in der Anleitung http://www.tricktresor.de/blog/zellen-verbinden/ schon sehr gut beschrieben. Damit lassen sich die Daten des Grids nach (fast) allen möglichen Vorstellungen verändern.
Danke für die Info, dann werde ich es wohl ganz weglassen müssen, dann das sieht für mich sehr kompliziert aus.
( SAP ECC 6.0, NetWeaver 7.0, ohne unicode, ohne support/enhancement packages )

Re: Problem bei Sortierung von farbigen Zeilen in alv

Beitrag von 4byte (Specialist / 124 / 37 / 35 ) »
du holst dir mit lcl_sort = io_salv_table->get_sorts( ) die Sortierung und fügst dann per lcl_sort->add_sort( columnname = 'LIFNR') eine Sortierung hinzu.

also:
DATA: lcl_sort TYPE REF TO cl_salv_sorts.
lcl_sort = io_salv_table->get_sorts( ).
lcl_sort->add_sort( columnname = 'LIFNR').

Folgende Benutzer bedankten sich beim Autor 4byte für den Beitrag:
Legxis

Es gibt 10 Menschen die binär verstehen :)

Re: Problem bei Sortierung von farbigen Zeilen in alv

Beitrag von 4byte (Specialist / 124 / 37 / 35 ) »
ach und das ganze muss mit einem try... catcht.. block umschlossen werden 8)
Es gibt 10 Menschen die binär verstehen :)

Re: Problem bei Sortierung von farbigen Zeilen in alv

Beitrag von Legxis (Specialist / 160 / 90 / 28 ) »

Code: Alles auswählen.

* Tabelle direkt sortiert ausgeben (damit auch gleiche Spalteninhalte zusammenfügen)
  TRY.
    go_sort = go_alv->get_sorts( ).
  CATCH cx_salv_data_error INTO gx_salv_data_error.
  ENDTRY.

  TRY.
    go_sort->add_sort('VBELN').
  CATCH cx_salv_data_error INTO gx_salv_data_error.
  CATCH cx_salv_not_found  INTO gx_salv_not_found.
  CATCH cx_salv_existing   INTO gx_salv_existing.
  ENDTRY.
Ist es eigentlich okay, so mehrere CATCH hintereinander zu schreiben?
( SAP ECC 6.0, NetWeaver 7.0, ohne unicode, ohne support/enhancement packages )

Re: Problem bei Sortierung von farbigen Zeilen in alv

Beitrag von ewx (Top Expert / 4784 / 294 / 628 ) »
Legxis hat geschrieben: Da die Farbfunktion komplett in einer Funktion ist, wäre es kein Problem, sie wieder herauszunehmen, das Programm wäre nicht schwerer wartbar.
Bisher noch nicht. Aber sobald du weiter eingreifen und Sonderfälle beachten musst.
Legxis hat geschrieben: Da ich nur Azubi bin werde ich nicht für viel gebraucht, es gibt kaum Aufgaben für mich. Ich könnte die Zeit wenigstens nutzen, um Programme zu verbessern.
Dann mach das. Baue einen Doppelklick auf LIFNR ein um in den Lieferantenstamm zu verzweigen, einen Link-Click um in die Beleganzeige zu kommen und färbe die Zellen je nach Positionstyp unterschiedlich ein. Da gibt es mit Sicherheit sinnvolle Dinge.

Re: Problem bei Sortierung von farbigen Zeilen in alv

Beitrag von 4byte (Specialist / 124 / 37 / 35 ) »
Legxis hat geschrieben:

Code: Alles auswählen.

* Tabelle direkt sortiert ausgeben (damit auch gleiche Spalteninhalte zusammenfügen)
  TRY.
    go_sort = go_alv->get_sorts( ).
  CATCH cx_salv_data_error INTO gx_salv_data_error.
  ENDTRY.

  TRY.
    go_sort->add_sort('VBELN').
  CATCH cx_salv_data_error INTO gx_salv_data_error.
  CATCH cx_salv_not_found  INTO gx_salv_not_found.
  CATCH cx_salv_existing   INTO gx_salv_existing.
  ENDTRY.
Ist es eigentlich okay, so mehrere CATCH hintereinander zu schreiben?

So kannst du jetzt für jede auftretende Exception eine separate Behandlung durchführen.
CATCH cx_salv_data_error INTO gx_salv_data_error.
--> Behandle cx_salv_data_error
CATCH cx_salv_not_found INTO gx_salv_not_found.
--> Behandle cx_salv_not_found

Bzw. Wenn wird nur die Ausnahme behandelt, die zuerst auftretet :P

Wenn du alle Exceptions gleich behandelt möchtest, kannst du sie auch zuammenfassen.
CATCH cx_salv_not_found
cx_salv_existing
cx_salv_data_error.
--> Tue irgendwas

Folgende Benutzer bedankten sich beim Autor 4byte für den Beitrag:
Legxis

Es gibt 10 Menschen die binär verstehen :)

Seite 1 von 1

Vergleichbare Themen

0
Antw.
933
Views
9
Antw.
3236
Views
ALV Ausgabe Zeilen Problem
von erzoo24 » 10.07.2015 09:58 • Verfasst in ABAP® für Anfänger
12
Antw.
8295
Views
ALV Grid <- Problem mit Löschen mehrerer Zeilen
von Mavrix » 26.06.2007 09:05 • Verfasst in ABAP® für Anfänger
9
Antw.
7493
Views
Problem mit Zeilen einer internen Liste
von ostpower » 22.04.2010 16:49 • Verfasst in ABAP® für Anfänger
4
Antw.
2739
Views
Sortierung Entgeltnachweis
von Fluff » 18.10.2007 11:01 • Verfasst in Human Resources

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