Aber es wird ja nur zusammengefasst wenn man nach dem Feld sortiert, und das macht eingentlich kein Anwender.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.
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:(a) Ressourcenverschwendung (Ihr habt sicherlich wichtigere Probleme auf die du deine Programmierkünste anwenden kannst...)
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.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).
Das kann man aber beim Erstaufruf des ALV schon mitgeben (Parameter IT_SORT in SET_TABLE_FOR_FIRST_DISPLAY).Legxis hat geschrieben:Aber es wird ja nur zusammengefasst wenn man nach dem Feld sortiert, und das macht eingentlich kein Anwender.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.
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.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. 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.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).
Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
Legxis
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 kann man aber beim Erstaufruf des ALV schon mitgeben (Parameter IT_SORT in SET_TABLE_FOR_FIRST_DISPLAY).
Danke für die Info, dann werde ich es wohl ganz weglassen müssen, dann das sieht für mich sehr kompliziert aus.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.
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.
Bisher noch nicht. Aber sobald du weiter eingreifen und Sonderfälle beachten musst.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.
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.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.
Legxis hat geschrieben:Ist es eigentlich okay, so mehrere CATCH hintereinander zu schreiben?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.