Selection Screen - Eingaben löschen nach Rückkehr aus Liste

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

Selection Screen - Eingaben löschen nach Rückkehr aus Liste

Beitrag von Hansel (ForumUser / 3 / 0 / 1 ) »
Sorry aber ich bin irgendwie vernagelt...

Ich möchte nach Eingabe der Selektionskriterien und Aufruf einer popeligen Liste auf meinen Selection-Screen zurückkehren und alle Eingaben löschen, also nach jeder Listanzeige den Selection Screen wieder jungfräulich vorfinden.

irgendwelche Ideen wie das zu bewerkstelligen ist ?

thanx in advance

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


Beitrag von black_adept (Top Expert / 4089 / 127 / 940 ) »
Beim Zeitpunkt "INITIALIZATION" alle Eingabeparameter löschen.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Beitrag von Gast ( / / 0 / 3 ) »
black_adept hat geschrieben:Beim Zeitpunkt "INITIALIZATION" alle Eingabeparameter löschen.
Ich würde "AT SELECTION-SCREEN OUTPUT" nehmen.


"INITIALIZATION" wird nur einmalig bei Start eines Reports durchlaufen.

"AT SELECTION-SCREEN OUTPUT" Dieses Ereignis wird - im Gegensatz zu INITIALIZATION - jedesmal zum Zeitpunkt PBO des Selektionsbildes prozessiert.

Beitrag von Frank Dittrich (Expert / 674 / 0 / 15 ) »
Dass die Eingabewerte bei Rückkehr ins Sylektionsbild erhalten bleiben, wird von SAP als Feature angesehen und dürfte auch den Erwartungen der meisten User entsprechen.
Du kannst ja mit SELECTION SCREEN FUNCTION KEY ... eine Taste definieren, die alle Eingabewerte zurücksetzt.

Auf keinen Fall würde ich das zu AT SELECTION-SCREEN OUTPUT erzwingen.
Ich wäre jedenfalls nicht gerade begeistert, wenn ich im Selektionsbild Enter drücke und dann feststelle, dass alle meine Eingaben weg sind.

Beitrag von Gast ( / / 0 / 3 ) »
Frank Dittrich hat geschrieben:Dass die Eingabewerte bei Rückkehr ins Sylektionsbild erhalten bleiben, wird von SAP als Feature angesehen und dürfte auch den Erwartungen der meisten User entsprechen.
Du kannst ja mit SELECTION SCREEN FUNCTION KEY ... eine Taste definieren, die alle Eingabewerte zurücksetzt.

Auf keinen Fall würde ich das zu AT SELECTION-SCREEN OUTPUT erzwingen.
Ich wäre jedenfalls nicht gerade begeistert, wenn ich im Selektionsbild Enter drücke und dann feststelle, dass alle meine Eingaben weg sind.
Liest Du dir eigentlich die vorgegeben Anforderungen überhaupt durch?
Ob SAP das als Feature ansieht war hier überhaupt nicht gefragt, im Gegenteil.
Und was die meisten User erwarten ist hier auch nicht von Interesse, sondern das was vom "Auftraggeber" verlangt ist.
Hansel hat geschrieben:Ich möchte nach Eingabe der Selektionskriterien und Aufruf einer popeligen Liste auf meinen Selection-Screen zurückkehren und alle Eingaben löschen, also nach jeder Listanzeige den Selection Screen wieder jungfräulich vorfinden.

Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
Anonymous hat geschrieben:
Frank Dittrich hat geschrieben:Dass die Eingabewerte bei Rückkehr ins Sylektionsbild erhalten bleiben, wird von SAP als Feature angesehen und dürfte auch den Erwartungen der meisten User entsprechen.
Du kannst ja mit SELECTION SCREEN FUNCTION KEY ... eine Taste definieren, die alle Eingabewerte zurücksetzt.

Auf keinen Fall würde ich das zu AT SELECTION-SCREEN OUTPUT erzwingen.
Ich wäre jedenfalls nicht gerade begeistert, wenn ich im Selektionsbild Enter drücke und dann feststelle, dass alle meine Eingaben weg sind.
Liest Du dir eigentlich die vorgegeben Anforderungen überhaupt durch?
Ob SAP das als Feature ansieht war hier überhaupt nicht gefragt, im Gegenteil.
Und was die meisten User erwarten ist hier auch nicht von Interesse, sondern das was vom "Auftraggeber" verlangt ist.
Hansel hat geschrieben:Ich möchte nach Eingabe der Selektionskriterien und Aufruf einer popeligen Liste auf meinen Selection-Screen zurückkehren und alle Eingaben löschen, also nach jeder Listanzeige den Selection Screen wieder jungfräulich vorfinden.
vielleicht sollte Hansel mal seinen Code des Selektionsbildes posten, damit wir verstehen können, was bei ihm passiert. Dann ist es wahrscheinlich auch möglich, eine Empfehlung auszusprechen.

Nach meinem Verständnis stellt sich die Lage so dar:
Hansel hat einen Report mit einem Selektionsscreen geschrieben, der eine (nicht-interaktive ?!?) Liste ausgibt.
Wenn man die Liste mittels grünen Pfeil (back) verläßt, wird der Selektionsscreen wieder aufgebaut.
Dabei werden Werte dann vorgegeben, die Hansel nicht haben will.

Was ich dabei nicht verstehe, ist die Verwendung des Begriffes 'jungfräulich'. :?:

Nach Rückkehr von einer Reportausgabeliste wird normalerweise der Report (intern) neu gestartet. Dabei werden zunächst reportinterne Vorbelegungen der Parameter gesetzt (entspricht wohl dem Event LOAD-OF-PROGRAM). Dann durchläuft das Program den Event INITIALIZATION, falls definiert und als müßten die GET/-SET-Parameter gesetzt werden, wenn ein Feld leer ist.
Hiernach kommt das Abmischen mit Varianteninformationen und das Event AT SELECTION-SCREEN PUTPUT.

@Hansel
wie soll denn das 'jungfäuliche' Selektionsbild aussehen?
Gruß
Ereglam


May the Force be with your code
|| .| |.|| | .... . ..|. ||| .|. |.|. . |... . .|| .. | .... |.|| ||| ..| .|. |.|. ||| |.. .

Beitrag von Frank Dittrich (Expert / 674 / 0 / 15 ) »
Anonymous hat geschrieben:
Frank Dittrich hat geschrieben:Dass die Eingabewerte bei Rückkehr ins Sylektionsbild erhalten bleiben, wird von SAP als Feature angesehen und dürfte auch den Erwartungen der meisten User entsprechen.
Du kannst ja mit SELECTION SCREEN FUNCTION KEY ... eine Taste definieren, die alle Eingabewerte zurücksetzt.

Auf keinen Fall würde ich das zu AT SELECTION-SCREEN OUTPUT erzwingen.
Ich wäre jedenfalls nicht gerade begeistert, wenn ich im Selektionsbild Enter drücke und dann feststelle, dass alle meine Eingaben weg sind.
Liest Du dir eigentlich die vorgegeben Anforderungen überhaupt durch?
Nein, nie.
Ich weiß immer alles besser, ohne jemals die Fragen zu lesen.
Aber damit sage ich Dir ja nichts neues.
Ob SAP das als Feature ansieht war hier überhaupt nicht gefragt, im Gegenteil.
Und was die meisten User erwarten ist hier auch nicht von Interesse, sondern das was vom "Auftraggeber" verlangt ist.
Jetzt habe ich doch tatsächlich mal die Frage gelesen.
Da stand aber nicht "vom Auftraggeber verlangt".
Sondern nur "Ich möchte ...".
Und selbst wenn der Auftraggeber etwas möchte, kann es nicht schaden, ihn darauf hinzuweisen.
(Gründe habe ich genannt.
Kann sie aber gerner noch detaillierter ausführen, wenn sie Dir so nicht einleuchten.)
Mag ja sein, dass es in diesem einen Fall unerwünscht ist, dass die Werte erhalten bleiben.
Aber wenn sich jede Anwendung anders verhält ("Ich möchte aber, dass der Nutzer sofort ohne Rüchfragen abgemeldet wird, wenn er den "Save"-Button drückt ..."), dann trägt das nicht gerade zur Reduzierung des Support-Aufwandes bei.
Hansel hat geschrieben:Ich möchte nach Eingabe der Selektionskriterien und Aufruf einer popeligen Liste auf meinen Selection-Screen zurückkehren und alle Eingaben löschen, also nach jeder Listanzeige den Selection Screen wieder jungfräulich vorfinden.
Auch hier habe ich einen Vorschlag gemacht.
Vielleicht nicht optimal, weil der Nutzer noch eine Funktionstaste betätigen muss, aber um Längen besser als die (von Dir vorgeschlagene?) Variante mit AT SELECTION-SCREEN OUTPUT.

Es sei denn, Du hattest im Sinn, beim Erzeugen der Liste ein Flag zu setzen und dieses Flag bei AT SELECTION-SCREEN OUTPUT auszuwerten.
Wenn die Werte nur beim jeweils ersten Aufruf von AT SELECTION-SCREEN OUTPUT nach Rückkehr aus der Liste initialisiert werden, mag das noch akzeptabel sein.

Trotzdem: Ein Anwender, der manuell 100 Einzelwerte in verschiedene Select-Options eingetragen hat, sieht das vielleicht anders.
Zuletzt geändert von Frank Dittrich am 15.04.2005 09:26, insgesamt 2-mal geändert.

Beitrag von Frank Dittrich (Expert / 674 / 0 / 15 ) »
ereglam hat geschrieben:Was ich dabei nicht verstehe, ist die Verwendung des Begriffes 'jungfräulich'. :?:
Vermutlich: Der Zustand, der beim ersten Aufruf des Selektionsbilds angezeigt wird, ohne die von Nutzer vorgenommenen manuellen Eingaben, die SAP "behält", wenn man aus der Liste mit F3 ins Selektionsbild zurückkehrt.

Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
Frank Dittrich hat geschrieben:
ereglam hat geschrieben:Was ich dabei nicht verstehe, ist die Verwendung des Begriffes 'jungfräulich'. :?:
Vermutlich: Der Zustand, der beim ersten Aufruf des Selektionsbilds angezeigt wird, ohne die von Nutzer vorgenommenen manuellen Eingaben, die SAP "behält", wenn man aus der Liste mit F3 ins Selektionsbild zurückkehrt.
:oops: ja, da war was...

Dann muss er wahrscheinlich mit AT USER-COMMAND oder AT PF3 ein CALL TRANSACTION 'SA38' AND SKIP FIRST SCREEN absetzen und zuvor SET/GET-Parameter RID mit dem Programmnamen setzen.
Gruß
Ereglam


May the Force be with your code
|| .| |.|| | .... . ..|. ||| .|. |.|. . |... . .|| .. | .... |.|| ||| ..| .|. |.|. ||| |.. .

Beitrag von black_adept (Top Expert / 4089 / 127 / 940 ) »
/me schämt sich, weil er seine Antwort vorhin gepostet hatte ohne ein System parat zu haben. :oops: :oops: :oops:

Also nochmal - das Löschen der Eingabefelder zu "INITIALZATION" bringt nix, da SAP später die Felder neu versorgt.

Ich habe aber schnell nochmal in einem alten Programm von mir nachgeschaut wie es denn doch geht (ohne alle Felder einzeln zu löschen bei AT SELECTION-SCREEN OUTPUT ).

Neuer Lösungsvorschlag ( zumindest hatte ich das mal so implementiert ).
Einen Userstatus in der Liste definieren ( wenn nicht sowieso schon gemacht ) und die üblichen Buttons, die zum Selektionsbildschirm zurückkehren mit anderen Funktionscodes belegen. ( z.B. "BACK" -> "ZBACK", "RW" -> "ZRW", "%EX" -> "Z%EX" )

Nun zum Zeitpunkt " AT USER-COMMAND" folgende triviale Behandlung einfügen und du solltest den Effekt haben, den du wünscht.

Code: Alles auswählen.

AT USER-COMMAND.
  CASE sy-ucomm.
    WHEN 'ZBACK' OR 'ZRW' OR 'Z%EX'.
      SUBMIT (sy-repid) VIA SELECTION-SCREEN.
  ENDCASE.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Beitrag von Undertaker (ForumUser / 9 / 0 / 0 ) »
Hallöchen,

kann es sein, daß ihr etwas zu kompliziert denkt.

Wenn zum Neustart:

LEAVE TO TRANSACTION sy-tcode.

verwendet wird, wird alles automatisch initialisiert.

Voraussetzung ist natürlich, daß der Report als Transaktion aufgerufen wurde.

Beitrag von GastX (Specialist / 277 / 4 / 18 ) »
@undertaker:
das "LEAVE TO TRANSACTION" müsste allerdings genauso gestartet werden wie das "SUBMIT (REP-ID)", damit es am Ende der Liste ausgeführt wird.

@Frank Dittrich:
Einen Button o.ä. wäre sicher geschickt, falls das Selektionsbild immer wieder viele Einträge enthält, die man größenteils übernehmen kann. Insbesondere, da es sich anscheinend ja "nur" um eine Liste handelt.
Hatten aber auch schon den Fall, das ein wichtiger Parameter explizit gelöscht werden musste, damit eine Neueingabe notwendig wurde. Sonst wurde er versehentlich(!) mit dem alten Wert benutzt und machte darüber immer wieder "Ärger".

Hast ja dafür auch die Lösung skizziert, fiel mir aber erst beim zweiten oder dritten Mal auf (etwas flüchtig gelesen), falls es anderen auch so ging, hier in Code-Form:

Code: Alles auswählen.

REPORT ZZDELSEL .

PARAMETERS: P_EING(5) TYPE C.

DATA: DEL_FLAG TYPE C.

INITIALIZATION.
  DEL_FLAG = 'X'.

AT SELECTION-SCREEN OUTPUT.
  IF DEL_FLAG = 'X'.
    CLEAR P_EING.
    CLEAR DEL_FLAG.
  ENDIF.

START-OF-SELECTION.
  WRITE :/' Liste'.
Gruß, Frank

Re: Selection Screen - Eingaben löschen nach Rückkehr aus Li

Beitrag von Hansel (ForumUser / 3 / 0 / 1 ) »
Hansel hat geschrieben:Sorry aber ich bin irgendwie vernagelt...

Ich möchte nach Eingabe der Selektionskriterien und Aufruf einer popeligen Liste auf meinen Selection-Screen zurückkehren und alle Eingaben löschen, also nach jeder Listanzeige den Selection Screen wieder jungfräulich vorfinden.

irgendwelche Ideen wie das zu bewerkstelligen ist ?

thanx in advance

OK liebe Gemeinde Danke für Eure zahlreichen Antworten, kann leider nicht auf jede einzelne Antworten, bitte nicht beleidigt sein, ich hatte viel zu tun... daher will ich die Lösung nicht schuldig bleiben.

@black_adept
Nach Rückkehr auf den SelScreen wird der Report neu prozessiert, zu diesem Zeitpunkt ist das Feld bereits leer.
-Keine Wirkung

@Gast
AT SELECTION-SCREEN OUTPUT
hatte ich bereits versucht gleiches Problem wie oben
-Keine Wirkung

@Frank Dittrich
Die Anforderung an den Report entspricht dieser Definition und leitet sich aus der Arbeit mit einem Scanner ab.
Prozess : Scannen -> anzeigen -> (löschen) -> nächsten Scannen

@ereglam
jungfräulich = wie erster Start alle Felder initial = in diesem Fall leer.
- ich habe hier nur einen einfachen Selscreen keine Parameter keine Memory IDs oder etwas ähnliches und den Eingabescreen kann ich nicht überspringen, denn da soll ja eingegeben werden.

- LEAVE TO TRANSACTION sy-tcode
- SUBMIT (sy-repid) VIA SELECTION-SCREEN

könnte vielleicht funktionieren ABER :

Die Lösung ist so trivial das man ersma nich drauf kommt.... deswegen meinte ich vernagelt.

Die Lösung:
Im Prinzip ist es nur zu einem einzigen Ereignis Zeitpunkt möglich die Angaben des Benutzers so zu verändern das die Veränderung auch am Bildschirm sichtbar wird und das ist (bei Reporttransaktionen) nunmal AT Selection-Screen.
Also muss auch da gelöscht werden.
Bevor ich also (Begin-of-Selection) abarbeite kopiere ich einfach die Benutzereingaben in Range Objekte und lösche die SELECT-OPTIONS dann.
Über SSCRFIELDS-UCOMM stelle ich dabei sicher das tatsächlich prozessiert werden soll.
Da im Prinzip schon vorher gelöscht wurde, ist nach Rückkehr aus der Liste der SelScreen leer.

trotzdem Danke für Bemühungen
der Hansel
















-

Folgende Benutzer bedankten sich beim Autor Hansel für den Beitrag:
Alexander D.


Beitrag von Gast ( / / 0 / 3 ) »
Hallo alle zusammen,

habe die Diskussion mit Interesse verfolgt. Die Problemstellung hat mich an eine Technik erinnert, die wir seit Jahren verwenden, um dem Anwender die letzten Eingaben bei Ausführung eines Reports beim nächsten Aufruf vorzuschlagen. Ich habe das Coding auf die aktuelle Problemstellung etwas angepasst. Vorteil dieser Technik: man braucht sich um die Feldnamen von Parameter und Select-Options nicht zu kümmern - einfach in neuen Report kopieren und fertig. Vielleicht kann's der eine oder andere ja gebrauchen.

mfg dele

Hier das Coding:

REPORT zbcxtest.

DATA: screen_values(01) TYPE c VALUE 'G'.
DATA: itrsp LIKE STANDARD TABLE OF rsparams.

PARAMETERS: p_times(05) TYPE n DEFAULT '10'.
PARAMETERS: p_write(30) TYPE c DEFAULT 'Hello World'.

INITIALIZATION.

IMPORT screen_values itrsp FROM MEMORY ID sy-repid.

AT SELECTION-SCREEN OUTPUT.

IF screen_values EQ 'G'.
PERFORM get_screen_values TABLES itrsp.
ENDIF.

IF screen_values EQ 'S'.
PERFORM set_screen_values TABLES itrsp.
ENDIF.

CLEAR screen_values.

START-OF-SELECTION.

screen_values = 'S'.
EXPORT screen_values itrsp TO MEMORY ID sy-repid.
DO p_times TIMES. WRITE: /01 p_write. ENDDO.

*---------------------------------------------------------------------*
* FORM get_screen_values *
*---------------------------------------------------------------------*
FORM get_screen_values TABLES f_itrsp STRUCTURE rsparams.

CALL FUNCTION 'RS_REFRESH_FROM_SELECTOPTIONS'
EXPORTING
curr_report = sy-cprog
TABLES
selection_table = f_itrsp
EXCEPTIONS
not_found = 1
no_report = 2
OTHERS = 3.

ENDFORM.

*---------------------------------------------------------------------*
* FORM set_screen_values *
*---------------------------------------------------------------------*
FORM set_screen_values TABLES f_itrsp STRUCTURE rsparams.

FIELD-SYMBOLS: <fs01>, <fs02>.
FIELD-SYMBOLS: <table> TYPE table.
DATA: x-str01(255) TYPE c.

SORT f_itrsp
BY selname kind ASCENDING
sign DESCENDING
option low ASCENDING.

ASSIGN (f_itrsp-selname) TO <fs01>.
LOOP AT f_itrsp.
UNASSIGN <fs01>.
* * Parameter or Select-Option
IF f_itrsp-kind EQ 'P'.
* * It's a parameter
ASSIGN (f_itrsp-selname) TO <fs01>.
CHECK <fs01> IS ASSIGNED.
MOVE f_itrsp-low TO <fs01>.
CONTINUE.
ENDIF.
* * It's a select-options
ASSIGN (f_itrsp-selname) TO <fs01>.
CHECK <fs01> IS ASSIGNED.
MOVE f_itrsp-selname TO x-str01.
REPLACE ' ' WITH '[]' INTO x-str01.
ASSIGN (x-str01) TO <table>.
CHECK <table> IS ASSIGNED.
IF f_itrsp-sign IS INITIAL.
* * no active select-options
REFRESH <table>.
CONTINUE.
ENDIF.
* * Refresh select-options table the first time
AT NEW selname.
* * no active select-options
REFRESH <table>.
ENDAT.
* * SIGN
MOVE f_itrsp-selname TO x-str01.
REPLACE ' ' WITH '-SIGN' INTO x-str01.
ASSIGN (x-str01) TO <fs02>.
<fs02> = f_itrsp-sign.
* * OPTION
MOVE f_itrsp-selname TO x-str01.
REPLACE ' ' WITH '-OPTION' INTO x-str01.
ASSIGN (x-str01) TO <fs02>.
<fs02> = f_itrsp-option.
* * LOW
MOVE f_itrsp-selname TO x-str01.
REPLACE ' ' WITH '-LOW' INTO x-str01.
ASSIGN (x-str01) TO <fs02>.
<fs02> = f_itrsp-low.
* * HIGH
MOVE f_itrsp-selname TO x-str01.
REPLACE ' ' WITH '-HIGH' INTO x-str01.
ASSIGN (x-str01) TO <fs02>.
<fs02> = f_itrsp-high.
* * COLLECT
COLLECT <fs01> INTO <table>.
ENDLOOP.

ENDFORM.

Re: Selection Screen - Eingaben löschen nach Rückkehr aus Li

Beitrag von Alexander D. (Expert / 682 / 30 / 84 ) »
falls jemand so wie ich bei der Suche im Internet bei dieser Frage landen sollte, für das Problem gibt es noch eine Lösung sehr kurze Lösung, gefunden auf dieser Seite hier:
http://toomuchabap.blogspot.de/2011/07/ ... creen.html

Code: Alles auswählen.

After the report execution when user press 'Back' button the selection-screen is displayed with the values entered in first place. If you want the selection-screen to be all clear then add following lines of code at the end of END-OF-SELECTION event.

FIELD-SYMBOLS : <fs>  .
ASSIGN ('(RSDBRUNT)MEMKEY-INT_MODE') TO <fs> .
IF sy-subrc = 0 .
  <FS> = '01' .
ENDIF. 
schöne Grüße
Alexander

ECC 6.0 EHP 7

Seite 1 von 1

Vergleichbare Themen

7
Antw.
3975
Views
Save Button bei Selection Screen löschen
von ManMan » 27.06.2017 17:14 • Verfasst in ABAP® für Anfänger
3
Antw.
3979
Views
Screen->Liste->Screen und dann wieder Liste???
von dimes » 19.07.2007 15:19 • Verfasst in Dialogprogrammierung
1
Antw.
2219
Views
selection screen
von anki_86 » 13.06.2007 07:30 • Verfasst in ABAP® für Anfänger
7
Antw.
15330
Views
Selection Screen
von cschmoel » 20.08.2012 12:53 • Verfasst in ABAP® für Anfänger
1
Antw.
652
Views
At Selection-Screen
von L0w-RiDer » 22.08.2019 15:42 • Verfasst in ABAP® für Anfänger

Aktuelle Forenbeiträge

Dialog-Container mit Toolbar/Status
vor 13 Stunden von DeathAndPain gelöst 22 / 3170
Daten an Tabelle binden
vor 18 Stunden von Lukas Sanders 2 / 1039
Zeilenumbrüche ersetzen
vor 2 Tagen von ralf.wenzel 6 / 614

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

Dialog-Container mit Toolbar/Status
vor 13 Stunden von DeathAndPain gelöst 22 / 3170
Daten an Tabelle binden
vor 18 Stunden von Lukas Sanders 2 / 1039
Zeilenumbrüche ersetzen
vor 2 Tagen von ralf.wenzel 6 / 614

Unbeantwortete Forenbeiträge

aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2611
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9200