Dynpro mit Klassenattributen

Benutzeroberflächen in SAP®-Systemen.
11 Beiträge • Seite 1 von 1
11 Beiträge Seite 1 von 1

Dynpro mit Klassenattributen

Beitrag von ralf.wenzel (Top Expert / 3570 / 167 / 243 ) »
Moin,

ich hab das noch nie so gemacht, aber gerade stellt sich die Frage, ob und wie man Dynpros unter Verwendung von Klassenattributen verwenden kann (ich hatte bisher immer eine Instanz und ein Instanzattribut), um auf globale Felder verzichten zu können.

Gegeben sei eine Funktionsgruppe und einen Funktionsbaustein, der nur einen CALL SCREEN 100 enthält. Auf dem Dynpro ist ein Feld ZCL_DYNPROTEST_RW=>PERNR (Type PERNR_D, ist aber eigentlich egal). Die Klasse und das Attribut gibt es natürlich auch.

Jetzt noch ein Report, der in das Attribut was reinschreibt und dann den FuBau aufruft. Man sollte meinen, dass der Attributsinhalt im Dynprofeld erscheint.

Dann möchte ich den Wert ändern und nach Verlassen des FuBau den neuen Wert im Attribut stehen haben.

Irgendwie klappt das nicht - das Feld ist leer, wenn das Dynpro aufgerufen wird, wenn ich was eingebe, wird es nach Enter wieder leer.

Irgendwas fehlt - aber was?


Ralf


Re: Dynpro mit Klassenattributen

Beitrag von ewx (Top Expert / 4365 / 213 / 479 ) »
Die FIELD Anweisung im PAI?
Ich würde immer empfehlen, mit einer DDIC-Struktur zu arbeiten zwecks Feldbeschreibung, Hilfe und Werthilfe.

Re: Dynpro mit Klassenattributen

Beitrag von black_adept (Top Expert / 3510 / 70 / 691 ) »
Ist die Klasse ZCL_DYNPROTEST_RW global im FuBa bekannt gemacht / definiert? Bei "normalem" DDIC-Bezug muss man ja auch z.B. via TABLES-Statement die DDIC-Struktur als programmglobale Variable deklarieren.
Sonst probier doch mal im FuBa ein CLASS XXX DEFINITION INHERITING FROM ZCL_DYNPROTEST_RW. ENDCLASS und referenziere dann dein Dynprofeld auf die XXX-Klasse statt der DDIC-Klasse.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Dynpro mit Klassenattributen

Beitrag von ralf.wenzel (Top Expert / 3570 / 167 / 243 ) »
Der Zweck soll doch lt. SAP Hilfe dazu dienen, von globalen Feldern wegzukommen.....


Ralf

Re: Dynpro mit Klassenattributen

Beitrag von ewx (Top Expert / 4365 / 213 / 479 ) »
Die SAP rät auch von Funktionsbausteinen ab. Aber was willste machen, wenn du rfc brauchst...?!

Re: Dynpro mit Klassenattributen

Beitrag von black_adept (Top Expert / 3510 / 70 / 691 ) »
Bei mir funktioniert's - auch ohne FIELD-Anweisung. Wahrscheinlich hast du dich einfach irgendwo vertippt.

Aber als ich das Beispiel kurz aufgebaut habe - das ist doch totaler Mumpitz was du da versuchst. Du kannst auf dem Dynpro bei deiner Vorgehensweise weder auf eine (gobale) Programmvariable noch auf ein DDIC-Element verlinken sondern musst manuell dein statisches Attribut angeben ( da ist dann wahrscheinlich der Tippfehler irgendwo ) und dich selber um die Dimensionierung, Beschriftung etc. kümmern.
Hör auf Enno und mach einen Dictionarybezug. Das ist m.W. auch die "best practice" beim Arbeiten mit Dynpros.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Dynpro mit Klassenattributen

Beitrag von ralf.wenzel (Top Expert / 3570 / 167 / 243 ) »
War ein Tippfehler, stimmt. Ich würde das auch so nie machen, ich würde immer eine Distanz einer UI-Klasse und die Instanzattribute im Dynpro verwenden. So kriegt man schön gekapselt als ein Parameter nicht nur die Inhalte, sondern auch die Methoden für das Dynpro komplett fertig geliefert.

Ein Dynpro mit globalen Feldern habe ich bestimmt schon seit 5 Jahren nicht mehr aufgebaut. Wenn nicht länger. Aufgrund der oben beschriebenen Vorteile. Die könnte ich jetzt noch en Detail beschreiben, aber wir sind ja hier unter Profis, so dass der eine Satz eigentlich reichen sollte.


Ralf

Re: Dynpro mit Klassenattributen

Beitrag von black_adept (Top Expert / 3510 / 70 / 691 ) »
Moin Ralf,

"Distanz einer UI-Klasse" gefällt mir - Corona wird bei dir auch bei der Dynproprogrammierung berücksichtigt. *Respekt*

Du weißt, dass ich nicht ganz so klasseneuphorisch bin wie du, und meine Erfahrungen mit Dynproprogrammierung sind so, dass ich deine Vorgehensweise mit Instanzattributen auf dem Dynpro für "Nett" halte. Und "Nett" ist die kleine Schwester von ....
Wenn du das Ganze kapseln willst, hast du dir mal folgendes Hybridkonstrukt überlegt?
  • Du legst eine dynprospezifische DDIC-Struktur an, welche zu jedem Instanzattribut deiner Klasse, welches auf dem Dynpro erscheint, ein typgleiches Feld enthält
  • Die DDIC-Struktur definierst du im Rahmenprogramm des Dynpros via TABLES
  • Im PBO machst du de facto nur ein MOVE der Instanzattribute in die DDIC-Struktur
  • Im PAI den umgekehrten Weg von der DDIC-Struktur in die Instanzattribute
  • Damit kannst du dann doch die gesamte Verarbeitung in die Klasse auslagern. Ob du dann die dynprospezifischen Befehle wie FIELDS...MODULE AT... verwenden willst oder alles in der Klasse machen möchtest, was SAP sonst von Haus aus anbietet ist dann Geschmackssache.
Damit kannst du eigentlich sauber klassenbasiert arbeiten, aber die Darstellung auf dem Dynpro ( UI ) lagerst du auf die von SAP dafür vorgesehene Vorgehensweise aus. Du erkaufst das mit globalen Definitionen ( TABLES ), gewinnst aber all die Vorteile, die SAP mit der Kombination von DDIC und Dynpro geschaffen hat. Und die Zahl der Vorteile ist Legion.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Dynpro mit Klassenattributen

Beitrag von ralf.wenzel (Top Expert / 3570 / 167 / 243 ) »
Ja, das geht auch. Aber niemand hindert einen Entwickler daran, an den globalen Feldern herumzuspielen....


Ralf

Re: Dynpro mit Klassenattributen

Beitrag von ewx (Top Expert / 4365 / 213 / 479 ) »
Einen Entwickler hindert sowieso gar nichts...! 😂

Re: Dynpro mit Klassenattributen

Beitrag von black_adept (Top Expert / 3510 / 70 / 691 ) »
ralf.wenzel hat geschrieben:
02.04.2021 20:20
Ja, das geht auch. Aber niemand hindert einen Entwickler daran, an den globalen Feldern herumzuspielen....
Und was soll sie Tolles dabei machen? Da du die Daten direkt im PBO aus der Klasse holst und im PAI in die Klasse zurückschreibst gibt es eigentlich keinen Moment wo "der Entwickler" an den globlen Feldern etwa Relevantes mache könnte, da diese nur zum Feldtransport gefüllt/gelesen werden und sonst im Programm keine Bedeutung haben. Und wenn du ganz paranoid bist und verhindern willst dass ein Fremder mittels READ_DYNPRO o.ä. auf die Dynproinhalte noch zugreifen kann ( z.B. wenn du einen Dynprostack hast ), kannst du im PAI nach dem Transport in deine Klasse ja noch die Felder auf dem Dynpro leeren, da du die beim nächsten PBO ja sowieso aus der Klasse neu setzt.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Seite 1 von 1

Über diesen Beitrag



Unterstütze die Community und teile den Beitrag für mehr Leser und besseren Inhalt:

Vergleichbare Themen

Datentypen von Klassenattributen bestimmen
von Paddy » 04.01.2012 12:25
Automatische Pragmas bei Klassenattributen
von IHe » 26.10.2016 14:46
Web-Dynpro: längeres Dynpro nicht sichtbar
von erzoo24 » 08.03.2017 11:33
Feld aus Dynpro A an Dynpro B übergeben
von SAPAlex » 06.03.2008 17:35