"WRITE" wird übersprungen.

Getting started ... Alles für einen gelungenen Start.
9 Beiträge • Seite 1 von 1
9 Beiträge Seite 1 von 1

"WRITE" wird übersprungen.

Beitrag von Django90 (ForumUser / 27 / 15 / 0 ) »
Hallo Liebes ABAP Forum,

Mein Problem ist, dass mein "WRITE: /'.......'." Befehl übersprungen wird,
ich habe mehrere Wege versucht dies zu lösen, komme jedoch nicht drauf.

Bitte habt gnade mit mir, ich lerne erst seit einer Woche ABAP. :)

Hier der Quellcode:

PARAMETER: gv_sys TYPE i.
DATA: gv_eingabe TYPE i.

WRITE:/'Bitte geben sie eine Zahl für das entsprechende System Feld ein: ',gv_eingabe,
/'1 = sy-mandt',
/'2 = sy-uname',
/'3 = sy-langu',
/'4 = sy-datum',
/'5 = sy-uzeit',
/'6 = sy-tcode',
/'7 = sy-repid',
/'8 = sy-index',
/'9 = sy-subrc'.

MOVE gv_eingabe TO gv_sys.

IF gv_sys = 1.
WRITE sy-mandt.
ENDIF.
IF gv_sys = 2.
WRITE sy-uname.
ENDIF.
IF gv_sys = 3.
WRITE sy-langu.
ENDIF.
IF gv_sys = 4.
WRITE sy-datum.
ENDIF.
IF gv_sys = 5.
WRITE sy-uzeit.
ENDIF.
IF gv_sys = 6.
WRITE sy-tcode.
ENDIF.
IF gv_sys = 7.
WRITE sy-repid.
ENDIF.
IF gv_sys = 8.
WRITE sy-index.
ENDIF.
IF gv_sys = 9.
WRITE sy-subrc.
ENDIF.


Vielen Dank für ihre Antworten.

PS: Wenn ich das Programm ausführe, kommt immer zuerst die Eingabe in Verbindung mit dem PARAMETER WERT.
gv_sys ____

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


Re: "WRITE" wird übersprungen.

Beitrag von DeathAndPain (Top Expert / 1961 / 261 / 415 ) »
Na ja, Du schreibst erst:

PARAMETER: gv_sys TYPE i.

und später:

MOVE gv_eingabe TO gv_sys.

Was denkst Du, was mit dem vom Benutzer in den Parameter gv_sys eingegebenen Wert bei diesem MOVE passiert? ;-)

gv_eingabe deklarierst Du per DATA ohne Defaultwert, damit ist es zunächst mal 0. Dann gibst Du es mit einem (sinnlosen) Write aus, was nichts daran ändert, dass es 0 ist.

Du solltest Dir übrigens angewöhnen, mit dem Debugger zu arbeiten (Breakpoints setzen oder gleich von Anfang an mit Debugger ausführen). Dann wirst Du solche Fragen nicht mehr stellen, weil Du selbst sehen wirst, was im Programm passiert.

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


Re: "WRITE" wird übersprungen.

Beitrag von Django90 (ForumUser / 27 / 15 / 0 ) »
Wie wurdest du den Quellcode deiner Meinung nach verbessern?

Mfg

Re: "WRITE" wird übersprungen.

Beitrag von DeathAndPain (Top Expert / 1961 / 261 / 415 ) »
Die Variable gv_eingabe ersatzlos aus dem Programm entfernen, die dient keinem erkennbaren Zweck.

Da WRITE nur bei Ergebnisbildern funktioniert, nicht aber beim Selektionsbild, den ersten Write gleichfalls entfernen und bei Bedarf durch Zeilen der Form

SELECTION-SCREEN COMMENT 1(80) TEXT-K01. SKIP.
SELECTION-SCREEN COMMENT 1(80) TEXT-K02. SKIP.
SELECTION-SCREEN COMMENT 1(80) TEXT-K03. SKIP.
...

ersetzen, wobei Du die Textzeilen K01, K02, ... dann bei den Textsymbolen des Reports definierst. (in der Quellcodeansicht der SE38 Menü Springen -> Textelemente)

Der MOVE fliegt auch ersatzlos raus, und dann funktioniert das.

Am besten, Du schreibst vor dem IF-Befehl noch den Befehl

START-OF-SELECTION.

Der ist zwar in vielen Fällen nicht obligatorisch, doch manchmal führt sein Fehlen doch zu seltsamen Effekten, und auch optisch trennt er den Selektionsbildbereich von dem Code, der bei Programmausführung abgearbeitet wird.

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


Re: "WRITE" wird übersprungen.

Beitrag von DeathAndPain (Top Expert / 1961 / 261 / 415 ) »
Ach ja, und die endlose IF-Kette würde ich durch einen CASE-Befehl ersetzen.

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


Re: "WRITE" wird übersprungen.

Beitrag von Django90 (ForumUser / 27 / 15 / 0 ) »
Ich habe mein Quellcode jetzt so verändert:

PARAMETER gv_sys TYPE i.

SELECTION-SCREEN COMMENT 1(80) text-001. SKIP.
SELECTION-SCREEN COMMENT 2(80) text-002. SKIP.
SELECTION-SCREEN COMMENT 3(80) text-003. SKIP.
SELECTION-SCREEN COMMENT 4(80) text-004. SKIP.
SELECTION-SCREEN COMMENT 5(80) text-005. SKIP.
SELECTION-SCREEN COMMENT 6(80) text-006. SKIP.
SELECTION-SCREEN COMMENT 7(80) text-007. SKIP.
SELECTION-SCREEN COMMENT 8(80) text-008. SKIP.
SELECTION-SCREEN COMMENT 9(80) text-009. SKIP.

START-OF-SELECTION.

CASE sy-mandt.
WHEN 1.
WRITE sy-mandt.
WHEN 2.
WRITE sy-uname.
WHEN 3.
WRITE sy-langu.
WHEN 4.
WRITE sy-datum.
WHEN 5.
WRITE sy-uzeit.
WHEN 6.
WRITE sy-tcode.
WHEN 7.
WRITE sy-repid.
WHEN 8.
WRITE sy-index.
WHEN 9.
WRITE sy-subrc.
ENDCASE.


Wenn ich jetzt das Programm starte, bekomme ich eine Fehlermeldung. "Fehler beim Generieren des Selektionsbilds "1000" des Reports "!0F_..."
In jeder Text Zeile ist die entsprechende Information.
Bsp: 1. sy-mandt

Ich brauch ja auch noch irgendwie eine Input Eingabe bei den SELECTION-SCREEN COMMENT, damit ich die Zahl der CASE Schleife zuordnen kann.

Re: "WRITE" wird übersprungen.

Beitrag von DeathAndPain (Top Expert / 1961 / 261 / 415 ) »
Wenn ich jetzt das Programm starte, bekomme ich eine Fehlermeldung. "Fehler beim Generieren des Selektionsbilds "1000" des Reports "!0F_..."
Die kriegst Du weg, wenn Du nach dem PARAMETER-Befehl auch noch einen SKIP. einfügst. SAP macht vor SELECTION-SCREEN COMMENT von sich aus keinen Zeilenumbruch und versucht sonst, den Kommentartext der nächsten Zeile über Deinen bereits auf den Bildschirm ausgegebenen Parameter zu klatschen.

Aus demselben Grund habe ich auch hinter jedem SELECTION-SCREEN COMMENT einen SKIP empfohlen.
Ich brauch ja auch noch irgendwie eine Input Eingabe bei den SELECTION-SCREEN COMMENT, damit ich die Zahl der CASE Schleife zuordnen kann.
Seufz. Dazu ist der PARAMETER-Befehl da, wobei diese Schreibung veraltet ist und die SAP empfiehlt, stattdessen PARAMETERS zu schreiben (was aber keinen Einfluss auf die Funktionsweise hat). Oder wozu hattest Du den PARAMETER-Befehl in Deinen Quellcode geschrieben?

Dementsprechend solltest Du den eingegebenen Parameter auch nutzen und anstelle des offensichtlich sinnlosen

CASE sy-mandt.

lieber

CASE gv_sys.

schreiben.

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


Re: "WRITE" wird übersprungen.

Beitrag von ewx (Top Expert / 4854 / 313 / 644 ) »
Django90 hat geschrieben: SELECTION-SCREEN COMMENT 1(80) text-001. SKIP.

Code: Alles auswählen.

SELECTION-SCREEN COMMENT /1(80) text-001.
                         ^

Folgende Benutzer bedankten sich beim Autor ewx für den Beitrag:
Django90


Re: "WRITE" wird übersprungen.

Beitrag von Django90 (ForumUser / 27 / 15 / 0 ) »
Vielen Dank!

Hat alles nach eurer Hilfestellung super geklappt. :)

Seite 1 von 1

Vergleichbare Themen

2
Antw.
407
Views
Die Elseif-Anweisung wird übersprungen
von TurgutOz » 16.09.2020 17:50 • Verfasst in ABAP® für Anfänger
7
Antw.
4761
Views
write ... under
von Gast » 19.04.2005 15:40 • Verfasst in ABAP® für Anfänger
5
Antw.
2058
Views
WRITE zebra
von hmaxi96 » 25.01.2016 14:34 • Verfasst in ABAP® für Anfänger
2
Antw.
10064
Views
Write Uhrzeit
von ABAP_BEGINNER » 04.06.2010 14:50 • Verfasst in ABAP® für Anfänger
7
Antw.
20548
Views
select und write
von eddi89 » 11.08.2009 19:40 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


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

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.

Unbeantwortete Forenbeiträge

SD_PRINT_TERMS_OF_PAYMENT
vor 3 Wochen von Manfred K. 1 / 3218
BUSOBJEKT zu CMIS PHIO ermitteln
vor 5 Wochen von snooga87 1 / 5027
aRFC im OO-Kontext
letzen Monat von ralf.wenzel 1 / 6075