ALV: Variante umstellen ohne set_table_for_first_display

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

ALV: Variante umstellen ohne set_table_for_first_display

Postby Ediz342 » Wed Feb 07, 2007 12:44 pm

Hallo Zusammen
Gibt es eine Möglichkeit bei einem ALV programmtechnisch die Variante umzustellen, ohne dass ich erneut die Methode set_table_for_first_display aufrufen muss?
Beim Feldkatalog und Layout gibt es ja die Methoden set_frontend_layout und set_frontend_fieldcatalog der Klasse cl_gui_alv_grid, die auch prima funktionieren. Es gibt zwar auch eine Methode set_variant, aber die funktioniert nicht (auch nicht nach einem refresh_table_display).
Wäre froh, wenn jemand einen Lösungsansatz wüsste.

Danke und Gruss
Roman
Ediz342
.
.
 
Posts: 8
Joined: Tue Apr 19, 2005 6:48 pm

Postby Mehmet1061 » Wed Feb 07, 2007 2:04 pm

Der "set_variant" müsste gehen!

Dieser hat aber ein paar Vorraussetzungen:
- beim Aufruf von set_table_for_first_display MUSS I_SAVE und IS_VARIANT mitübergeben werden
- in IS_VARIANT MUSS mindestens das Feld REPORT mit dem Programmnamen gefüllt sein.
Mehmet1061
....
....
 
Posts: 766
Joined: Thu Sep 29, 2005 2:44 pm

Postby ewx » Wed Jun 11, 2008 2:09 pm

Hi Roman!
konntest du dein Problem lösen? Bei funktioniert SET_VARIANT auch nicht!!
Er setzt die Variante zwar, aber der Feldkatalog wird nicht geladen.
:evil:
Danke!
ewx
.....
.....
 
Posts: 2840
Joined: Mon Aug 04, 2003 9:02 pm

Postby Mehmet1061 » Wed Jun 11, 2008 4:28 pm

OK, hab was gefunden, was aber net so toll ist.

Und zwar erst alle infos per FuBa LVC_VARIANT_SELECT hollen und anschliessend immer schon dein_grid->set_fcat + set_sort + set_filter + set_variant.

Manchmal ist ABAP doch scheisse!
Mehmet1061
....
....
 
Posts: 766
Joined: Thu Sep 29, 2005 2:44 pm

Postby ewx » Wed Jun 11, 2008 5:48 pm

Das ist ja echt arm...! :?
Danke für deine Info!
Wahrscheinlich müsste nur eine ganz bestimmte PROTECTED-Methode PUBLIC gemacht werden, mit der man die Variante aktivieren kann...
nun ja... Nochmals Danke!
ewx
.....
.....
 
Posts: 2840
Joined: Mon Aug 04, 2003 9:02 pm

Re: ALV: Variante umstellen ohne set_table_for_first_display

Postby Ramon2764 » Thu May 12, 2011 2:35 pm

Es ist genau so, wie Death Guardian schon beschrieben hat:

Aufruf der Methode SET_VARIANT aus Klasse cl_gui_alv_grid alleine genügt nicht.

Man muß vorher mit der Methode GET_FRONTEND_FIELDCATALOG den aktuellen Feldkatalog des Grids ermitteln und mit diesem per FuBa LVC_VARIANT_SELECT über die Exporting-Parameter et_sort, et_filter und evtl. et_fieldcat die für die NEUE Variante gültige Sortierung und Filter und evtl. den neuen Feldkatalog besorgen. Wichtig: über den Changing-Parameter cs_variant muß man die NEUE Variante mitgeben!

Diese kann man sich etwa mit

data: l_variant type disvariant.
select report variant
into (l_variant-report, l_variant-variant )
from ltdx up to 1 rows
where relid = 'LT'
and report = sy-cprog
and variant = '/VARNAME'.
endselect.

aus der Tabelle LTDX besorgen.

Die Sortierung / Filter der neuen Variante müssen dann mit den Methoden set_filter_criteria / set_sort_criteria gesetzt werden. Ggf. muß auch noch ein neuer variantenspezifischer Feldkatalog ermittelt und mit der Methode set_frontend_fieldcatalog gesetzt werden.

Erst dann "zieht" auch das Setzen der neuen Variante mit der Methode set_variant.

Ein dazu passendes Beispiel findet man im http://www.tricktresor.de
unter Entwicklung/Programmierung/ABAP Objects/ALV-Grid/Variantenschnellzugriff.

Vorsicht: Abweichend zum Tricktresor-Beispiel mußte ich beim Aufruf von LVC_VARIANT_SELECT noch den Tabellenparameter it_data besetzen, da ich Filter-Kriterien in der neuen Variante gesetzt hatte! Man kann die itab mit "Data: i_data type table of string" im Programm deklarieren. Brauchen tut man sie nicht, sie muß nur angefordert sein. Und dann geht's!
Ramon2764
..
..
 
Posts: 28
Joined: Mon Aug 31, 2009 4:56 pm


Return to ABAP Objects®

Who is online

Users browsing this forum: No registered users and 13 guests