Spaltenoptimierung im ALV-Objektmodell

Die Objektorientierung mit ABAP®: Vererbung, Dynamische Programmierung, GUI Controls (u.a. ALV im OO).

Spaltenoptimierung im ALV-Objektmodell

Postby Luisa3993 » Mon Sep 26, 2011 11:58 am

Hallo Zusammen,
mit der Methode CL_SALV_COLUMNS->SET_OPTIMIZE kann ich ja die Breite von Spalten automatisch so festlegen, dass alle Werte darin vollständig angezeigt werden.
Dabei wird die Überschrift aber nicht berücksichtigt...!?
Mach' ich etwas falsch - oder geht das nicht?

Gruß RoBu di AQu :!:
Luisa3993
..
..
 
Posts: 37
Joined: Thu Jul 14, 2005 1:36 pm

Re: Spaltenoptimierung im ALV-Objektmodell

Postby Luisa3993 » Wed Sep 28, 2011 10:14 am

Hallo,
heisst keine Anwort - es geht nicht?
Gruß RoBu di AQu :!:
Luisa3993
..
..
 
Posts: 37
Joined: Thu Jul 14, 2005 1:36 pm

Re: Spaltenoptimierung im ALV-Objektmodell

Postby Joeline5261 » Wed Sep 28, 2011 10:33 am

Hallo,
hier gibts ein Beispiel dafür:

http://help-abap.zevolving.com/2008/09/ ... -settings/


Gruß
Wolfgang
Joeline5261
...
...
 
Posts: 387
Joined: Thu Aug 18, 2005 2:42 pm

Re: Spaltenoptimierung im ALV-Objektmodell

Postby Katharina759 » Wed Sep 28, 2011 1:30 pm

wreichelt hat geschrieben:Hallo,
hier gibts ein Beispiel dafür:

http://help-abap.zevolving.com/2008/09/ ... -settings/


Gruß
Wolfgang


In dem Beispiel wird doch genau das beschrieben, was RoBu di AQu sowieso schon macht...

Soviel ich weiss, ist eine Optimierung der Spaltenbreite nach Überschriften nicht möglich. Wäre aber ein nettes feature.
Katharina759
...
...
 
Posts: 250
Joined: Thu Jun 12, 2008 5:58 pm

Re: Spaltenoptimierung im ALV-Objektmodell

Postby Jonny2227 » Wed Sep 28, 2011 2:19 pm

Sali,

ich meine schon - an Hand des Beispiels - man stellt halt individuell für jede Spalte die sichtbare Breite ein indem man die Länge der Überschrift vergleicht mit der Länge des Wertes im Feld - wenn die Überschrift länger ist - dann stellt man die Länge des Feldes in der Anzeige auf diesen Wert ein.
Ich denke das meinte auch WReichelt mit diesem Beispiel (wobei hier es expizit nicht gemacht wird).
Ich habs zwar selber noch nicht probiert - aber ich würde denken so könnte man das wohl hin bekommen.

Gruss Jens
Jonny2227
....
....
 
Posts: 605
Joined: Wed Mar 01, 2006 3:16 pm

Re: Spaltenoptimierung im ALV-Objektmodell

Postby Luisa3993 » Wed Sep 28, 2011 2:28 pm

Hallo Wolfgang,
erst mal vielen Dank - aber es hilft mir leider nicht weiter.
So wie in diesem Beispiel beschrieben, mach' ich es ja.


Hallo Ceyser Soze,
so wie es ausschaut, muss man auf diesen Komfort wohl verzichten - schade.


Hallo Sali,
auch wenn ich mit CL_SALV_COLUMN->SET_OUTPUT_LENGTH die Ausgabelänge eines Feldes auf 100 setze, ändert sich leider auch nichts.

Gruß RoBu di AQu :!:
Luisa3993
..
..
 
Posts: 37
Joined: Thu Jul 14, 2005 1:36 pm

Re: Spaltenoptimierung im ALV-Objektmodell

Postby Jonny2227 » Wed Sep 28, 2011 3:10 pm

Sali,

also ich hab es mal schnell nach gestellt - an Hand des Beispiels - das Problem ist - man darf die Methode set_optimize nicht aufrufen - sondern für jede Spalte die Eigenschaften sich besorgen - die Überschrift mit dem Wert des Feldes vergleichen und dann entsprechend die sichtbare Ausgabelänge setzen - dann klappt es.

Gruss Jens
Jonny2227
....
....
 
Posts: 605
Joined: Wed Mar 01, 2006 3:16 pm

Re: Spaltenoptimierung im ALV-Objektmodell

Postby Luisa3993 » Thu Sep 29, 2011 10:19 am

Hallo Jens,
das würde ja bedeuten, dass ich bei jeder Zelle (einschließlich Überschrift) die Länge überprüfen müsste. Damit würde ich 'set_optimize' komplett selber nachbauen.
Ich denke, ich werde mit der vorhandenen Möglichkeit leben müssen.
Trotzdem vielen Dank
RoBu di AQu :!:
Luisa3993
..
..
 
Posts: 37
Joined: Thu Jul 14, 2005 1:36 pm

Re: Spaltenoptimierung im ALV-Objektmodell

Postby Jonny2227 » Thu Sep 29, 2011 11:24 am

Sali,

nun so umfangreich ist es dann doch nicht - ich habe vor der Methode Display folgendes eingebaut

...
*-- optimize the column
ref_cols = ref_alv->get_columns( ).

* set the Column optimization
-> diese methode nicht aufrufen !!! ref_cols->set_optimize( abap_true ).
**
**...Process individual columns
DATA: lo_column TYPE REF TO cl_salv_column.
DATA lt_columns_ref TYPE salv_t_column_ref.
DATA ref_t_columns TYPE REF TO salv_s_column_ref.
DATA lv_head TYPE scrtext_l.
DATA length1 TYPE i.
DATA length2 TYPE i.
DATA ref_outtab TYPE REF TO ty_outtab.
DATA length3 TYPE lvc_outlen.
FIELD-SYMBOLS <fs_any> TYPE ANY.

** Change the properties of all Columns
lt_columns_ref = ref_cols->get( ).
DO .
READ TABLE lt_columns_ref REFERENCE INTO ref_t_columns INDEX sy-index.
IF sy-subrc <> 0.
EXIT.
ENDIF.

TRY.
lo_column = ref_cols->get_column( ref_t_columns->columnname ).
*-- länge header ermitteln
lv_head = lo_column->get_long_text( ).
length1 = STRLEN( lv_head ).

*-- tabellenwert und länge ermitteln
READ TABLE it_outtab REFERENCE INTO ref_outtab INDEX 1.
ASSIGN COMPONENT ref_t_columns->columnname OF STRUCTURE ref_outtab->* TO <fs_any>.
IF <fs_any> IS ASSIGNED.
length2 = STRLEN( <fs_any> ).
ENDIF.

*-- werte vergleichen und ausgabelänge setzen
IF length1 < length2.
length3 = length2.
ELSE.
length3 = length1.
ENDIF.

lo_column->set_output_length( length3 ).
CATCH cx_salv_not_found. "#EC NO_HANDLER
ENDTRY.
ENDDO.

...

Gruss Jens
Jonny2227
....
....
 
Posts: 605
Joined: Wed Mar 01, 2006 3:16 pm


Return to ABAP Objects®

Who is online

Users browsing this forum: No registered users and 10 guests