Systemtabelle SCREEN an Klasse übergeben

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
8 Beiträge • Seite 1 von 1
8 Beiträge Seite 1 von 1

Systemtabelle SCREEN an Klasse übergeben

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

ich möchte gern ein paar "allgemeingültige" Routinen in eine globale Klasse auslagern, die von diversen Programmen aufgerufen werden soll. Dazu müsste ich "das Dynpro" (also die Tabelle SCREEN und die Inhalte aller Dynprofelder) komplett an diese Klasse übergeben, damit diese dann diverse Prüfungen machen kann.

Das fängt nu schon damit an, dass es die Tabelle SCREEN als Tabelle gar nicht gibt und ich erst zur Laufzeit weiß, welche Felder das Programm überhaupt hat, deren Inhalte ich dann an die Klasse weitergeben muss.

Hat wer einen Tipp, wie ich geschickterweise vorgehen sollte?
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: Systemtabelle SCREEN an Klasse übergeben

Beitrag von a-dead-trousers (Top Expert / 4395 / 223 / 1182 ) »
Das LOOP AT SCREEN einfach INNERHALB der Klasse aufrufen.
Abgearbeitet wird immer das AKTUELLE Dynpro (sy-dynnr/sy-repid) im aktuellen STEPLOOP (sy-stepl/bei Tabellen)
Die Methode muss dann nur im entsprechenden Modul des Dynpros aufgerufen werden.

Die Variablen kannst du...
... entweder in der Klasse definieren und dann im Dynpro verwenden:
"object->attr" (Instanzattribut) oder "class=>attr" (Statisches Attribut)
... oder mit einem "Dirty-Assign" arbeiten.

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: Systemtabelle SCREEN an Klasse übergeben

Beitrag von ralf.wenzel (Top Expert / 3924 / 200 / 280 ) »
a-dead-trousers hat geschrieben:Das LOOP AT SCREEN einfach INNERHALB der Klasse aufrufen.
Abgearbeitet wird immer das AKTUELLE Dynpro (sy-dynnr/sy-repid) im aktuellen STEPLOOP (sy-stepl/bei Tabellen)
Wow, warum komme ich auf die einfachsten Sachen nicht selbst????
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Systemtabelle SCREEN an Klasse übergeben

Beitrag von black_adept (Top Expert / 4087 / 126 / 940 ) »
Guten Abend Ralf,

die Inhalte der Felder brauchst du wahrscheinlich auch nicht an die Klasse übergeben. Genau wie der LOOP AT SCREEN sollte auch der FuBa DYNP_VALUES_READ jederzeit die Daten vom aktuellen Dynpro fischen können wenn du den ( inzwischen sogar dokumentierten) Parameter REQUEST mit "A" belegst. Damit bekommst du sogar die Steploops mit ausgelesen ohne wissen zu müssen über welche Tabelle der Loop ursprünglich ging.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Systemtabelle SCREEN an Klasse übergeben

Beitrag von a-dead-trousers (Top Expert / 4395 / 223 / 1182 ) »
black_adept hat geschrieben:Genau wie der LOOP AT SCREEN sollte auch der FuBa DYNP_VALUES_READ jederzeit die Daten vom aktuellen Dynpro fischen können...
Einige Probleme dabei:
Man muss sich selbst um die CONVERSION-EXITS kümmern (z.B. Datum, Uhrzeit, Drucker, Alpha usw.)
Die maximale Zeichenanzahl ist begrenzt (Strings funktionieren am Dynpro damit nur bedingt)
Für die korrekte Interpretierung der rechtsbündigen Ausgabe (nicht Speicherung!) muss die Feldlänge bekannt sein.
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: Systemtabelle SCREEN an Klasse übergeben

Beitrag von ralf.wenzel (Top Expert / 3924 / 200 / 280 ) »
a-dead-trousers hat geschrieben:Man muss sich selbst um die CONVERSION-EXITS kümmern (z.B. Datum, Uhrzeit, Drucker, Alpha usw.)
Dafür habe ich eine Universalmethode, die zu einem Feld in der Domäne den Exit raussucht und entsprechend konvertiert. Das ist so ein Ding, das man einmal schreibt und 1.000 mal braucht.
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Systemtabelle SCREEN an Klasse übergeben

Beitrag von ralf.wenzel (Top Expert / 3924 / 200 / 280 ) »
Außerdem kann man da sicherlich was mit structdescr / describe by data was machen. Ich werde das beizeiten mal testen....
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Systemtabelle SCREEN an Klasse übergeben

Beitrag von a-dead-trousers (Top Expert / 4395 / 223 / 1182 ) »
ralf.wenzel hat geschrieben:Außerdem kann man da sicherlich was mit structdescr / describe by data was machen. Ich werde das beizeiten mal testen....
Naja, solange kein DDIC-Bezug (per Name) besteht, bleiben meines Wissens nur zwei Möglichkeiten:
ENTWEDER die Einstellungen aus dem Dynpro auslesen (IMPORT DYNPRO)
ODER mittels Dirty-Assign die entsprechende Variable aus dem Programm holen und darauf den Typedescr anwenden.
Aber die erste Variante benutzt einen von der SAP "nicht erlaubten" Befehl und bei der zweiten brauchst du erst wieder eine Variable im Programm und damit ist der ganze DYNP_READ_VALUES Kram unnötig, weil dann (bis auf POV und POH) der Feldtransport sowieso funktioniert.

Die bislang beste Lösung um die Felder eines Dynpros in einer Klasse möglichst effizient zu nutzen, hat meines erachten ein Kollege von mir entdeckt:
In der Klasse für alle Felder des Dynpros ein statisches(!) Attribut und im Dynpro darauf mittels "KLASSE=>ATTRIBUT" Bezug nehmen.
Der große Vorteil ist, dass man im Programm in dem die Dynpros liegen, keine Variablen mehr benötigt. Wenn man die PAI/PBO/POV/POH-Module für die Verarbeitung dann noch in ein Include auslagert das dann in mehrere Programme eingebunden werden kann, besteht jedes neue Trägerprogram für die Dynpros nur aus zwei Zeilen Code. Einzige Ausnahme bleibt, wenn man Table-Controls oder Tabstrips verwendet, dass man nach wie vor auch die CONTROLS-Anweisung im Programm benötigt.

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

Seite 1 von 1

Vergleichbare Themen

2
Antw.
4008
Views
CALL SCREEN aus der Klasse
von annaarnst » 29.07.2008 17:33 • Verfasst in ABAP Objects®
4
Antw.
546
Views
Screen Painter geänderte Felder ubergeben
von Micha_ela » 10.07.2023 18:05 • Verfasst in ABAP® für Anfänger
16
Antw.
5321
Views
Screen in Repository Klasse erstellen
von Paddy » 25.01.2012 16:51 • Verfasst in ABAP® für Anfänger
2
Antw.
6030
Views
Selection-Screen in Klasse definieren
von eddi892 » 18.01.2012 10:39 • Verfasst in ABAP Objects®
1
Antw.
2389
Views
FuBa: Importparamter an Dynpro übergeben / Call Screen
von Thendic » 20.01.2006 08:44 • Verfasst in ABAP® Core

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 / 511
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2146
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8742