Speichern von Eingabe des Selektionscreens

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

Speichern von Eingabe des Selektionscreens

Beitrag von msfox (ForumUser / 57 / 7 / 5 ) » 21. Aug 2019 15:48

Ich habe einen Report mit Selektionsscreen. Dieser ist nun so programmiert, dass nach der Auswahl ein Dynpro prozessiert wird. Verlässt man dieses Dynpro, so wird der Report bzw. die Transaktion neu gestartet (ist aus irgendeinem Grund so programmiert). Im Ergebnis sind alle Benutzereingaben weg. Vom Kunden ist nun gewünscht, das diese Eingaben erhalten bleiben.

Die saubere Variante wäre, hierfür Benutzerparameter anzulegen und diese an das Selektionsfeld zu binden. Jedoch sind es sehr viele Parameter und am Ende auch 3 Reports die angepasst werden müssen.

Also hatte ich die Idee im START-OF-SELECTION via FuBa RS_REFRESH_FROM_SELECTOPTIONS diese Werte auszulesen pro Feld per SET PARAMETER wegzuschreiben. Dieses dann im INITIALIZATION wieder via GET zu lesen.
Das klappt aber nicht für Select-Options, welche mehre Zeilen als Eingabewerte haben.

Nun war meine Plan, dies über Shared Memory Objects zu machen. Dort wollte ich die gesamte Tabelle aus Fuba RS_REFRESH_FROM_SELECTOPTIONS ablegen.

FRAGE: Das Shared Memory ist doch benutzerübergreifend - oder?
Würde also auch nicht klappte. Oder kann man die Daten im Shared Memory pro Benutzer ablegen?

Was hätte ich noch für eine Möglichkeit, den Wunsch des Kunde zu erfüllen?


Re: Speichern von Eingabe des Selektionscreens

Beitrag von ewx (Top Expert / 4024 / 169 / 388 ) » 21. Aug 2019 16:49

msfox hat geschrieben:
21. Aug 2019 15:48
Die saubere Variante wäre, hierfür Benutzerparameter anzulegen und diese an das Selektionsfeld zu binden.
Die saubere Variante wäre, den Neustart der Transaktion zu entfernen.
Das, was du möchtest, ist das Standardverhalten eines Reports!

Mit Benutzerparametern kommst du nicht weit, da du so keine Select-Options speichern kannst.

Re: Speichern von Eingabe des Selektionscreens

Beitrag von black_adept (Top Expert / 3268 / 55 / 588 ) » 21. Aug 2019 20:07

Hallo msfox,

du hast doch schon alles parat um das zu bewerkstellligen. Der FuBa RS_REFRESH_FROM_SELECTOPTIONS gibt dir all deine Informationen in einer Tabelle vom Typ "RSPARAMS" zurück. Und zufälligerweise besitzt der SUBMIT-Befehl einen Zusatz "WITH SELECTION TABLE" ( Doku hier) der genau so einen Tabellentyp erwartet.

Falls der Neustart des Programm über "SUBMIT" erfolgt brauchst du das nur mitzugeben. Wenn es über "CALL TRANSACTION" erfolgt musst du dich eines kleinen Tricks bedienen: Zunächst stellst du die RSPARAMS-Tabelle mittels "EXPORT TO MEMORY ID " ins globale ( nicht shared ) Memory ( als ID verwende ich in so einem Fall immer den Reportnamen ). Und in das Programm selber baust du zum Zeitpunkt "INITIALIZATION" ein IMPORT FROM MEMORY ein und wenn da etwas gefunden wird machst du dort dann den SUBMIT auf sich selbst mit den Parametern.

P.S. Es empfiehlt sich in letzerem Fall nach dem IMPORT FROM MEMORY dieses explizit zu löschen um nicht in eine amüsante Endlosschleife zu geraten.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Speichern von Eingabe des Selektionscreens

Beitrag von msfox (ForumUser / 57 / 7 / 5 ) » 22. Aug 2019 12:23

black_adept hat geschrieben:
21. Aug 2019 20:07
Zunächst stellst du die RSPARAMS-Tabelle mittels "EXPORT TO MEMORY ID " ins globale ( nicht shared ) Memory ( als ID verwende ich in so einem Fall immer den Reportnamen ). Und in das Programm selber baust du zum Zeitpunkt "INITIALIZATION" ein IMPORT FROM MEMORY ein und wenn da etwas gefunden wird machst du dort dann den SUBMIT auf sich selbst mit den Parametern.
Danke für die Infos. Ich bin leider nicht Dynpro-Entwickler um die Tricks zu kennen. Eher Webdynpro. Trotzdem hatte ich mit dem EXPORT und IMPORT TO MEMORY schon probiert. Wenn aber die Transaktion neu gestartet, was bei einem LEAVE TO TRANSACTION passiert, so ist die alte Session weg und der IMPORT im INITIALIZATION liefert nix.

Ander Varianten:
Es gibt die Funktion "Syste->Benutzervorgaben->Daten halten". Laut Doku aktiviert man diese Funktion mit SET HOLD DATA ON. Das habe ich im INITIALIZATION eingebaut. Das schein rudimentär zu funktionieren. Nicht immer sind die gehaltenen Daten nach einem LEAVE TO TRANSACTION noch da.

Wenn ich mir ab den Code bei meinem Report so anschaue, scheint die Funktion so gewollt zu sein, dass die Daten verloren gehen.

Re: Speichern von Eingabe des Selektionscreens

Beitrag von black_adept (Top Expert / 3268 / 55 / 588 ) » 23. Aug 2019 00:24

Das ist falsch. Export to Memory geht auch über Transaktionsgrenzen hinaus
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Seite 1 von 1

Aktuelle Forenbeiträge

SELECT-OPTIONS: NO INTERVALS auch in Fenster Mehrfachselekti
vor 22 Minuten von DeathAndPain 7 / 7178
Lookup Tabelle in Methode lesen und erweitern
vor 31 Minuten von DeathAndPain 7 / 133
ABAP Editor gelöst
vor einer Stunde von DeathAndPain 7 / 122
Fehler bei F4-Hilfe
vor einer Stunde von DeathAndPain 5 / 100

Unbeantwortete Forenbeiträge

Mini-SAP Einstiegs Logo ändern
vor 21 Stunden von Tron 1 / 84
Absenderland in Transaktion BP setzen
Gestern von SAP_ENTWICKLER 1 / 72
Funktionsbaustein QPMK_MSTCHA_VERS_CREATE
vor einer Woche von SAP_ENTWICKLER 1 / 101
OLE 2 Excel Datum konvertieren
vor einer Woche von Kerstin 1 / 92