Abfangen falscher Usereingaben

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Getting started ... Alles für einen gelungenen Start.
17 Beiträge • Seite 1 von 2 (current) Nächste
17 Beiträge Seite 1 von 2 (current) Nächste

Abfangen falscher Usereingaben

Beitrag von Franky ( / / 0 / 3 ) »
Hallo,
wie kann ich einen falschen Parameter abfangen? Der User kann das Programm solange nicht ausführen, bis der Parameter nicht den definierten Vorgaben entspricht.
Gibt er einen falschen Wert ein, so erscheint per Message ein entsprechender Text, aber der Report wird dan trotzdem ausgeführt.
Die Message Ausgabe stimmt, aber das Verhalten danach nicht.
Das Ganze findet in 'at selection screen' statt.
Danke für Anregungen.

Frank

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


Hat sich erledigt

Beitrag von Franky ( / / 0 / 3 ) »
Hat sich erledigt.
:P

Re: Hat sich erledigt

Beitrag von Gast ( / / 0 / 3 ) »
Franky hat geschrieben:Hat sich erledigt.
:P
D.h., Du hast inzwischen die F1-Hilfe zu MESSAGE gefunden?

Beitrag von robin1at (Specialist / 190 / 0 / 0 ) »
Hallo Franky!

Ich habe das selbe Problem.

Kannst Du mir bitte helfen?

Wie hast Du das gelöst?

Danke

Robin

Beitrag von DeathGuardian (Expert / 759 / 0 / 3 ) »

Code: Alles auswählen.

AT SELECTION-SCREEN.
  IF dein_feld <> irgendeinem_wert .
    MESSAGE 'NEE darfst net!' TYPE 'E'.
  ENDIF.
E-Message sorg an dieser Stelle dafür, das das Programm nicht zu START-OF-SELECTION kommt und deshalb auch nichts macht.

Beitrag von Gast ( / / 0 / 3 ) »
Hallo Death!

Danke für Deine Hilfe.

Die Abfrage habe ich auch so.

Nur was übergebe ich da für einen Wert bei "irgendeinem_wert"?

Danke

Robin

Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
Hallo Robin,

wahrscheinlich doch wohl ein Wert, den Du als gültig erachtest.
Denn schließlich soll das Programm ja mit einer Fehlermeldung abbrechen, wenn der Wert von Dir/Deinem Programm als ungültig erkannt wird.
Was Du genau prüfst, hängt von Deiner Vorgabe ab. Das könnte ein Datumsbereich sein, ein Wert aus einer Tabelle, eine Liste einzelner Werte, etc.
Gruß
Ereglam


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

Beitrag von robin1at (Specialist / 190 / 0 / 0 ) »
Hallo Ereglam!

Habe folgende Abfrage.

Code: Alles auswählen.

  IF lfa1-land1 <> so_land.
    MESSAGE e003(/sapdmc/lsmw_glo_030).
*   Bitte tragen Sie einen gültigen Wert ein.
  ENDIF.

Es kommt dann die Message, egal ob der Wert in der Select Option stimmt oder nicht.

Danke

Robin

Beitrag von DeathGuardian (Expert / 759 / 0 / 3 ) »
robin1at hat geschrieben:Hallo Ereglam!

Habe folgende Abfrage.

Code: Alles auswählen.

  IF lfa1-land1 <> so_land.
    MESSAGE e003(/sapdmc/lsmw_glo_030).
*   Bitte tragen Sie einen gültigen Wert ein.
  ENDIF.

Es kommt dann die Message, egal ob der Wert in der Select Option stimmt oder nicht.

Danke

Robin
Wenn du das auf eine Select-option/ranges machst dann sollstest das mit "IN" machen.

Code: Alles auswählen.

* IF lfa1-land1 <> so_land. "abfrage auf Kopf von so 
  IF lfa1-land1 IN so_land. "abfrage auf tabelle von so 
    MESSAGE e003(/sapdmc/lsmw_glo_030).
*   Bitte tragen Sie einen gültigen Wert ein.
  ENDIF.

Beitrag von JHM (Top Expert / 1197 / 1 / 197 ) »
Eine Select-Option ist eine Tabelle.
Wenn du mit <> Abfragst wird diese immer falsch sein, da du zum einen nur die Kopfzeile vergleichst und zum anderen versuchst ein Feld mit einer Strucktur zu vergleichen.

Der Operator muss IN sein.

Code: Alles auswählen.

  IF lfa1-land1 IN so_land.
    MESSAGE e003(/sapdmc/lsmw_glo_030).
  ENDIF.
Gruß Hendrik

Beitrag von robin1at (Specialist / 190 / 0 / 0 ) »
Hallo Death, hallo Hendrik!

Ja, habe ich auch schon versucht.

Da bricht er mir aber auch bei richtigen Eingaben ab.

So müßte das Coding lauten.

Code: Alles auswählen.

  IF not lfa1-land1 in so_land.
    MESSAGE e003(/sapdmc/lsmw_glo_030).
*   Bitte tragen Sie einen gültigen Wert ein.
  ENDIF.
Wenn der Wert in so_land nicht in der Tabelle lfa1-land1 ist, soll abgebrochen werden.

Hoffe Euch fällt noch was ein.

Danke

Robin

Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
Hallo Robin,

Du prüft, ob der Inhalt des programmlokalen Feldes lfa1-land1 in Deiner Range-Tabelle enthalten ist. Was Du benutzen musst, ist eine Selektion auf die LFA1.
Gruß
Ereglam


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

Beitrag von robin1at (Specialist / 190 / 0 / 0 ) »
Hallo Ereglam!

Die Selektion mache zum Zeitpunkt Start of Selection.

Heist das, daß ich zum Zeitpunkt At Selection Screnn, nochmal die selbe Abfrage machen muß?

Danke

Robin

Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
Hallo Robin,

Du musst bitte beachten, dass Du zum Zeitpunkt AT SELECTION-SCREEN üblicherweise prüfen willst, ob der Anwender sinnvolle Daten eingegeben hat.
Das macht in diesem Fall nicht so viel SInn, weil der Anwender kein Ergebnis erhalten sollte, wenn er kein Land eingibt, zu dem es Daten gibt.
Also, macht es Sinn, bereits beim Selektionsbild den User auf falsche Eingaben hinzuweisen? Nur dann, wenn dadurch eine massive Belastung des Systems vermieden werden kann.
Nun die Frage: kann das hier passieren?

Eine andere Sache ist es, wenn er z.B. ein Datum als Einzelwert eingeben soll. Dann macht es möglicherweise schon Sinn, ihn auf eine Fehler hinzuweisen.

Einen weiteren Sinn der Werteeinschränkung kann gegeben sein, wenn der Anwender nicht für alle Werte die Berechtigung hat. Hier fängts aber gerade bei Select-Options an, sehr kompliziert zu werden, wie man nun weiter vorgeht...

Durch Wertehilfen bietet SAP bereits eine gewisse Möglichkeit, auf bestimmte Werte einzuschränken.

PS:
Darf ich mal bitte fragen, was das für eine Aufgabe ist, die Du bearbeitest. Ist das eine Aufgabe im Rahmen einer Ausbildung?
Welche Vorkenntnisse hast Du bzgl. Programmierung?
Gruß
Ereglam


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

Beitrag von robin1at (Specialist / 190 / 0 / 0 ) »
Hallo Ereglam!

Nein, wenn der User keinen Wert angibt, soll alles angezeigt werden.

Jetzt ist es so. Gibt der User einen falschen Wert ein, kommt der ALV nur mit den Überschriften und ist leer. Was ja auch richtig ist.

Ich möchte anstatt daß der ALV angezeigt wird, nur eine Fehlemeldung kommt. Es sollte der ALV ohne Daten gar nicht angezeigt werden.

Hoffe, daß mein Problem jetzt klarer ist.

Danke

Robin

Vergleichbare Themen

6
Antw.
3218
Views
Falscher Insert?
von Beginner014 » 24.07.2014 10:33 • Verfasst in ABAP® für Anfänger
0
Antw.
1550
Views
0
Antw.
1116
Views
falscher returncode bei ws_upload
von dennsen » 06.06.2007 13:45 • Verfasst in ABAP® Core
3
Antw.
2213
Views
Falscher Lieferant bei Anlieferungen
von dimes » 15.10.2007 09:23 • Verfasst in Material Management & Produktionsplanung
1
Antw.
1885
Views
Falscher Mandant bei BSP Applukation
von chaos2oo2 » 11.07.2006 16:21 • Verfasst in Web-Dynpro, BSP + BHTML

Über diesen Beitrag


Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

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

Aktuelle Forenbeiträge

Zeilenumbrüche ersetzen
vor 19 Stunden von ralf.wenzel 6 / 168
Dialog-Container mit Toolbar/Status
Gestern von tar gelöst 19 / 2333
SAP Trial Version für SAP Fiori
vor 2 Tagen von tar 2 / 1547

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

Zeilenumbrüche ersetzen
vor 19 Stunden von ralf.wenzel 6 / 168
Dialog-Container mit Toolbar/Status
Gestern von tar gelöst 19 / 2333
SAP Trial Version für SAP Fiori
vor 2 Tagen von tar 2 / 1547

Unbeantwortete Forenbeiträge

Daten an Tabelle binden
vor 2 Tagen von Bright4.5 1 / 611
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2238
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8830