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 / 3402 / 147 / 218 ) » 19. Jan 2019 22:01

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


Re: Applikations-Toolbar dynamisch erzeugen

Beitrag von black_adept (Top Expert / 3239 / 54 / 565 ) » 20. Jan 2019 09:26

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 / 3239 / 54 / 565 ) » 20. Jan 2019 09:45

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 / 3206 / 81 / 795 ) » 20. Jan 2019 09:55

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.07
Basis: 7.40

Re: Applikations-Toolbar dynamisch erzeugen

Beitrag von black_adept (Top Expert / 3239 / 54 / 565 ) » 20. Jan 2019 10:32

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 / 3402 / 147 / 218 ) » 20. Jan 2019 11:04

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

Re: Applikations-Toolbar dynamisch erzeugen

Beitrag von black_adept (Top Expert / 3239 / 54 / 565 ) » 20. Jan 2019 11:12

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 / 3239 / 54 / 565 ) » 20. Jan 2019 11:17

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 / 3402 / 147 / 218 ) » 20. Jan 2019 12:04

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

Re: Applikations-Toolbar dynamisch erzeugen

Beitrag von ewx (Top Expert / 3944 / 162 / 360 ) » 20. Jan 2019 18:43

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 / 3402 / 147 / 218 ) » 12. Mai 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?


Ralf

Re: Applikations-Toolbar dynamisch erzeugen

Beitrag von a-dead-trousers (Top Expert / 3206 / 81 / 795 ) » 13. Mai 2019 14:52

ralf.wenzel hat geschrieben:
12. Mai 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.07
Basis: 7.40

Re: Applikations-Toolbar dynamisch erzeugen

Beitrag von black_adept (Top Expert / 3239 / 54 / 565 ) » 13. Mai 2019 16:49

ralf.wenzel hat geschrieben:
12. Mai 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 / 3402 / 147 / 218 ) » 13. Mai 2019 16:52

*grummel* Was für'n Mist. Danke für eure Antworten.


Ralf

Re: Applikations-Toolbar dynamisch erzeugen

Beitrag von black_adept (Top Expert / 3239 / 54 / 565 ) » 13. Mai 2019 16:54

a-dead-trousers hat geschrieben:
13. Mai 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

Seite 1 von 2 (current) Nächste

Aktuelle Forenbeiträge

ABAP Clean Code
vor 7 Stunden von ewx 56 / 1392
Funktionsbaustein READ_TEXT
vor 9 Stunden von SAP_ENTWICKLER 3 / 151
Code lesen
vor 2 Tagen von GastX 5 / 1480
CL_GUI_TEXTEDIT im Subscreen
vor 2 Tagen von black_adept 2 / 95

Unbeantwortete Forenbeiträge

HowTo? Reisekosten PR05: Land hinzufügen
vor 3 Tagen von Florian9999 1 / 85
eMail Versand Faktura, falscher Betreff in eMail
vor 3 Tagen von bapimueller 1 / 83
[GELÖST] Kundenhierarchien in der Preisfindung
vor 4 Tagen von SAP_ENTWICKLER 1 / 94
[GELÖST] Feld KNVV-BOIDT
vor einer Woche von SAP_ENTWICKLER 1 / 74