Layoutänderung nicht möglich?

Die Objektorientierung mit ABAP®: Vererbung, Dynamische Programmierung, GUI Controls (u.a. ALV im OO).
8 Beiträge • Seite 1 von 1
8 Beiträge Seite 1 von 1

Layoutänderung nicht möglich?

Beitrag von sonntagskind (ForumUser / 7 / 0 / 0 ) »
Hallo zusammen,

ich habe mit folgendem Dreizeiler ein ALV-Grid erzeugt:

LOOP AT i_caufvd INTO wa_caufvd.
* Call ABAP List Viewer (ALV)
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_STRUCTURE_NAME = 'CAUFVD'
TABLES
t_outtab = i_caufvd.
ENDLOOP.

Abarbeitung im Testmandanten klappt ohne Probleme, Leider lässt sich eine Layoutänderung nicht sichern.Hat jemand eine Idee, woran es liegen kann?

Vielen Dank

Sonntagskind

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


Beitrag von ewx (Top Expert / 4895 / 322 / 644 ) »
Du musst aus deinem dreizeiler einen Vierzeiler machen und den Aufruf um den Parameter I_SAVE erweitern.

Gruß, Enno.

Beitrag von JHM (Top Expert / 1217 / 2 / 204 ) »
ewx hat geschrieben:Du musst aus deinem dreizeiler einen Vierzeiler machen und den Aufruf um den Parameter I_SAVE erweitern.
Das alleine reicht nicht. Es muss zusätzlich noch der Parameter IS_VARIANT gefüllt werden. Die übergebene Strucktur vom Type Disvariant muß die Report-ID enthalten.

Gruß Hendrik

Beitrag von ewx (Top Expert / 4895 / 322 / 644 ) »
stimmt...
Und HANDLE muss glaube ich auch noch gefüllt werden.
Enno

Beitrag von JHM (Top Expert / 1217 / 2 / 204 ) »
JHM hat geschrieben:
ewx hat geschrieben:Du musst aus deinem dreizeiler einen Vierzeiler machen und den Aufruf um den Parameter I_SAVE erweitern.

Das alleine reicht nicht. Es muss zusätzlich noch der Parameter IS_VARIANT gefüllt werden. Die übergebene Strucktur vom Type Disvariant muß die Report-ID enthalten.

Gruß Hendrik

EDIT: UPS, bin da etwas vom Thema abgekommen.
Das mit der Variante stimmt nur beim OO-ALV, nicht aber beim REUSE-ALV.
Gruß Hendrik

Beitrag von sonntagskind (ForumUser / 7 / 0 / 0 ) »
Hallo noch einmal,
ist doch alles ganz einfach:
1. Struktur mit Bezug auf DISVARIANT im Programm anlegen (z. B. VARIANT)
2. Felder mit Werten versorgen:
VARIANT-REPORT = Programmname (in Hochkommata)
VARIANT-HANDLE = 'VARI'
3. Paramter in Aufruf einfügen
i_save = 'A'
is_variant = variant
4. Programm starten:
Klappt wie am Schnürchen!
Vielen Dank an Enno und Hendrik!
Gunther

Beitrag von JHM (Top Expert / 1217 / 2 / 204 ) »
aber was hat das mit OO_ALV und REUSE_ALV zu tun?
Entschuldige für die Verwirrung die ich mit meinem ersten Post entstehen ließ.

Es gibt in SAP mehrere Wege einen ALV zu erzeugen.
Der ALV ist in der Klasse CL_GUI_ALV_GRID implementiert. Diese kann man natürlich dierekt benutzten. Das ganze ist sehr flexible, was aber auch mehr Coding braucht als deine 3 bzw. 4 Zeilen benötigt. Diesen ALV habe ich als OO-ALV bezeichnet, da er Objekt Orientiert ist.

Der FuBa REUSE_ALV_GRID_DISPLAY kappselt die Klasse CL_GUI_ALV_GRID. Er nimmt dir viel Coding ab, ermöglicht aber nicht alle Funktionen (z.B. Eingabefelder werden nicht sauber unterstützt). Auch sind die Übergabe-Strukturen/Tabellen nicht gleich mit dem OO-ALV.

Es gibt auch noch den FuBa REUSE_ALV_GRID_DISPLAY_LVC. Dieser ist ähnlich dem REUSE_ALV_GRID_DISPLAY nutzt aber die gleichen Struckturen/Tabellen wie der OO-ALV.


Zu dem Layoutproblem:
Eine ALV-Variante wird mit Bezug zum Programm, evtl. zum User und wenn gewünscht zu einem Handel gespeichert.
- Die Programm-ID ist ein muss. Diese muss dem ALV beim Aufruf mit übergeben werden. Dieses geschiet normalerweise über den Parameter IS_VARIANT, beim REUSE-ALV kann der Programmname aber auch über den Parameter I_CALLBACK_PROGRAM mitgeben werden, dann brauch der Parameter IS_VARIANT nicht versorgt werden.
- Die User-ID wird nur gebraucht, wenn Userbezogen gespeichert wird. Diese nimmt der ALV aus den System-Feldern und braucht nicht übergeben werden.
- Der Handle wird gebraucht wenn in einem Programm mehrere ALVs vorhanden sind zu denen einzeln ein Layout gespeichert werden soll. Der Handle wird mittels dem Parameter IS_VARIANT übergeben. Dazu wird eine Strukture des Types DISVARIANT verwendet. Jeder Handle identifiziert genau einen ALV im Programm.

Über den Parameter I_SAVE wird bestimmt wie die ALV-Variante gespeichert wird:
- SPACE: Kein Speichern von Layouts möglich.
- 'U': Der Benutzer kann nur benutzerspezifische Layouts speichern.
- 'X': Der Benutzer kann nur übergreifende Layouts speichern.
- 'A': Der Benutzer kann sowohl benutzerspezifische als auch übergreifende Layouts speichern.

Über den Parameter I_DEFAULT wird gesteuert, ob das anlegen von Default-Layouts möglich ist. Diese können sowohl als Benutzerdefaults wie auch als Standarddefaults gespeichert werden, dies ist natürlich abhängig vom Parameter I_SAVE

Dies mal etwas ausführlicher und hoffentlich verständlich.
Gruß Hendrik

Beitrag von bobo (ForumUser / 18 / 0 / 0 ) »
was bei solchen grundsätzlichen fragen auch immer hilft, ist sich einfach mal die diversen beispiele im sap anzusehen, bevor man hier auf ne antwort wartet :wink:

SE38 -> BCALV*

Seite 1 von 1

Vergleichbare Themen

11
Antw.
23825
Views
ALV im Hintergrund möglich?
von c oco » 13.01.2012 14:30 • Verfasst in ABAP® für Anfänger
8
Antw.
9529
Views
Ausdrucken nicht möglich
von BlueMC » 28.03.2007 12:25 • Verfasst in Basis
2
Antw.
2239
Views
Zweizeilige Spaltenüberschrift im ALV möglich?
von pampelmus » 08.08.2007 10:18 • Verfasst in ABAP® für Anfänger
3
Antw.
1997
Views
Liste refreshen, möglich ?
von sapler » 18.05.2006 09:27 • Verfasst in ABAP® Core
3
Antw.
2459
Views
SQL+ unter ABAP möglich???
von Steffi221185 » 07.09.2006 09:40 • Verfasst in ABAP Objects®

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