2 kleine fragen

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

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

2 kleine fragen

Beitrag von dkast (Specialist / 117 / 7 / 1 ) »
Hallo,
ich stehe gerade etwas auf dem Schlauch.

Ich habe einen Selection-Screen indem ich Felder nicht eingebebereit mache.

Code: Alles auswählen.

  LOOP AT SCREEN.
    IF screen-name = 'P_DEV' OR screen-name = 'P_DIALOG'.
      screen-input = 0.
      MODIFY SCREEN.
    ENDIF.
  ENDLOOP.
Wenn ich aber Daten in meinen Screen eingebe und diese mit Enter bestätige sind die beiden Felder plötzlich wieder eingabebereit. Aber wieso und wie kann ich das verhindern?

Die 2. Frage wäre folgende:

Ausganssituation ist ein Report der nur einen Selection Screen hat und dann in ein anderes Programm submited.

Ich überprüfe in meinem Report die Eingabe und gebe eine Error Message aus und möchte eigentlich in der eingabe Maske bleiben. Also den Submit/"Dump" verhindern.
Aber egal was ich nach der Error Messege versuche (oder wenn ich den Messagetype in S oder I usw ändere) um auf meinen Screen 0 bzw. 1000 zu bleiben, nichts klappt.

Hat jemand hierfür eine Idee.

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


Re: 2 kleine fragen

Beitrag von ralf.wenzel (Top Expert / 3935 / 200 / 281 ) »
1. Du führst den LOOP AT SCREEN wahrscheinlich zum Zeitpunkt INITIALIZATION aus, richtig wäre AT SELEKTION-SCREEN OUTPUT. Ersterer wird nur einmal ausgeführt, Letzterer zu jedem PAI.

2. Zu welchem Reporting-Zeitpunkt wirfst du die MESSAGE?


Ralf

Folgende Benutzer bedankten sich beim Autor ralf.wenzel für den Beitrag:
dkast

Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: 2 kleine fragen

Beitrag von dkast (Specialist / 117 / 7 / 1 ) »
ralf.wenzel hat geschrieben:1. Du führst den LOOP AT SCREEN wahrscheinlich zum Zeitpunkt INITIALIZATION aus, richtig wäre AT SELEKTION-SCREEN OUTPUT. Ersterer wird nur einmal ausgeführt, Letzterer zu jedem PAI.

2. Zu welchem Reporting-Zeitpunkt wirfst du die MESSAGE?


Ralf
1. Frage Top danke :up:

2. Die 2. frage hat sich gerade gelöst. Ich hab den perfrom check_eingabe erst nach Start-of-selection gemacht und nciht bei At-selectionscreen.

Re: 2 kleine fragen

Beitrag von DeathAndPain (Top Expert / 1952 / 259 / 413 ) »
screen-input = 0.
Schöner wäre screen-input = '0', da es sich beim Feld screen-input um ein Characterfeld handelt. So hast Du eine Datentypkonvertierung drin, die bei einer Konstanten nicht sein muss.

Re: 2 kleine fragen

Beitrag von ralf.wenzel (Top Expert / 3935 / 200 / 281 ) »
DeathAndPain hat geschrieben:
screen-input = 0.
Schöner wäre screen-input = '0', da es sich beim Feld screen-input um ein Characterfeld handelt. So hast Du eine Datentypkonvertierung drin, die bei einer Konstanten nicht sein muss.
Ich mache es noch anders - ich definiere mir die Konstanten ON / OFF. ;) Die Welt ist bunt.


Ralf *bzw. habe ich gemacht, konventionelle Selektionsbildverarbeitung ist bei mir ziemlich lange her....
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: 2 kleine fragen

Beitrag von DeathAndPain (Top Expert / 1952 / 259 / 413 ) »
Jedem das Seine. ich bin kein Fan von Konstanten für das Offensichtliche - und schreibe daher auch 'X' anstelle von abap_true. Ist kürzer und (mindestens) ebenso gut lesbar.

Allerdings bin ich da auch wieder inkonsequent und schreibe SPACE anstelle von ' '. Das hat noch historische Gründe: Variablen wertet ABAP schneller aus als Literale, und in alten Zeiten hat das noch einen Unterschied gemacht (auch wenn der wohl schon damals nicht groß war). Ich finde ' ' aber auch nicht sonderlich gut lesbar - im Gegensatz zu 'X'.

Folgende Benutzer bedankten sich beim Autor DeathAndPain für den Beitrag:
Daniel


Re: 2 kleine fragen

Beitrag von ralf.wenzel (Top Expert / 3935 / 200 / 281 ) »
DeathAndPain hat geschrieben:... schreibe daher auch 'X' anstelle von abap_true. Ist kürzer und (mindestens) ebenso gut lesbar.
*autsch* Wenn ich ABAP_TRUE und ABAP_FALSE verwende, teile ich dem Leser gleich mit "es geht nicht um das X als X, sondern ja/nein". Es gibt also zwei definierte Zustände (eigentlich sogar drei, ich gehöre zu denen, die ABAP_UNDEFINED explizit verwenden), das hilft durchaus beim Verstehen.


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: 2 kleine fragen

Beitrag von DeathAndPain (Top Expert / 1952 / 259 / 413 ) »
*autsch* Wenn ich ABAP_TRUE und ABAP_FALSE verwende, teile ich dem Leser gleich mit "es geht nicht um das X als X
Der Fall, bei dem es in ABAP bei einem Literal 'X' um das X gegangen wäre, ist mir noch nicht untergekommen. Von daher behaupte ich, das weiß auch so jeder, der halbwegs ABAP kann, was damit gemeint ist.
Es gibt also zwei definierte Zustände (eigentlich sogar drei, ich gehöre zu denen, die ABAP_UNDEFINED explizit verwenden), das hilft durchaus beim Verstehen.
Das ist viel eher etwas, was für den Leser verwirrend ist, denn ABAP_UNDEFINED kennt kein Schwein, und bei den üblichen Objekten, bei denen 'X' oder SPACE zum Einsatz kommen (Checkboxen, Radiobuttons, generell alles, was vom Typ BOOLEAN_FLG ist), gibt es den Wert ABAP_UNDEFINED nicht.

Von der Sache her halte ich es nicht für verkehrt, anzudeuten, dass ein Wert nicht definiert ist. Dann würde ich mich aber lieber auf selbstdefinierte Konstanten stützen (dann weiß man, dass Du da was Eigenes veranstaltest) als die allseits gewohnten Werte ABAP_TRUE und ABAP_FALSE mit etwas zu mischen, was da niemand kennt und erwartet. Damit führst Du Deine Leser viel eher aufs Glatteis, als wenn ich meine Checkbox auf 'X' prüfe.

Folgende Benutzer bedankten sich beim Autor DeathAndPain für den Beitrag:
Daniel


Re: 2 kleine fragen

Beitrag von ewx (Top Expert / 4849 / 313 / 642 ) »
DeathAndPain hat geschrieben:
*autsch* Wenn ich ABAP_TRUE und ABAP_FALSE verwende, teile ich dem Leser gleich mit "es geht nicht um das X als X
Der Fall, bei dem es in ABAP bei einem Literal 'X' um das X gegangen wäre, ist mir noch nicht untergekommen. Von daher behaupte ich, das weiß auch so jeder, der halbwegs ABAP kann, was damit gemeint ist.
Das Problem von Literalen ist, dass sie eben keine Semantik haben (ogottogott, ich hoffe, dass ich da die richtigen Fremdworte durcheinander geworfen habe...).
Wenn du nach "'X'" suchst, dann findest du eben nicht nur Codestellen, bei denen TRUE gemeint ist, sondern es gibt auch
- Message-Type X => Abbruch
- Vertriebsbelegtyp X => Handling Unit
Und sicherlich noch mehr, wenn man ein bisschen sucht.
Das ist bei "X" sicherlich nicht so "schlimm" wie bei anderen Literalen, kann aber auch zur Falle werden.

Folgende Benutzer bedankten sich beim Autor ewx für den Beitrag:
ralf.wenzel


Re: 2 kleine fragen

Beitrag von ewx (Top Expert / 4849 / 313 / 642 ) »
DeathAndPain hat geschrieben:Das ist viel eher etwas, was für den Leser verwirrend ist, denn ABAP_UNDEFINED kennt kein Schwein,
so weit würde ich nicht gehen... unüblich vielleicht... :)
DeathAndPain hat geschrieben:und bei den üblichen Objekten, bei denen 'X' oder SPACE zum Einsatz kommen (Checkboxen, Radiobuttons, generell alles, was vom Typ BOOLEAN_FLG ist), gibt es den Wert ABAP_UNDEFINED nicht.
Es ist sogar noch schlimmer. Bei BOOLEAN_FLG hast du Recht.
Die sehe ich aber heute das erste Mal... :]
BOOLEAN ist nämlich folgendermaßen definiert (screenshot)
und das macht es noch verwirrender...

Re: 2 kleine fragen

Beitrag von DeathAndPain (Top Expert / 1952 / 259 / 413 ) »
ewx hat geschrieben:Das Problem von Literalen ist, dass sie eben keine Semantik haben (ogottogott, ich hoffe, dass ich da die richtigen Fremdworte durcheinander geworfen habe...).
Wenn du nach "'X'" suchst, dann findest du eben nicht nur Codestellen, bei denen TRUE gemeint ist, sondern es gibt auch
- Message-Type X => Abbruch
- Vertriebsbelegtyp X => Handling Unit
Und sicherlich noch mehr, wenn man ein bisschen sucht.
Das ist bei "X" sicherlich nicht so "schlimm" wie bei anderen Literalen, kann aber auch zur Falle werden.
Na ja, also nach 'X' suche ich eigentlich nie. Und wie oft suchst Du in einem Programmcode nach "abap_true"? ;-)

Aber den Spaß müsste man sich eigentlich mal machen und bei einem letalen Fehler so eine Nachricht einbauen:

Code: Alles auswählen.

MESSAGE ID 'SAPABDEMOS' TYPE abap_true NUMBER '014'.
Und es dann irgendwie so deichseln, dass Ralf die Codestelle findet. :-D
Es ist sogar noch schlimmer. Bei BOOLEAN_FLG hast du Recht.
Die sehe ich aber heute das erste Mal... :]
BOOLEAN ist nämlich folgendermaßen definiert (screenshot)
und das macht es noch verwirrender...
Deswegen arbeite ich damit auch nicht (und auch niemand, den ich kenne). Stattdessen halt BOOLEAN_FLG (oder auch BOOLE_D, dem Datenelement zur Domäne BOOLE). Die halten sich an die in ABAP üblichen Konventionen.

Re: 2 kleine fragen

Beitrag von ralf.wenzel (Top Expert / 3935 / 200 / 281 ) »
Du hast es nicht verstanden, sorry. Bei MESSAGE ist das X kein Flag, sondern eine Variante aus E, X, A, S und I. Das Thema waren hier aber Flags mit AN/AUS-Logik. Und wenn ich nach X in einem Programm suche, suche ich wirklich ein X, das ich nicht finde in einer Masse von Flags, die den Zustand „an“ haben können, was zufällig auch als „enthält ein X“ definiert ist. Das macht ABAP_TRUE nützlich.

ABAP_UNDEFINED nutze ich dann, wenn ich (was sehr selten ist) unterscheiden möchte zwischen „nicht gefüllt“ und „explizit mit NEIN befüllt“. Dann ist das aber auch entsprechend erklärt, ich bin ja weder doof noch weltfremd. Mir ist durchaus klar, dass viele das nicht kennen.


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: 2 kleine fragen

Beitrag von ewx (Top Expert / 4849 / 313 / 642 ) »
DeathAndPain hat geschrieben: Na ja, also nach 'X' suche ich eigentlich nie. Und wie oft suchst Du in einem Programmcode nach "abap_true"? ;-)
Es geht ja nicht ums Suchen, sondern darum, dass deutlich ist, um was es sich bei dem X handelt.
Nach Literalen kannst du halt nur suchen, aber auf Konstanten wie ABAP_TRUE oder C_VBTYP_X oder C_MESSAGE_TYPE_X kannst du einen Verwendungsnachweis ausführen.
Und in großen Programmierungen die drei Aufrufstellen zu finden, in denen die Handling-Unit gemeint ist, kann durchaus eine Herausforderung werden.
Gerade wenn noch mit Unterroutinen gearbeitet wird. Dann kannst du es nämlich nicht direkt erkennen:

Code: Alles auswählen.

PERFORM check_status USING 'X' ls_data-objnr.
DeathAndPain hat geschrieben: Aber den Spaß müsste man sich eigentlich mal machen und bei einem letalen Fehler so eine Nachricht einbauen:

Code: Alles auswählen.

MESSAGE ID 'SAPABDEMOS' TYPE abap_true NUMBER '014'.
Und es dann irgendwie so deichseln, dass Ralf die Codestelle findet. :-D
Bin dabei ;)
Wäre dann aber für 025(SABAP_DEMOS_CR)
DeathAndPain hat geschrieben:
Es ist sogar noch schlimmer. Bei BOOLEAN_FLG hast du Recht.
Die sehe ich aber heute das erste Mal... :]
BOOLEAN ist nämlich folgendermaßen definiert (screenshot)
und das macht es noch verwirrender...
Deswegen arbeite ich damit auch nicht (und auch niemand, den ich kenne). Stattdessen halt BOOLEAN_FLG (oder auch BOOLE_D, dem Datenelement zur Domäne BOOLE). Die halten sich an die in ABAP üblichen Konventionen.
Das werde ich mir dann auch dringend angewöhnen. Und sei es nur für den Fall, dass wir uns mal kennen lernen sollten und du nicht nachträglich als Lügner dastehst... :D

Re: 2 kleine fragen

Beitrag von ralf.wenzel (Top Expert / 3935 / 200 / 281 ) »
Klar, versteckt das MESSAGE doch noch in einem Makro....

Ralf *immer auf die kleinen dicken, die nicht fliegen können....
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: 2 kleine fragen

Beitrag von ewx (Top Expert / 4849 / 313 / 642 ) »
ralf.wenzel hat geschrieben:Klar, versteckt das MESSAGE doch noch in einem Makro....
...mit dynamischem Aufruf...
...auf das Offensichtliche kommt man selber immer nicht... 8)

Vergleichbare Themen

2
Antw.
3178
Views
Fragen zum ALV
von ABAP_User » 10.04.2012 19:41 • Verfasst in ABAP® für Anfänger
2
Antw.
631
Views
GUI Fragen
von il.ost » 09.07.2019 13:23 • Verfasst in ABAP® für Anfänger
2
Antw.
2442
Views
Diverse kl. Fragen
von defsteph » 17.11.2005 10:23 • Verfasst in ABAP® für Anfänger
10
Antw.
6650
Views
Dynpro Fragen
von stony007_de » 21.12.2014 10:10 • Verfasst in ABAP® für Anfänger

Ü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

Regex in where
vor 15 Stunden von tar 8 / 357
Daten an Tabelle binden
Gestern von Bright4.5 3 / 1628
Programm anlegen mit Vorlage
vor 2 Tagen von DeathAndPain 2 / 275
IT0024 Qualifikationen CP-ID
vor 2 Tagen von DeathAndPain 2 / 518

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

Regex in where
vor 15 Stunden von tar 8 / 357
Daten an Tabelle binden
Gestern von Bright4.5 3 / 1628
Programm anlegen mit Vorlage
vor 2 Tagen von DeathAndPain 2 / 275
IT0024 Qualifikationen CP-ID
vor 2 Tagen von DeathAndPain 2 / 518

Unbeantwortete Forenbeiträge

BUSOBJEKT zu CMIS PHIO ermitteln
vor 2 Tagen von snooga87 1 / 212
aRFC im OO-Kontext
letzen Monat von ralf.wenzel 1 / 3394
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9945