Applikations-Toolbar dynamisch erzeugen

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
16 Beiträge • Seite 1 von 2 (current) Nächste
16 Beiträge Seite 1 von 2 (current) Nächste

Applikations-Toolbar dynamisch erzeugen

Beitrag von ralf.wenzel (Top Expert / 3776 / 176 / 262 ) »
Moin,

Google lässt es mich nicht finden — oder geht es wirklich nicht? Ich möchte die Application-Toolbar nicht per PF-STATUS definieren, sondern per ABAP-Code (wie es im SALV ja geht, da füge ich die Buttons einzeln zur SALV-Toolbar hinzu).
Und nein, per Exclude-Tabelle definierte Buttons wieder rauswerfen ist nicht das, was ich will.

Im SALV habe ich ein Subscribe-Pattern, auf dem sich Buttons registrieren. Jeder Button wird durch eine Klasse repräsentiert, die alle ein bestimmtes IF implementieren. Beim Klick auf den Button übergibt der Dialog der Applikation das IF, die Applikation ruft dann die Methode RUN auf, die die eigentliche Funktionalität beinhaltet. Irgendwo habe ich das hier mal ausführlich beschrieben, finde es aber nicht mehr (wer den Link findet, möge ihn bitte posten). Das war in irgendeiner hitzigen OO-Diskussion.

Jedenfalls will ich das analog auch auf Dypro-App-Buttons ausweiten.


Ralf *dankt
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

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


Re: Applikations-Toolbar dynamisch erzeugen

Beitrag von black_adept (Top Expert / 3943 / 105 / 886 ) »
ralf.wenzel hat geschrieben:Google lässt es mich nicht finden — oder geht es wirklich nicht?
Es geht wirklich nicht
ralf.wenzel hat geschrieben:Ich möchte die Application-Toolbar nicht per PF-STATUS definieren, sondern per ABAP-Code (wie es im SALV ja geht, da füge ich die Buttons einzeln zur SALV-Toolbar hinzu).
Das geht auch nicht im SALV - woher hast du denn diese verquere Aussage.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Applikations-Toolbar dynamisch erzeugen

Beitrag von black_adept (Top Expert / 3943 / 105 / 886 ) »
Und da wir ja inzwischen gut im OFF-Topic erzeugen geworden sind.
Hat schon mal jemand mit der Klasse CL_SALV_GUI_TABLE_IDA gearbeitet?
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Applikations-Toolbar dynamisch erzeugen

Beitrag von a-dead-trousers (Top Expert / 4271 / 213 / 1140 ) »
Wenn ein SALV ausgegeben wird braucht man sich nur den verwendeten GUI-Status über System->Status anzusehen. Der ist (leider) ziemich statisch gehalten.
Die einzige Möglichkeit für einen einigermaßen dynamischen GUI-Status, die ich kenne, ist mit dynamischen Funktionscode zu arbeiten.
Dabei werden einzelenen Funktionscode (oder auch allen) im Programm Variablen eines bestimmten Typs zugeordnet. Im GUI-Status sieht man dass an der Auszeichnung "<...>" und das keine Ikonen, Texte usw. angezeigt werden. Zur Laufzeit werden die im GUI-Status anzuzeigenden Informationen aus diesen Variablen ausgelesen. Buttons die nicht gebraucht werden kann man wie gewohnt mit EXCLUDING ausblenden.
Alternativ kann man im Dynpro die Applikationstoolbar auch ausblenden lassen und sich eine eigene, dynamische, mittels CL_GUI_TOOLBAR bauen.
Was ich noch nicht versucht habe, was aber auch funktionieren müsste, wäre den Spezial-Container den das GOS verwendet (eigener Bereich im GUI-Titel) zu missbrauchen. Der sollte aber nicht zu groß werden, weil man sonst keine Platz mehr für den Titel hat.
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: Applikations-Toolbar dynamisch erzeugen

Beitrag von black_adept (Top Expert / 3943 / 105 / 886 ) »
a-dead-trousers hat geschrieben:Alternativ kann man im Dynpro die Applikationstoolbar auch ausblenden lassen und sich eine eigene, dynamische, mittels CL_GUI_TOOLBAR bauen.
Was ich noch nicht versucht habe, was aber auch funktionieren müsste, wäre den Spezial-Container den das GOS verwendet (eigener Bereich im GUI-Titel) zu missbrauchen. Der sollte aber nicht zu groß werden, weil man sonst keine Platz mehr für den Titel hat.
Aber diese beiden Sachen sind dann nachher nicht mehr über Batch-Input oder CALL TRANSACTION USING steuerbar, da hier eine GUI vorausgesetzt wird.
@a-d-t: Ja - das geht mit dem GOS-Container recht gut :)
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Applikations-Toolbar dynamisch erzeugen

Beitrag von ralf.wenzel (Top Expert / 3776 / 176 / 262 ) »
black_adept hat geschrieben:
ralf.wenzel hat geschrieben:per ABAP-Code (wie es im SALV ja geht, da füge ich die Buttons einzeln zur SALV-Toolbar hinzu).
Das geht auch nicht im SALV - woher hast du denn diese verquere Aussage.
Warum sollte das nicht gehen? Ich kann nicht mit ADD_FUNCTION( ) im CL_SALV_TABLE (über CL_SALV_FUNCTIONS) ein neues Icon in die SALV-Toolbar hängen mit einer selbst ausprogrammierten Funktion dahinter?

Dann sollte ich mich für den Nobelpreis anmelden, ich hab das geschafft. Wenn ich das mache, schreibe ich halt keine Funktionen hart rein, sondern durchlaufe eine Liste von Subscribern (Klassen, die ein definiertes INTF implementieren). Das hat den entscheidenden Vorteil, dass ich nur eine neue Klasse für eine neue Funktion bauen muss. Ich muss dazu weder den SALV noch die Applikation noch den Dialog ändern. Diese "Button-Klasse" enthält das Icon, den Text, den Quicktip und in einer definierten Methode RUN die Logik, die der Button repräsentiert. Und ich kann diese Klasse jederzeit wiederverwenden in anderen SALVs.


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Applikations-Toolbar dynamisch erzeugen

Beitrag von black_adept (Top Expert / 3943 / 105 / 886 ) »
ralf.wenzel hat geschrieben:
black_adept hat geschrieben:
ralf.wenzel hat geschrieben:per ABAP-Code (wie es im SALV ja geht, da füge ich die Buttons einzeln zur SALV-Toolbar hinzu).
Das geht auch nicht im SALV - woher hast du denn diese verquere Aussage.
Warum sollte das nicht gehen? Ich kann nicht mit ADD_FUNCTION( ) im CL_SALV_TABLE (über CL_SALV_FUNCTIONS) ein neues Icon in die SALV-Toolbar hängen mit einer selbst ausprogrammierten Funktion dahinter?
Du sprachst im 1. Post dieses Threads von Dynpros. ---> Du musst das Verhaltendes SALV im Fullscreenmodus betrachten, da nur dann ein PF-STATUS erzeugt wird. Und da geht es halt nicht, wie man leicht durch ein Minitestprogramm erkennen könnte, da sich der Fullscreenmodus in diversen Sachen unterschiedlich zum Containermodus verhält.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Applikations-Toolbar dynamisch erzeugen

Beitrag von black_adept (Top Expert / 3943 / 105 / 886 ) »
ralf.wenzel hat geschrieben:Dann sollte ich mich für den Nobelpreis anmelden, ich hab das geschafft.
In welchem Bereich willst du denn da den Nobelpreis reklamieren? Irgendwie wäre der Touring-Award deutlich passender, auch wenn ich fürchte, dass die Schaffenshöhe dafür nicht ganz ausreichend sein dürfte.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Applikations-Toolbar dynamisch erzeugen

Beitrag von ralf.wenzel (Top Expert / 3776 / 176 / 262 ) »
black_adept hat geschrieben:
ralf.wenzel hat geschrieben:Dann sollte ich mich für den Nobelpreis anmelden, ich hab das geschafft.
In welchem Bereich willst du denn da den Nobelpreis reklamieren? Irgendwie wäre der Touring-Award deutlich passender, auch wenn ich fürchte, dass die Schaffenshöhe dafür nicht ganz ausreichend sein dürfte.
Nee, wenn ich was mache, was technisch nicht möglich ist, will ich mindestens den Nobelpreis. Und das Bundesverdienstkreuz.


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Applikations-Toolbar dynamisch erzeugen

Beitrag von ewx (Top Expert / 4784 / 294 / 628 ) »
a-dead-trousers hat geschrieben: Alternativ kann man im Dynpro die Applikationstoolbar auch ausblenden lassen und sich eine eigene, dynamische, mittels CL_GUI_TOOLBAR bauen.
Siehe hier https://www.tricktresor.de/blog/neue-schaltflaechen/
Die Funktionen lassen sich dann allerdings nicht mehr über Funktionstasten auswählen...

Folgende Benutzer bedankten sich beim Autor ewx für den Beitrag:
ralf.wenzel


Re: Applikations-Toolbar dynamisch erzeugen

Beitrag von ralf.wenzel (Top Expert / 3776 / 176 / 262 ) »
Weil das Thema gerade wieder hochgekommen ist und ich ganz sicher gehen will, dass ich nichts falsch verstanden habe:

Es gibt (abgesehen von ewx' Möglichkeit) keinen Weg, einen Button zu einer Applikationstoolbar dynamisch hinzuzufügen, wie ich es im SALV mit ADD_FUNCTION machen kann? Also dass ich unter Angabe von Name, Funktionscode, etc. den PF-Status um einen dort nicht definierten Button anreichere?


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Applikations-Toolbar dynamisch erzeugen

Beitrag von a-dead-trousers (Top Expert / 4271 / 213 / 1140 ) »
ralf.wenzel hat geschrieben:
12.05.2019 13:35
Es gibt (abgesehen von ewx' Möglichkeit) keinen Weg, einen Button zu einer Applikationstoolbar dynamisch hinzuzufügen, wie ich es im SALV mit ADD_FUNCTION machen kann? Also dass ich unter Angabe von Name, Funktionscode, etc. den PF-Status um einen dort nicht definierten Button anreichere?
Naja, kommt darauf an wie "tief" du ins System hineinpfuschen willst.
Es gibt schon auch die Möglichkeit zur Laufzeit einen (statischen) GUI-Status zu erstellen.
Mit den Bausteinen RS_CUA_INTERNAL_FETCH und RS_CUA_INTERNAL_WRITE kann man GUI-Stati auslesen bzw. schreiben. Die SAP generiert ja intern z.B. für Smartforms oder die SE16 Selektionsschirme (Auswahl von Feldern für Selektion) Programme, Dynpros usw. in einem speziellen Namensraum (z.B. /1BCDWB/) die nicht transportiert werden können. In dem Sinne könntest du für deine GUI-Stati ein eigenes (Haupt-)Programm anlegen, in welchem du diese zur Laufzeit erzeugen kannst.
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: Applikations-Toolbar dynamisch erzeugen

Beitrag von black_adept (Top Expert / 3943 / 105 / 886 ) »
ralf.wenzel hat geschrieben:
12.05.2019 13:35
Weil das Thema gerade wieder hochgekommen ist und ich ganz sicher gehen will, dass ich nichts falsch verstanden habe:

Es gibt (abgesehen von ewx' Möglichkeit) keinen Weg, einen Button zu einer Applikationstoolbar dynamisch hinzuzufügen, wie ich es im SALV mit ADD_FUNCTION machen kann? Also dass ich unter Angabe von Name, Funktionscode, etc. den PF-Status um einen dort nicht definierten Button anreichere?
Genau so ist es. SAP selber macht ja schon extra Verrenkungen um in Standardtransaktionen von Zeit zu Zeit userdefinierbare Buttons anzubieten. Aber das ist ist immer mit der "Zusätzliche Buttons vorsehen und bei Nichtverwendung ausblenden" Technik versehen. Mit ein wenig Phantasie kann man dieses Verfahren auch verwenden um einzelne!!! SAP-Standardtransaktionen hier und da via Enhancement mit weiteren Funktionen zu versehen. Wenn man dort hinreichend viele Extrafunktionen vorsieht kann sich das nachher so verhalten wie dein dynamischer Ansatz. Aber wie das immer so ist mit Modifikationen - es hat auch seine Nachteile.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Applikations-Toolbar dynamisch erzeugen

Beitrag von ralf.wenzel (Top Expert / 3776 / 176 / 262 ) »
*grummel* Was für'n Mist. Danke für eure Antworten.


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Applikations-Toolbar dynamisch erzeugen

Beitrag von black_adept (Top Expert / 3943 / 105 / 886 ) »
a-dead-trousers hat geschrieben:
13.05.2019 14:52
Mit den Bausteinen RS_CUA_INTERNAL_FETCH und RS_CUA_INTERNAL_WRITE kann man GUI-Stati auslesen bzw. schreiben. Die SAP generiert ja intern z.B. für Smartforms oder die SE16 Selektionsschirme (Auswahl von Feldern für Selektion) Programme, Dynpros usw. in einem speziellen Namensraum (z.B. /1BCDWB/) die nicht transportiert werden können. In dem Sinne könntest du für deine GUI-Status ein eigenes (Haupt-)Programm anlegen, in welchem du diese zur Laufzeit erzeugen kannst.
Das macht man aber nur 1x und vergisst es danach ganz schnell wieder wenn man bemerkt was das für Konsequenzen hat an Stellen an die man zunächst gar nicht denkt. ( z.B. mehrere User rufen das selbe Programm auf ... )
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Vergleichbare Themen

7
Antw.
4097
Views
Arbeitsbereich dynamisch erzeugen
von isp » 29.08.2012 13:02 • Verfasst in ABAP® für Anfänger
6
Antw.
3950
Views
QR-Code dynamisch erzeugen und in SF ausgeben
von bapimueller » 27.11.2020 17:03 • Verfasst in ABAP® Core
8
Antw.
1001
Views
Interne Tabelle dynamisch erzeugen
von Der Formulator » 21.10.2021 09:30 • Verfasst in ABAP® Core
3
Antw.
2498
Views
Selectionsdynpro - Button dynamisch erzeugen
von RiffRaff » 15.10.2004 08:26 • Verfasst in ABAP® Core
20
Antw.
6560
Views
Steuerelemente dynamisch im Code erzeugen
von LordDeath » 27.06.2005 11:04 • Verfasst in Dialogprogrammierung

Aktuelle Forenbeiträge

Zwischensumme Adobe Forms
vor 2 Tagen von Lucyalison 1 / 64
Interne Tabelle
vor 5 Tagen von black_adept 2 / 133
MaLo-Checker in ABAP
vor einer Woche von A6272 6 / 254

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.

Aktuelle Forenbeiträge

Zwischensumme Adobe Forms
vor 2 Tagen von Lucyalison 1 / 64
Interne Tabelle
vor 5 Tagen von black_adept 2 / 133
MaLo-Checker in ABAP
vor einer Woche von A6272 6 / 254

Unbeantwortete Forenbeiträge

Zwischensumme Adobe Forms
vor 2 Tagen von Lucyalison 1 / 64
Group Items auf einer Filterbar
vor einer Woche von Bright4.5 1 / 107
tRFC Transaktionen SM58
vor 4 Wochen von A6272 1 / 140