ABAP OO und Tabstip mittels Wizard

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

ABAP OO und Tabstip mittels Wizard

Beitrag von ABAP_User (Specialist / 146 / 20 / 0 ) »
Hi,

vllt. eine etwas merkwürdige Frage, aber verwendet ihr den Wizard für ein Tabstrip Control, wenn ihr sauber und objektorientiert programmieren möchtet. Mittels Wizard ging das recht flott, wenn ich das selber programmiere habe ich da derzeit noch Probleme und im Internet habe ich bislang auch noch nichts dazu gefunden, wie man ein Tabstrip objektorientiert aufbaut.


Viele Grüße

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


Re: ABAP OO und Tabstip mittels Wizard

Beitrag von a-dead-trousers (Top Expert / 4282 / 214 / 1141 ) »
hi!

Kurze Antwort: ABAP OO funktioniert nicht mit Dynpros.
Lange Antwort: Du musst das Dynpro zwar in einen Programm ablegen, kannst aber von ABAP OO aus die Steuerung machen.
Hier ist ein guter Ansatz wie das funktionieren könnte.
Ich hab den als Vorlage genommen und selbst ein Framework geschrieben, dass als Brücke zwischen ABAP OO und Dynpro dient.
Dabei bin ich auf folgenden (genialen) trick gestoßen:
Nenn eine Variable im Dynpro z.B. ZCL_DYNPRO_TEST=>ICON. Dann leg eine Klasse ZCL_DYNPRO_TEST an und platziere darin ein statisches Attribut mit dem Namen ICON. Testweise kannst du im CLASS-CONSTURCTOR dem Attribut einen Wert zuweisen.
Das Dynpro normal aufrufen und anschauen was passiert.
Dasselbe funktioniert übrigens auch mit Instanzen: LR_DYNPRO->ICON

Jetzt zu deinem TabStrip-Dilemma:
Du musst auf alle Fälle im Wizzard die Variante mit "Steuerung am Appl.Server" auswählen. Dann erhälltst du ein Dynpro auf dem nur ein SubScreen-Bereich für den TabStrip angelegt wird. Den Inhalt der PBO/PAI-Module die der Wizzard produziert, kannst du auschneiden und in entsprechende Methoden deiner Klasse verfrachten. Die Control-Variable muss im Programm bleiben. Auf die kannst du von der Klasse aus mittels dem ASSIGN-Trick zugreifen. Das ist insofern wichtig, alsdass hiermit die Verarbeitung des Tabstrips gesteuert wird und die Definition nur in einem Programm erfolgen darf.
Von den PAI/PBO-Module rufst du jetzt die entsprechenden Methoden deiner Klasse auf.
Die SubScreen-Anweisung in deinem Dynpro versorgst du nicht über Programmvariablen sondern über den oben erwähnten Trick mit statischen Attributen.
Im Programm musst du nur noch eine FORM-Routine platzieren die das CALL SCREEN des Hauptdynpros übernimmt.

Ich würde empfehlen die Verbindung zwischen Dynpro/Programm und Klasse über statische Attribute/Methoden zu realisieren. Es ist zwar möglich das auch über Instanzen zu machen, aber dazu muss gewährleistet sein, dass das Programm vor dem Aufruf des Dynpros mit der richtigen Instanz versorgt wird. Daher brauchst du eine zusätzliche Funktion/Form die das übernimmt. Wohingegen bei einer statischen Übergabe dieser Schritt entfällt. Du kannst ja trotzdem Problemlos von der Instanz auf die statischen Attribute zugreifen.

Auch entsprechen statische Attribute/Methoden eher der Verwendung von Variablen bei der Dynpro-Verarbeitung.
Ich hab nämlich bei meinen Rechercen herausgefunden, dass man ein und dasselbe Dynpro mittels der SubScreen-Technick mehrfach verwenden kann. Es werden immer die aktuell in der Variable gespeicherten Werte an das Dynpro übertragen bzw von dort ausgelesen.
Auf diesem Umstand fußt mein OO-Dynpro-Framework. Um eine Mehrfachverwendung von Dynpros zu gewährleisten und um nicht jedesmal die PAI/PBO Verarbeitung neu zu schreiben, hab ich nur EINE einzige Dynproklasse und belasse die Variablen im Programm zum Dynpro. Der Zugriff erfolgt über ASSIGN und welche Variablen im Dynpro benötigt werden lesen ich über IMPORT DYNPRO aus.
Von dieser Klasse ausgehend leite ich dann je Anwendung weitere Klassen ab die die spezifische Abarbeitung der Dynpros implementieren.
Quasi das "V" in MVC 8)
Die Hauptklasse ist inzwischen so umfangreich, dass ich DROPDOWN, F1/F4 (mit vollständigem PAI/PBO via DYNP_VALUES_READ/DYNP_VALUES_UPDATE), LOOP AT SCREEN usw. soweit zentralisiert habe und ich darauf keine Rücksicht mehr zu nehmen brauche. Es werden immer die gleichen Steps durchlaufen.
Sogar der LIST-PROCESSOR und SELECTION-SCREENS (mit Modifikation des GUI-Status) sind mit dabei 8)

lg ADT

Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
ABAP_User

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

Seite 1 von 1

Vergleichbare Themen

2
Antw.
1630
Views
TableControl mittels Wizard im Subscreen
von Gast » 11.02.2005 17:34 • Verfasst in Dialogprogrammierung
6
Antw.
3161
Views
Aufruf von ABAP mittels Transaktion
von Piero » 26.01.2005 10:45 • Verfasst in ABAP® Core
10
Antw.
3911
Views
FOLDER AUF LINUX MITTELS ABAP GENERIEREN
von AEONFLUX » 31.08.2004 11:48 • Verfasst in Basis
1
Antw.
3069
Views
Mittels ABAP:Nachrichten-Konditionssatz suchen/finden/prüfen
von gse » 28.11.2006 12:27 • Verfasst in Sales and Distribution
1
Antw.
1594
Views
ALV mit Wizard erstellt
von Conan999 » 30.08.2006 15:20 • Verfasst in Dialogprogrammierung

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

SELECT CHAR16 in CHAR12-Feld
vor 10 Stunden von Shortcut IT 3 / 39
alv_grid aktualisieren
vor 10 Stunden von a-dead-trousers gelöst 3 / 76

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

SELECT CHAR16 in CHAR12-Feld
vor 10 Stunden von Shortcut IT 3 / 39
alv_grid aktualisieren
vor 10 Stunden von a-dead-trousers gelöst 3 / 76

Unbeantwortete Forenbeiträge

Zwischensumme Adobe Forms
vor 4 Wochen von Lucyalison 1 / 134
Group Items auf einer Filterbar
vor 5 Wochen von Bright4.5 1 / 170