Kapselung Dynproteile

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

Kapselung Dynproteile

Beitrag von ralf.wenzel (Top Expert / 3924 / 200 / 280 ) »
Moin moin,

ich mache meine (grundsätzlich gemeinte) Frage mal an einem Beispiel fest. In einem Unternehmen gibt es eine grundsätzliche Regel für ALV-Listviewer-Varianten, meinetwegen soll die Werthilfe für das Selektionsbild-Eingabefeld irgendwelche Besonderheiten aufweisen. Nun würde es sich anbieten, nicht in jedem Report dieselbe Logik zu codieren, sondern das in einer globalen Klasse zu machen, damit alle Reports darauf nur noch zugreifen müssen. Hier könnte man z. B. in einer Methode codieren, dass zum rufenden Programm eine Werhilfe aufgerufen wird, wenn im ALV-Eingabefeld auf dem Selektionsbild F4 gedrückt wird.

Nun möchte ich aber auch einen Standard haben für die Ausgabe des Feldes "ALV-Anzeigevariante" und der Beschreibung auf dem Selektionsbild. Auch hier möchte ich nicht in jedem Report eigenständig Logik verballern, sondern das irgendwo zentral ablegen.

Das kann man natürlich grundsätzlich auf Dynproteile anwenden: Wenn etwas überall gleich sein soll (was immer gut ist wg. der Usability) und im Zweifel systemweit von Fortschritten profitieren soll, wird zentral angelegt und gepflegt. Da es bekanntlich eine ausgesprochen schlechte Idee ist, ein zentrales Include zu verwenden und das in jeden Report einzubinden, würde ich diesen Dynproteil gern in die Klasse hängen, die für diesen Dynproteil auch die Logik bereitstellt. Das aber geht nicht.

Wie macht ihr das? Doch mit zentralen Includes oder den Teil des Dynpros irgendwie in eine Funktionsgruppe auslagern?
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: Kapselung Dynproteile

Beitrag von jensschladitz (Specialist / 417 / 0 / 56 ) »
Sali,

ein Ansatz wäre - das SS als Subscreen in einen eigenen Include legen den du in jedem Programm wo Bedarf ist einbindest
die Bearbeitung des F4 Absprung lagerst du dann in eine Klasse aus und dort wo benötigt erzeugst du dir ein Objekt selbiger und die Methode deiner F4-Hilfe rufst du dann auf

... wäre mal so eine Idee von mir

Gruss
thanks Jens

Re: Kapselung Dynproteile

Beitrag von a-dead-trousers (Top Expert / 4395 / 223 / 1182 ) »
hi!

Eine andere Variante wäre, das alles über das DDIC zu lösen. (Suchhilfe, Conv-Exits usw.)
Der Vorteil liegt hier darin, dass alle Standard-Reports (z.B. Tabellenpflegegenerator) damit umgehen können.
Bei Selektionsbildschirmen funktioniert das dann "out-of-the-box" (Man muss nur einmal in die Textsymbole und den Dictionary-Hacken setzen)
In normalen Dynpros muss sichergestellt sein, dass der DDIC-Bezug passt. (Gleich benannt und Hacken gesetzt)

lg ADT
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: Kapselung Dynproteile

Beitrag von ralf.wenzel (Top Expert / 3924 / 200 / 280 ) »
Das ist leider keine besonders gute Idee: Wenn das Include jemals angefasst wird, wird beim Aktivieren jeder Report generiert, der das Include inkludiert. Das ist einer der wesentlichen Gründe für Regel 4.15*

*lt. Numerierung in ABAP-Programmierrichtlinien , die Regel findet sich aber auch in der SAP-Hilfe
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Kapselung Dynproteile

Beitrag von ralf.wenzel (Top Expert / 3924 / 200 / 280 ) »
a-dead-trousers hat geschrieben:Hacken setzen (....) und Hacken gesetzt
Bitte, bitte, bitte: Das Wort heißt Haken. Hacken ist das, was du machst, wenn du eine Hacke in der Hand hast. ;)

Mit dieser Lösung kann man Werthilfen erzeugen oder sowas (also Coding, was ich in die Klasse verlegen will). Das Dynpro selbst wird damit nicht vereinheitlicht. Die Subscreen-Lösung ist eigentlich die naheliegenste, aber eben auch die am wenigsten ratsamste.
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Kapselung Dynproteile

Beitrag von a-dead-trousers (Top Expert / 4395 / 223 / 1182 ) »
ralf.wenzel hat geschrieben:Bitte, bitte, bitte: Das Wort heißt Haken. Hacken ist das, was du machst, wenn du eine Hacke in der Hand hast. ;)
Ich bin der Hacker :evil:
ralf.wenzel hat geschrieben:Mit dieser Lösung kann man Werthilfen erzeugen oder sowas (also Coding, was ich in die Klasse verlegen will).
Du kannst das Coding ja trotzdem in eine Klasse auslagern. Du musst es nur im Exit der Suchhilfe (einmalig) aufrufen.
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: Kapselung Dynproteile

Beitrag von ralf.wenzel (Top Expert / 3924 / 200 / 280 ) »
a-dead-trousers hat geschrieben: Du kannst das Coding ja trotzdem in eine Klasse auslagern. Du musst es nur im Exit der Suchhilfe (einmalig) aufrufen.
Richtig, aber ein Dynpro-Template habe ich dann immer noch nicht ;)
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Kapselung Dynproteile

Beitrag von ewx (Top Expert / 4844 / 311 / 640 ) »
ralf.wenzel hat geschrieben:Die Subscreen-Lösung ist eigentlich die naheliegenste, aber eben auch die am wenigsten ratsamste.
Warum ist das wenig ratsam?

Re: Kapselung Dynproteile

Beitrag von ewx (Top Expert / 4844 / 311 / 640 ) »
Ralf, redest du jetzt von einem Selektionsbild oder einem Dynpro?

Re: Kapselung Dynproteile

Beitrag von ralf.wenzel (Top Expert / 3924 / 200 / 280 ) »
Ein Selektionsbild IST ein Dynpro. Warum es nicht ratsam ist, Include-Programme mehrfach zu inkludieren:

* Probleme bei der Wartung - durch Arbeiten an einem Objekt kann man einen ganzen Stapel von anderen (inkludierenden) Programmen kaputtmachen.

* Generierungsorgie wenn man ein solch zentrales Include generiert

* Verlust der Semantik (bzw. Erzeugung einer ganz anderen Semantik in einem anderen Programm)
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Kapselung Dynproteile

Beitrag von ewx (Top Expert / 4844 / 311 / 640 ) »
ralf.wenzel hat geschrieben:Ein Selektionsbild IST ein Dynpro.
Der Hinweis war klar.
Ein Selektionsbild ist ein SPEZIELLES Dynpro!
Deswegen meine Nachfrage, ob du dein Beispiel in einem Selektionsbild oder in einem Dynpro verwenden möchtest.
ralf.wenzel hat geschrieben:Warum es nicht ratsam ist, Include-Programme mehrfach zu inkludieren:
Du sprachst aber von SubScreens und nicht von Programmen...
Also: Warum ist die Verwendung eines Subscreens wenig ratsam?
ralf.wenzel hat geschrieben:* Probleme bei der Wartung - durch Arbeiten an einem Objekt kann man einen ganzen Stapel von anderen (inkludierenden) Programmen kaputtmachen.
Das lässt sich jedoch erstens in der Regel leicht feststellen/ ausschließen und zweitens funktionieren auch bei der Verwendung einer fehlerhaft geänderten globalen Methode die aufrufenden Programme nicht mehr.
ralf.wenzel hat geschrieben:* Generierungsorgie wenn man ein solch zentrales Include generiert
Irgendwas is ja immer... ;)
ralf.wenzel hat geschrieben:* Verlust der Semantik (bzw. Erzeugung einer ganz anderen Semantik in einem anderen Programm)
Ist das wirklich ausschließlich ein Problem von Includes? Gilt das nicht auch für erwähnte globale Methoden?

Anhand deiner Antworten gehe ich davon aus, dass du von einem Selektionsbild sprichst, da hier ein "Subscreen" tatsächlich durch ein Programminclude erzeugt werden kann.
Die Einbindung eines echten Subscreens ist in Selektionsbildern auch nicht wirklich elegant.

Ich könnte mir als Alternative vorstellen, dass man deine Anforderung auch als Drucktaste abbilden könnte. Durch Betätigen der Drucktaste kommt die erwähnte Suchhilfe. Die eingestellte Suchhilfe kann als Text im Button dargestellt werden.

Diese Lösung funktioniert aber nur speziell bei dieser einen kleinen Anforderung. Sobald wirklich mehrere (Eingabe-) Felder notwendig sind, kommt man zwangsläufig wieder zu deiner Ausgangsfrage.

Und um diese nun zu beantworten: Ich verwende Includes.

Re: Kapselung Dynproteile

Beitrag von ralf.wenzel (Top Expert / 3924 / 200 / 280 ) »
ewx hat geschrieben:ob du dein Beispiel in einem Selektionsbild oder in einem Dynpro verwenden möchtest.
Das Beispiel war jetzt aus einem Selektionsbild, für Dynpros kann ich mir Ähnliches vorstellen
ewx hat geschrieben:Du sprachst aber von SubScreens und nicht von Programmen...
Also: Warum ist die Verwendung eines Subscreens wenig ratsam?
Wenn du die Subscreens irgendwo zentral definieren willst, musst du das in Includes machen. Mir ist nicht bekannt, dass es einen Weg gibt, einen Teil aus einem Selektionsbild einer Funktionsgruppe in einen Report einzublenden.
ewx hat geschrieben:Das lässt sich jedoch erstens in der Regel leicht feststellen/ ausschließen und zweitens funktionieren auch bei der Verwendung einer fehlerhaft geänderten globalen Methode die aufrufenden Programme nicht mehr.
Eine Methode ist ein Programm, das durch die Klasse ein eigenes Rahmenprogramm hat, dem es zugehörig ist. Ein Include ist ein rein textueller Codingabschnitt.
ewx hat geschrieben:Irgendwas is ja immer... ;)
LOL
ewx hat geschrieben:Ist das wirklich ausschließlich ein Problem von Includes? Gilt das nicht auch für erwähnte globale Methoden?
Eine Methode kann ich im Rahmen einer Klasse testen. Ein Syntaxfehler breitet sich nicht aus, so dass zig. Programme nicht mehr aktivierbar sind.
ewx hat geschrieben:Anhand deiner Antworten gehe ich davon aus, dass du von einem Selektionsbild sprichst, da hier ein "Subscreen" tatsächlich durch ein Programminclude erzeugt werden kann.
Die Einbindung eines echten Subscreens ist in Selektionsbildern auch nicht wirklich elegant.
Eben....
ewx hat geschrieben:Ich könnte mir als Alternative vorstellen, dass man deine Anforderung auch als Drucktaste abbilden könnte. Durch Betätigen der Drucktaste kommt die erwähnte Suchhilfe. Die eingestellte Suchhilfe kann als Text im Button dargestellt werden.
Diese Lösung funktioniert aber nur speziell bei dieser einen kleinen Anforderung. Sobald wirklich mehrere (Eingabe-) Felder notwendig sind, kommt man zwangsläufig wieder zu deiner Ausgangsfrage.[/quote]

Eben, wenn ich eine Suchhilfe für dieses Feld brauche.... Oder es sind mehrere Felder....
ewx hat geschrieben:Und um diese nun zu beantworten: Ich verwende Includes.
Ich derzeit auch, aber ich bin mir der Probleme bewusst, die das macht. Darum suche ich nach einer anderen Möglichkeit. Einer "kapseligeren" ;)
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Kapselung Dynproteile

Beitrag von ewx (Top Expert / 4844 / 311 / 640 ) »
ralf.wenzel hat geschrieben:Wenn du die Subscreens irgendwo zentral definieren willst, musst du das in Includes machen. Mir ist nicht bekannt, dass es einen Weg gibt, einen Teil aus einem Selektionsbild einer Funktionsgruppe in einen Report einzublenden.
Doch, es geht (Steht übrigens im ABAP Kochbuch: Kapitel 5.4... ;)).
Du kannst den Subscreen in einer Funktionsgruppe anlegen und dann diesen aufrufen. Du musst vorher einen Funktionsbaustein aus der Funktionsgruppe aufrufen, der die Daten der Anwendung an die Funktionsgruppe überträgt und am Ende einen, der die geänderten Daten wieder in die Anwendung holt.
Das ganze kann man sicherlich auch in einer Klasse kapseln, wobei du für das Dynpro weiterhin ein "Trägerprogramm" (Programm oder Funktionsgruppe) brauchst.

Re: Kapselung Dynproteile

Beitrag von ralf.wenzel (Top Expert / 3924 / 200 / 280 ) »
ewx hat geschrieben:Doch, es geht (Steht übrigens im ABAP Kochbuch: Kapitel 5.4... ;)).
Und warum nutzt du dann Includes?
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Kapselung Dynproteile

Beitrag von ewx (Top Expert / 4844 / 311 / 640 ) »
Bei Reports! Weil das einfacher ist. Zudem habe ich selten Includes die komplett systemweit häufig genutzt werden, sondern eher in einem Projekt- /Anwendungszusammenhang stehen.

Vergleichbare Themen

0
Antw.
5226
Views
ALV Kapselung für einfache Tabellen
von Thomas R. » 11.08.2005 12:02 • Verfasst in Tips + Tricks & FAQs

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.

Unbeantwortete Forenbeiträge

Daten an Tabelle binden
Gestern von Bright4.5 1 / 533
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2162
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8757